All Projects → andreafioraldi → Angrgdb

andreafioraldi / Angrgdb

Licence: bsd-2-clause
Use angr inside GDB. Create an angr state from the current debugger state.

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
lldbg
A lightweight native GUI for LLDB.
Stars: ✭ 83 (-49.7%)
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
gdb
Go GDB/MI interface
Stars: ✭ 70 (-57.58%)
Mutual labels:  debugger, gdb
kakoune-gdb
gdb integration plugin
Stars: ✭ 44 (-73.33%)
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
Xanalyzer
xAnalyzer plugin for x64dbg
Stars: ✭ 553 (+235.15%)
Mutual labels:  plugin, debugger
Voltron
A hacky debugger UI for hackers
Stars: ✭ 5,599 (+3293.33%)
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
esp-gdbstub
ESP8266 debugging tool
Stars: ✭ 13 (-92.12%)
Mutual labels:  debugger, gdb
madbomber
Backtrace-on-throw C++ exception logger
Stars: ✭ 17 (-89.7%)
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
Dlangide
D language IDE based on DlangUI
Stars: ✭ 358 (+116.97%)
Mutual labels:  debugger, gdb
Rr
Record and Replay Framework
Stars: ✭ 6,469 (+3820.61%)
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:

asciicast

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].