Closed fmagin closed 2 years ago
The first issue seems to be that the call() method in https://github.com/angr/claripy/blob/3c05b8ebb256842ff7fb4de14a2b268e948cc419/claripy/backends/__init__.py#L189-L199 does not enforce that args actually contain anything, but I that still leaves the question why it even gets called without any args
After wrapping a try catch around the first statement of the trace and printing the addresses with errors I got the following list:
failed_addrs = [0x10006b4c, 0x10006b4e, 0x1000a14f, 0x1000a3bf, 0x1000aac7, 0x1000ac81,0x1000ad5f ,0x1000bb05 ,0x1000c691, 0x1002f25e, 0x1002f260]
failed_blocks = [proj.factory.block(addr) for addr in failed_addrs]
for block in blocks:
block.pp()
print("")
0x10006b4c: mov dh, 4
0x10006b4e: adc bh, bh
0x10006b50: adc eax, 0x10036208
0x10006b55: pop edi
0x10006b56: ret
0x10006b4e: adc bh, bh
0x10006b50: adc eax, 0x10036208
0x10006b55: pop edi
0x10006b56: ret
0x1000a14f: adc bh, bh
0x1000a151: adc eax, 0x10036314
0x1000a156: pop esi
0x1000a157: ret
0x1000a3bf: adc bh, bh
0x1000a3c1: adc eax, 0x100361e0
0x1000a3c6: pop edi
0x1000a3c7: pop esi
0x1000a3c8: pop ebx
0x1000a3c9: leave
0x1000a3ca: ret
0x1000aac7: adc bh, bh
0x1000aac9: adc eax, 0x100361b4
0x1000aace: pop edi
0x1000aacf: pop esi
0x1000aad0: ret
0x1000ac81: adc bh, bh
0x1000ac83: salc
0x1000ac84: pop esi
0x1000ac85: ret
0x1000ad5f: adc bh, bh
0x1000ad61: adc eax, 0x10036320
0x1000ad66: pop ebp
0x1000ad67: ret
0x1000bb05: adc bh, bh
0x1000bb07: adc eax, 0x10036200
0x1000bb0c: pop esi
0x1000bb0d: ret
0x1000c691: adc bh, bh
0x1000c693: adc eax, 0x1003616c
0x1000c698: ret
So the obvious thing is that they all contain an adc bh, bh
instruction which in hindsight makes sense due to this section of the stack trace
/home/fmagin/gits/angr-dev/angr/angr/engines/vex/ccall.py in pc_actions_ADC(state, nbits, cc_dep1, cc_dep2, cc_ndep, platform)
324 zf = calc_zerobit(state, res)
325 sf = res[nbits - 1]
--> 326 of = ((arg_l ^ arg_r ^ -1) & (arg_l ^ res))[nbits-1]
327
328 return pc_make_rdata(data[platform]['size'], cf, pf, af, zf, sf, of, platform=platform)
I don't understand yet why exactly this is an issue but my guess is that because in operations.py
if filter_func: new_args = filter_func(new_args)
leads to new_args being empty after applying the filter function this leads to issues further down.
This issue has been marked as stale
because it has no recent activity. Please comment or add the pinned
tag to prevent this issue from being closed.
This issue has been closed due to inactivity.
npFoxitReaderPlugin.zip I am trying to generate a ROP chain in the attached dll and angrop fails with the following type error, with the code:
The TypeError also happens with find_gadgets() but with multiple threads it continues anyway and the error gets hidden in the info output