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.
Metodoloji
Section titled “Metodoloji”-
Binary’yi yükle; base ve arch’i doğrula.
-
Success/fail adreslerini (
puts("Correct")/exit(1)) bul. -
explore(find=..., avoid=...)ile path üret. -
Stdin/argv solution’ı dump et.
Kurulum
Section titled “Kurulum”pip install angrpython3 -c 'import angrprint(angr.__version__)'Minimal solve
Section titled “Minimal solve”import angr,claripyp=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 angrp=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))İpuçları
Section titled “İpuçları”auto_load_libs=False hız kazandırırfind/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)Checklist
Section titled “Checklist”[ ] Project yüklendi[ ] find/avoid adresleri doğru[ ] printable constrain eklendi[ ] solution dump edildi