Skip to content

Angr

reversing angr

Angr, binary’yi sembolik yürütüp “iyi adres”e giden girdiyi bulur. Crackme ve flag checker’larda manuel reverse’ü kısaltır.

  1. Binary’yi yükle; base ve arch’i doğrula.

  2. Success/fail adreslerini (puts("Correct") / exit(1)) bul.

  3. explore(find=..., avoid=...) ile path üret.

  4. Stdin/argv solution’ı dump et.

Terminal window
pip install angr
Terminal window
python3 -c 'import angr
Terminal window
print(angr.__version__)'
import angr,claripy
p=angr.Project('./crackme',auto_load_libs=False)
flag=claripy.BVS('flag',8*32)
st=p.factory.entry_state(stdin=flag)
sm=p.factory.simulation_manager(st)
sm.explore(find=0x401234, avoid=[0x401300])
print(sm.found[0].posix.dumps(0))
import angr
p=angr.Project('./vuln',auto_load_libs=False)
sm=p.factory.simulation_manager()
sm.explore(find=lambda s: b'Yes' in s.posix.dumps(1))
print(sm.found[0].posix.dumps(0))
auto_load_libs=False hız kazandırır
find/avoid adreslerini Ghidra'dan al
çok path → constrain ile bayt aralığını kısıtla (printable)
for b in flag.chop(8):
st.solver.add(b>=0x20,b<=0x7e)
[ ] Project yüklendi
[ ] find/avoid adresleri doğru
[ ] printable constrain eklendi
[ ] solution dump edildi