
GDB के अंदर angr का उपयोग करें। वर्तमान डिबगर स्थिति से angr स्थिति बनाएं।
GDB के अंदर angr का उपयोग करें। वर्तमान डिबगर स्थिति से एक angr स्थिति बनाएँ।
pip install angrgdb
echo "python import angrgdb.commands" >> ~/.gdbinit
angrgdb GDB में angrdbg API को लागू करता है।
आप इसे इस तरह स्क्रिप्ट में उपयोग कर सकते हैं:
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!
आप सरल चीजों के लिए सीधे GDB में angrgdb कमांड का भी उपयोग कर सकते हैं:
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 वर्तमान GDB स्थिति से बनाए गए StateManager इंस्टेंस के साथ एक शेल खोलेंangrgdb interactive डिबगर स्थिति से एक स्थिति उत्पन्न करें और angr-cli के संशोधित संस्करण का उपयोग करके हाथ से अन्वेषण करेंangrgdb+GEF+idb2gdb का उपयोग करके एक क्रैकमे समाधान का उदाहरण:
यदि आप CLI से 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}
}