
استخدم angr داخل GDB. أنشئ حالة angr من حالة المصحح الحالية.
استخدم angr داخل GDB. أنشئ حالة angr من حالة المصحح الحالية.
pip install angrgdb
echo "python import angrgdb.commands" >> ~/.gdbinit
يقوم angrgdb بتطبيق واجهة angrdbg API داخل GDB.
يمكنك استخدامه في النصوص البرمجية بهذه الطريقة:
from angrgdb import *
gdb.execute("b *0x004005f9")
gdb.execute("r aaaaaaaa")
sm = StateManager()
sm.sim(sm["rax"], 100)
m = sm.simulation_manager()
m.explore(find=0x00400607, avoid=0x00400613)
sm.to_dbg(m.found[0]) #write input to GDB
gdb.execute("x/s $rax")
#0x7fffffffe768: "ais3{I_tak3_g00d_n0t3s}"
gdb.execute("c")
#Correct! that is the secret key!
يمكنك أيضًا استخدام أوامر angrgdb مباشرة في GDB للأمور البسيطة:
angrgdb sim <register name> [size] جعل المسجل رمزيًاangrgdb sim <address> [size] جعل منطقة الذاكرة رمزيةangrgdb list سرد جميع العناصر التي قمت بتعيينها كرموزangrgdb find <address0> <address1> ... <addressN> تعيين قائمة أهداف البحثangrgdb avoid <address0> <address1> ... <addressN> تعيين قائمة أهداف التجنبangrgdb reset إعادة تعيين السياق (القيم الرمزية والأهداف)angrgdb run إنشاء حالة من حالة المصحح وتشغيل الاستكشافangrgdb shell فتح شيل مع مثيل StateManager تم إنشاؤه من حالة GDB الحاليةangrgdb interactive إنشاء حالة من حالة المصحح والاستكشاف يدويًا باستخدام نسخة معدلة من angr-cliمثال على حل crackme باستخدام angrgdb+GEF+idb2gdb:
هذه نصيحة إذا كنت لا ترغب في استخدام angrgdb من سطر الأوامر ولكنك تريد استخدام نص برمجي بلغة Python.
لتحميل نص برمجي في GDB استخدم source script.py.
أطروحة PDF.
Bibtex:
@misc{fioraldi2020symbolic,
title={Symbolic Execution and Debugging Synchronization},
author={Andrea Fioraldi},
year={2020},
eprint={2006.16601},
archivePrefix={arXiv},
primaryClass={cs.CR}
}