andreafioraldi / Angrgdb
Licence: bsd-2-clause
Use angr inside GDB. Create an angr state from the current debugger state.
Stars: ✭ 165
Programming Languages
python
139335 projects - #7 most used programming language
Projects that are alternatives of or similar to Angrgdb
Gdbghidra
gdbghidra - a visual bridge between a GDB session and GHIDRA
Stars: ✭ 251 (+52.12%)
Mutual labels: plugin, debugger, gdb
metal.test
Deprecated, superseded by https://github.com/metal-ci/test
Stars: ✭ 41 (-75.15%)
Mutual labels: debugger, gdb
insight
A Tcl/Tk Frontend for GDB. This is an AppImage(Portable Package) of insight for the sake of Jeff Duntemann's amazing book.
Stars: ✭ 31 (-81.21%)
Mutual labels: debugger, gdb
gdbstub
An ergonomic and easy-to-integrate implementation of the GDB Remote Serial Protocol in Rust, with full no_std support.
Stars: ✭ 158 (-4.24%)
Mutual labels: debugger, gdb
gdbundle
Minimalist plugin manager for GDB and LLDB
Stars: ✭ 72 (-56.36%)
Mutual labels: debugger, gdb
Lldb
Project moved to: https://github.com/llvm/llvm-project
Stars: ✭ 412 (+149.7%)
Mutual labels: debugger, gdb
vim-easydebugger
A VIM multi-language debugger plugin
Stars: ✭ 47 (-71.52%)
Mutual labels: debugger, gdb
hello-world-gdb
Simple hello world program for debugging with gdb
Stars: ✭ 29 (-82.42%)
Mutual labels: debugger, gdb
gdb-dashboard
Modular visual interface for GDB in Python
Stars: ✭ 8,699 (+5172.12%)
Mutual labels: debugger, gdb
Idangr
Use angr in the IDA Pro debugger generating a state from the current debug session
Stars: ✭ 214 (+29.7%)
Mutual labels: plugin, debugger
Gdbgui
Browser-based frontend to gdb (gnu debugger). Add breakpoints, view the stack, visualize data structures, and more in C, C++, Go, Rust, and Fortran. Run gdbgui from the terminal and a new tab will open in your browser.
Stars: ✭ 8,339 (+4953.94%)
Mutual labels: debugger, gdb
angrgdb
Use angr inside GDB. Create an angr state from the current debugger state.
Install
pip install angrgdb
echo "python import angrgdb.commands" >> ~/.gdbinit
Usage
angrgdb implements the angrdbg API in GDB.
You can use it in scripts like this:
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!
You can also use angrgdb commands directly in GDB for simple stuffs:
-
angrgdb sim <register name> [size]
Symbolize a register -
angrgdb sim <address> [size]
Symbolize a memory area -
angrgdb list
List all items that you setted as symbolic -
angrgdb find <address0> <address1> ... <addressN>
Set the list of find targets -
angrgdb avoid <address0> <address1> ... <addressN>
Set the list of avoid targets -
angrgdb reset
Reset the context (symbolic values and targets) -
angrgdb run
Generate a state from the debugger state and run the exploration -
angrgdb shell
Open an shell with a StateManager instance created from the current GDB state -
angrgdb interactive
Generate a state from the debugger state and explore by hand using a modified version of angr-cli
An example crackme solve using angrgdb+GEF+idb2gdb:
Loading scripts in GDB
This is a tip if you don't want to use angrgdb from the cli but you want to use a python script.
To load a script in GDB use source script.py
.
TODO
- add remote angrdbg like in IDAngr
Cite
Thesis PDF.
Bibtex:
@misc{fioraldi2020symbolic,
title={Symbolic Execution and Debugging Synchronization},
author={Andrea Fioraldi},
year={2020},
eprint={2006.16601},
archivePrefix={arXiv},
primaryClass={cs.CR}
}
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].