起手式
from angr import *
p = Project('./00_angr_find', auto_load_libs=False)
st = p.factory.entry_state()
sm = p.factory.simgr(st)
sm.explore(find=0x????? , avoid = 0x?????)
for s in sm.found:
print(s.posix.dumps(0))
00_angr_find
開 IDA Pro ,看到輸出 “Good Job” 的 address 是 0x08048678
,所以 find = 0x08048678
就可以了
from angr import *
p = Project('./00_angr_find', auto_load_libs=False)
st = p.factory.entry_state()
sm = p.factory.simgr(st)
sm.explore(find=0x08048678)
for s in sm.found:
print(s.posix.dumps(0))
Flag JXWVXRKX
01
因為字太多了沒辦法顯示 psuedocode,在 function name 可以看到有一個 maybe good
以及 avoid me
,進去maybe good
可以看到有Good Job
,很直觀的分別對應到 find
和 avoid
from angr import *
p = Project('./01_angr_avoid', auto_load_libs = False)
st = p.factory.entry_state()
sm = p.factory.simgr(st)
sm.explore(find = 0x080485E0, avoid = 0x080585A8)
for s in sm.found:
print(s.posix.dumps(0))
Flag HUJOZMYS