
Используйте angr внутри GDB. Создайте состояние angr из текущего состояния отладчика.
Используйте angr внутри GDB. Создайте состояние angr из текущего состояния отладчика.
pip install angrgdb
echo "python import angrgdb.commands" >> ~/.gdbinit
angrgdb реализует API angrdbg в 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, созданным из текущего состояния GDBangrgdb 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}
}