
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를 사용하지 않고 파이썬 스크립트를 사용하려는 경우의 팁입니다.
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}
}