GEF (GDB Enhanced Features) - a modern experience for GDB with advanced debugging capabilities for exploit devs & reverse engineers on Linux
MIT License
Bot releases are visible (Hide)
Evergreen Response
target remote
command by @ValekoZ in https://github.com/hugsy/gef/pull/1020
pull_request
by @hugsy in https://github.com/hugsy/gef/pull/1023
which: command not found
by @osalbahr in https://github.com/hugsy/gef/pull/1032
docs/testing.md
by @hugsy in https://github.com/hugsy/gef/pull/1041
Author | Number of commits |
---|---|
Angelo942 | 2 |
Bart Trojanowski | 1 |
crazy hugsy | 4 |
Dreg | 1 |
Grazfather | 8 |
José Luis Di Biase | 1 |
Lennard Hofmann | 1 |
Osama Albahrani | 1 |
Riff | 8 |
ValekoZ | 1 |
GefSetting
write hooks see value (#1000)reset_arch
: parameter forced, elf header, gdb conf (#1004)target remote
command (#1020)pull_request
(#1023)which
with command
(#1032)gdb_get_location_from_symbol
(#1037)docs/testing.md
(#1041).github/workflows/coverage.yml | 72 ++-
.github/workflows/generate-docs.yml | 1 +
.github/workflows/validate.yml | 2 +
.pylintrc | 20 +-
docs/api.md | 3 +-
docs/commands/context.md | 20 +
docs/commands/gef-remote.md | 6 +-
docs/commands/heap.md | 47 ++
docs/testing.md | 69 ++-
gef.py | 741 ++++++++++++++++----------
scripts/gef-extras.sh | 6 +-
scripts/gef.sh | 11 +-
scripts/generate-coverage-docs.sh | 2 +-
scripts/remote_debug.py | 36 ++
tests/api/deprecated.py | 30 +-
tests/api/gef_arch.py | 45 +-
tests/api/gef_disasemble.py | 30 --
tests/api/gef_disassemble.py | 51 ++
tests/api/gef_heap.py | 45 +-
tests/api/gef_session.py | 98 ++--
tests/api/misc.py | 169 ++++--
tests/base.py | 108 ++++
tests/binaries/Makefile | 6 +
tests/binaries/class.cpp | 29 +
tests/commands/aliases.py | 54 +-
tests/commands/aslr.py | 57 +-
tests/commands/canary.py | 43 +-
tests/commands/checksec.py | 53 +-
tests/commands/context.py | 4 +-
tests/commands/dereference.py | 74 +--
tests/commands/edit_flags.py | 68 +--
tests/commands/elf_info.py | 8 +-
tests/commands/entry_break.py | 18 +-
tests/commands/format_string_helper.py | 27 +-
tests/commands/functions.py | 11 +-
tests/commands/gef.py | 96 ++--
tests/commands/gef_remote.py | 74 ++-
tests/commands/got.py | 26 +-
tests/commands/heap.py | 314 +++++++----
tests/commands/heap_analysis.py | 24 +-
tests/commands/hexdump.py | 23 +-
tests/commands/highlight.py | 23 +-
tests/commands/hijack_fd.py | 8 +-
tests/commands/ksymaddr.py | 19 -
tests/commands/memory.py | 118 ++--
tests/commands/name_break.py | 19 +-
tests/commands/nop.py | 408 +++++++-------
tests/commands/patch.py | 92 ++--
tests/commands/pattern.py | 83 +--
tests/commands/pcustom.py | 132 +++--
tests/commands/pie.py | 46 +-
tests/commands/print_format.py | 61 ++-
tests/commands/process_search.py | 52 +-
tests/commands/process_status.py | 17 +-
tests/commands/registers.py | 32 +-
tests/commands/reset_cache.py | 11 +-
tests/commands/scan.py | 24 +-
tests/commands/search_pattern.py | 37 +-
tests/commands/shellcode.py | 28 +-
tests/commands/skipi.py | 67 ++-
tests/commands/smart_eval.py | 14 +-
tests/commands/stub.py | 49 +-
tests/commands/theme.py | 20 +-
tests/commands/trace_run.py | 19 +-
tests/commands/version.py | 10 +-
tests/commands/vmmap.py | 21 +-
tests/commands/xfiles.py | 17 +-
tests/commands/xinfo.py | 34 +-
tests/commands/xor_memory.py | 26 +-
tests/config/__init__.py | 89 +++-
tests/functions/elf_sections.py | 97 ++--
tests/perf/benchmark.py | 50 +-
tests/perf/context_times.sh | 75 ---
tests/regressions/gdbserver_connection.py | 14 +-
tests/regressions/registers_register_order.py | 90 +++-
tests/requirements.txt | 1 +
tests/utils.py | 303 ++++-------
77 files changed, 2888 insertions(+), 1939 deletions(-)
Full Changelog: https://github.com/hugsy/gef/compare/2023.08...2024.01
Published by hugsy about 1 year ago
Important Note
GEF and GEF-Extras have both moved to using the main
branch as the default. Therefore if you contribute to the code, make sure your PRs are made against the main
branch.
Disguised Wedding
api/gef.md
by @hugsy in https://github.com/hugsy/gef/pull/951
autosave_breakpoints_file
behavior by @hugsy in https://github.com/hugsy/gef/pull/969
main
as the default branch by @hugsy in https://github.com/hugsy/gef/pull/983
pre-commit
for GEF by @hugsy in https://github.com/hugsy/gef/pull/984
pull_request_target
for coverage trigger by @hugsy in https://github.com/hugsy/gef/pull/990
Author | Number of commits |
---|---|
hugsy | 13 |
Dreg | 8 |
Grazfather | 6 |
Alexander Zhang | 2 |
api/gef.md
(#951)nop
command to patch entire instructions (#959)skipi
command to skip N instructions (#964)site/
directory generated by mkdocs to .gitignore
(#968)nop
command (#967)autosave_breakpoints_file
behavior (#969)main
as the default branch (#983)pre-commit
for GEF (#984)pull_request_target
for coverage trigger (#990).editorconfig | 3 +
.github/CONTRIBUTING.md | 33 +-
.github/FUNDING.yml | 1 -
.github/ISSUE_TEMPLATE/bug_report.yaml | 6 +-
.github/PULL_REQUEST_TEMPLATE.md | 31 +-
.github/stale.yml | 2 +-
.github/workflows/coverage.yml | 68 +-
.github/workflows/docs-link-check.yml | Bin 998 -> 0 bytes
.github/workflows/generate-docs.yml | 1 -
.../workflows/{discord-notify.yml => notify.yml} | 55 +-
.github/workflows/run-tests.yml | 7 -
.github/workflows/validate.yml | 31 +
.gitignore | 1 +
.pre-commit-config.yaml | 25 +
LICENSE | 2 +-
README.md | 100 +-
docs/.markdownlint.yaml | 256 +
docs/api.md | 131 +-
docs/api/gef.md | 23212 +++++++++++++++++++
docs/commands/aliases.md | 42 +-
docs/commands/aslr.md | 15 +-
docs/commands/canary.md | 10 +-
docs/commands/checksec.md | 12 +-
docs/commands/config.md | 39 +-
docs/commands/context.md | 193 +-
docs/commands/dereference.md | 44 +-
docs/commands/edit-flags.md | 22 +-
docs/commands/elf-info.md | 11 +-
docs/commands/entry-break.md | 18 +-
docs/commands/eval.md | 8 +-
docs/commands/format-string-helper.md | 25 +-
docs/commands/functions.md | 33 +-
docs/commands/gef-remote.md | 61 +-
docs/commands/gef.md | 77 +-
docs/commands/got.md | 16 +-
docs/commands/heap-analysis-helper.md | 55 +-
docs/commands/heap.md | 171 +-
docs/commands/help.md | 2 +-
docs/commands/hexdump.md | 29 +-
docs/commands/highlight.md | 24 +-
docs/commands/hijack-fd.md | 15 +-
docs/commands/ksymaddr.md | 10 +-
docs/commands/memory.md | 45 +-
docs/commands/name-break.md | 26 +-
docs/commands/nop.md | 64 +-
docs/commands/patch.md | 2 +-
docs/commands/pattern.md | 42 +-
docs/commands/pcustom.md | 108 +-
docs/commands/pie.md | 67 +-
docs/commands/print-format.md | 22 +-
docs/commands/process-search.md | 32 +-
docs/commands/process-status.md | 8 +-
docs/commands/registers.md | 13 +-
docs/commands/reset-cache.md | 2 +-
docs/commands/scan.md | 22 +-
docs/commands/search-pattern.md | 41 +-
docs/commands/shellcode.md | 9 +-
docs/commands/skipi.md | 18 +
docs/commands/stub.md | 29 +-
docs/commands/theme.md | 30 +-
docs/commands/tmux-setup.md | 37 +-
docs/commands/trace-run.md | 16 +-
docs/commands/version.md | 15 +-
docs/commands/vmmap.md | 13 +-
docs/commands/xfiles.md | 6 +-
docs/commands/xinfo.md | 15 +-
docs/commands/xor-memory.md | 32 +-
docs/compat.md | 8 +-
docs/config.md | 25 +-
docs/debugging.md | 131 +
docs/deprecated.md | 27 +-
docs/faq.md | 179 +-
docs/functions/base.md | 11 +-
docs/functions/bss.md | 8 +-
docs/functions/got.md | 8 +-
docs/functions/heap.md | 8 +-
docs/functions/stack.md | 9 +-
docs/index.md | 88 +-
docs/install.md | 84 +-
docs/obsolete/docs/index.md | 1 -
docs/screenshots.md | 23 +-
docs/testing.md | 34 +-
gef.py | 223 +-
mkdocs.yml | 4 +-
scripts/gef-extras.sh | 2 +-
scripts/gef.sh | 5 -
scripts/generate-api-docs.sh | 2 +-
scripts/vscode_debug.py | 7 +
tests/api/deprecated.py | 1 -
tests/api/gef_heap.py | 1 -
tests/api/misc.py | 2 +-
tests/binaries/nested.c | 2 +-
tests/binaries/nested2.c | 2 +-
tests/commands/functions.py | 1 -
tests/commands/gef.py | 1 -
tests/commands/gef_remote.py | 1 -
tests/commands/got.py | 1 -
tests/commands/heap.py | 1 -
tests/commands/heap_analysis.py | 1 -
tests/commands/hexdump.py | 3 -
tests/commands/name_break.py | 1 -
tests/commands/nop.py | 278 +-
tests/commands/pattern.py | 1 -
tests/commands/pie.py | 1 -
tests/commands/process_status.py | 2 -
tests/commands/registers.py | 1 -
tests/commands/reset_cache.py | 2 -
tests/commands/scan.py | 1 -
tests/commands/search_pattern.py | 6 +-
tests/commands/skipi.py | 62 +
tests/commands/stub.py | 2 +-
tests/config/__init__.py | 1 -
tests/requirements.txt | 1 +
113 files changed, 25567 insertions(+), 1307 deletions(-)
Published by hugsy over 1 year ago
Worst Dependent
The update includes various changes to the installation script, bug fixes, updates to documentation, and improvements to the search-pattern
command. Some changes involve updating the GH Action runners, ARM improvement (fixing CPSR and pointer size calculation) and Safe-Linking support (for GLibc >= 2.32 compat)
Code stability has been improved with an increased coverage check through test. Last, more documentation was added making it more accessible and easily searchable.
Author | Number of commits |
---|---|
hugsy | 85 |
Dreg | 6 |
clubby789 | 4 |
Grazfather | 2 |
theguy147 | 2 |
Ananthu | 1 |
Boris-Chengbiao Zhou | 1 |
D4nnyLee | 1 |
Jonathan Salwan | 1 |
lain3d | 1 |
liona24 | 1 |
Roderick | 1 |
Tramadol | 1 |
Wadim Mueller | 1 |
Zhi-Qiang Zhou | 1 |
gef-extras.sh
installation script__load_time_ms
since Py3.6 doesn't have perf_counter_ns
search-pattern
(#862)utils.find_symbol
to cleanly find PIE symbolsprint-format
config settings (#863)syscall-args
and is-syscall
to gef-extras (#861)register_external_content_pane
to conditionally display pane (#866)main
as the default branch for gef-extras
/ gef
scripts for users (#870)gef-extras.sh
(#872)Glibc*
class now rely on ctypes.Structure
(#869)ptrsize
for ARM to not return 2 ever (#876)GEF_DEFAULT_BRANCH
to the top of the script so the value is know when update_gef
is takenargs : argparse.Namespace
as a result of parse_arguments
(#856)target remote
with gef (#899)set-output
directivespytest-forked
in requirements for tests, removed old style envvargdbserver_session
qemu-system
instance (#906)new-release
.github/ISSUE_TEMPLATE/bug_report.md | 64 -
.github/ISSUE_TEMPLATE/bug_report.yaml | 90 +
.github/ISSUE_TEMPLATE/feature_request.md | 21 -
.github/ISSUE_TEMPLATE/feature_request.yaml | 50 +
.github/PULL_REQUEST_TEMPLATE.md | 26 +-
.github/workflows/coverage.yml | 50 +
.github/workflows/generate-docs.yml | 10 +-
.github/workflows/run-tests.yml | 37 +-
Makefile | 42 -
README.md | 4 +-
docs/api/gef.md | 22909 --------------------------
docs/commands/aliases.md | 2 +-
docs/commands/aslr.md | 2 +-
docs/commands/canary.md | 2 +-
docs/commands/checksec.md | 2 +-
docs/commands/config.md | 2 +-
docs/commands/context.md | 2 +-
docs/commands/dereference.md | 15 +-
docs/commands/edit-flags.md | 2 +-
docs/commands/elf-info.md | 2 +-
docs/commands/entry-break.md | 2 +-
docs/commands/eval.md | 2 +-
docs/commands/format-string-helper.md | 2 +-
docs/commands/functions.md | 2 +-
docs/commands/gef-remote.md | 2 +-
docs/commands/gef.md | 2 +-
docs/commands/got.md | 6 +-
docs/commands/heap-analysis-helper.md | 2 +-
docs/commands/heap.md | 24 +-
docs/commands/help.md | 2 +-
docs/commands/hexdump.md | 2 +-
docs/commands/highlight.md | 2 +-
docs/commands/hijack-fd.md | 2 +-
docs/commands/is-syscall.md | 18 -
docs/commands/ksymaddr.md | 2 +-
docs/commands/memory.md | 2 +-
docs/commands/name-break.md | 2 +-
docs/commands/nop.md | 2 +-
docs/commands/patch.md | 2 +-
docs/commands/pattern.md | 6 +-
docs/commands/pcustom.md | 2 +-
docs/commands/pie.md | 2 +-
docs/commands/print-format.md | 2 +-
docs/commands/process-search.md | 2 +-
docs/commands/process-status.md | 2 +-
docs/commands/registers.md | 2 +-
docs/commands/reset-cache.md | 2 +-
docs/commands/scan.md | 2 +-
docs/commands/search-pattern.md | 11 +-
docs/commands/shellcode.md | 2 +-
docs/commands/stub.md | 2 +-
docs/commands/syscall-args.md | 49 -
docs/commands/theme.md | 2 +-
docs/commands/tmux-setup.md | 2 +-
docs/commands/trace-run.md | 2 +-
docs/commands/version.md | 2 +-
docs/commands/vmmap.md | 2 +-
docs/commands/xfiles.md | 2 +-
docs/commands/xinfo.md | 2 +-
docs/commands/xor-memory.md | 2 +-
docs/deprecated.md | 2 +
docs/faq.md | 8 +
docs/functions/base.md | 2 +-
docs/index.md | 6 +-
docs/install.md | 6 +-
docs/testing.md | 29 +-
gef.py | 1573 +-
mkdocs.yml | 3 +-
scripts/gef-extras.sh | 35 +-
scripts/generate-coverage-docs.sh | 24 +
scripts/generate-settings-docs.sh | 40 +
scripts/new-release.py | 21 +-
tests/api/gef_disasemble.py | 30 +
tests/api/gef_session.py | 40 +-
tests/api/misc.py | 12 +
tests/binaries/mmap-known-address.c | 50 +
tests/binaries/set-permission.c | 34 -
tests/binaries/syscall-args.c | 50 -
tests/commands/canary.py | 15 +-
tests/commands/dereference.py | 46 +
tests/commands/gef.py | 5 +-
tests/commands/heap.py | 29 +-
tests/commands/nop.py | 13 +-
tests/commands/pattern.py | 37 +-
tests/commands/pie.py | 16 +-
tests/commands/search_pattern.py | 15 +-
tests/commands/syscall_args.py | 89 -
pytest.ini => tests/pytest.ini | 5 +-
tests/regressions/gdbserver_connection.py | 15 +
tests/requirements.txt | 2 +
tests/utils.py | 44 +-
91 files changed, 1663 insertions(+), 24149 deletions(-)
Published by hugsy over 2 years ago
Upset Constant
The unit testing structure has been re-designed to be more modular and flexible
The documentation has been globally updated, moved from ReadTheDocs to GithubPages, and redesigned from mkdocs
to mkdocs-material
Countless (potential) errors were fixed thanks to more integration of type hinting
Debugged file formats (such as ELF) now rely on a abstraction layer. This means GEF can transparently support more file formats including PE or MachO (see gef-extras/os
)
Remote support has been entirely rewritten and is now fully exposed via the gef.remote
namespace. This includes the Qemu (user and system) support.
Many commands, relying on external dependencies (such as cs-dis
, asm
or emulate
) were transfered to GEF-Extras. Therefore, GEF now has absolutely no dependency whatsoever, not even optional ones. Refer to the deprecation page of the documentation for a complete overview of the changes.
ida-interact
has been totally removed and is now entirely of GEF-Extras only. It has also been rewritten to drop Python XMLRPC and relies on the much more advanced rpyc
Python library.
A new subcommand appeared, gef install
which allows to install commands from gef-extras
on the fly, if you cannot clone the repository or just need a one-time command.
pcustom
supports class factory allowing the structure(s) defined to collect information from the runtime
Some improvements were added to the stack canary detection
On a more personal note, this release marks the 10 years anniversary 🎂 since the first lines of GEF were written!! Thanks for using and contributing to GEF !
Author | Number of commits |
---|---|
hugsy | 118 |
theguy147 | 10 |
Grazfather | 3 |
Dreg | 3 |
Boris-Chengbiao Zhou | 1 |
code-byter | 1 |
Ebubekir Türker | 1 |
Khaotic | 1 |
mattadev | 1 |
mh4ckt3mh4ckt1c4s | 1 |
skysider | 1 |
szotsaki | 1 |
Teddy Heinen | 1 |
Wyatt Neal | 1 |
Zion | 1 |
new-release.py
in the git
shell commanddocs/api.md
(#747)assert
on get_register
(#754)nb_argument
when printing guessed arguments (fix #753) (#755)assert
(#756)gef.py
for M68K support (in gef-extras
) (#757)Gef
and instance gef
that will be used to make the API simpler and more Pythonic. Also adds memory access (via gef.memory
) and settings (via gef.config
)GefHeapManager
class - deprecates many functions to an equivalent more readable - made GlibcArena
and GlibcChunk
classes iterablegef.session
which includes many runtime info (.pagesize
, .canary
, .constants
, etc.) - Add more docstrings - The GDB command objects are now in the namespace gef.gdb
- Adjust some gef functions to check result - Make endian_str
, gef_pagesize
, gef_read_canary
, set_gef_setting
and get_gef_setting
deprecated APIsget_memory_alignment()
-> gef.arch.ptrsize
heap.base_address
get_pid()
-> gef.session.pid
canary
commandelf-info
patch qword
GlibcArena.__eq__
get_register
-> gef.arch.register()
- new context manager for output redirection: RedirectOutputContext
__str__
to Section
gef.memory.maps
gef.session.qemu_mode
and gef.session.remote
reset()
that allows to entirely reset the gef session using pi reset()
__gef_redirect_output_fd__
-> gef.ui.redirect_fd
__gef_int_stream_buffer__
-> gef.ui.stream_buffer
__infos_files__
, was obsolete since we started using lru_cache
__commands__
--> gef.session.commands
highlight_table
--> gef.ui.highlight_table
libc_args_definitions
--> gef.session.libc_args_definitions
new_objfile_handle
doesn't need to re-init the managers since we already reset its cache__watches__
-> gef.ui.watches
__context_messages__
-> gef.ui.context_messages
__gef_convenience_vars_index
-> gef.session.convenience_vars_index
gef.session
ptrsize
static for x86 and x64ptrsize
static for arm, arm64 and mipspathlib.Path
(#775) added test for download_file
ptrsize
cachingGEF_RC
to a Path
object (#775)api/gef.md
@deprecated
adds a note in the api docheap set-arena
api.md
SHT_NUM
valueFormatStringSearchCommand
heap
CI failures (defered to #785) - minor type adjustmentsGefSetting
that prevented saved values to be loaded (#792)@deprecated
warning display can be toggled off (#795)pcustom
command (#794)theme
: use the gef settings managertry
/except
for gef restore
to indicate which setting name is missingArchitecture
gef.ui.libc_args_table
(#821)ida-interact
(#817)pcustom
(#819)gef install
(#825)get_arch
will be deprecated after #827)gef-extras.sh
installation scriptida-interact
(#842) from GEF, entirely moved to GEF-Extrasmaster
-> main
(#845)print-format
and patch byte
commands can work together (#843)__str__
for FileFormat
- FileFormat
also requires a section membergef-remote
: rewrite and add remote
full support (#830)gef-remote
- part 2: Remote Qemu (#846)print-format
after #843 (#852).ci/mlc_config.json | 3 -
.editorconfig | 21 +
.github/CONTRIBUTING.md | 10 +-
.github/ISSUE_TEMPLATE/bug_report.md | 2 +-
.github/PULL_REQUEST_TEMPLATE.md | 41 +-
.github/workflows/discord-notify.yml | 28 +-
.github/workflows/docs-link-check.yml | Bin 367 -> 998 bytes
.github/workflows/generate-docs.yml | 32 +
.github/workflows/run-tests.yml | 17 +-
.gitignore | 3 +-
.pylintrc | 886 +
.readthedocs.yml | 6 +-
LICENSE | 2 +-
Makefile | 45 +-
README.md | 70 +-
docs/api.md | 288 +-
docs/api/gef.md | 22909 ++++++++++++++++++++++++
docs/commands.md | 57 -
docs/commands/assemble.md | 67 -
docs/commands/capstone-disassemble.md | 26 -
docs/commands/checksec.md | 2 +-
docs/commands/dereference.md | 6 +-
docs/commands/gef-remote.md | 142 +-
docs/commands/gef.md | 51 +-
docs/commands/heap-analysis-helper.md | 2 +-
docs/commands/heap.md | 16 +-
docs/commands/ida-interact.md | 53 -
docs/commands/patch.md | 9 +
docs/commands/pcustom.md | 66 +-
docs/commands/print-format.md | 18 +-
docs/commands/ropper.md | 9 -
docs/commands/set-permission.md | 51 -
docs/commands/stub.md | 4 +-
docs/commands/syscall-args.md | 6 +-
docs/commands/trace-run.md | 8 +-
docs/commands/unicorn-emulate.md | 44 -
docs/commands/vmmap.md | 2 +-
docs/commands/xfiles.md | 2 +-
docs/compat.md | 14 +
docs/config.md | 109 +-
docs/deprecated.md | 15 +
docs/faq.md | 80 +-
docs/functions/base.md | 15 +
docs/functions/bss.md | 15 +
docs/functions/got.md | 15 +
docs/functions/heap.md | 15 +
docs/functions/stack.md | 16 +
docs/index.md | 154 +-
docs/install.md | 171 +
docs/obsolete/docs/index.md | 9 +
docs/obsolete/mkdocs.yml | 6 +
docs/obsolete/requirements.txt | 1 +
docs/requirements.txt | 3 +-
docs/testing.md | 122 +
gef.py | 10252 +++++------
mkdocs.yml | 137 +-
pytest.ini | 15 +
requirements.txt | 8 -
scripts/gef-extras.sh | 21 +-
scripts/gef.sh | 11 +-
scripts/generate-api-docs.sh | 48 +
scripts/ida_gef.py | 343 -
scripts/new-release.py | 8 +-
tests/__init__.py | 0
tests/api/__init__.py | 0
tests/api/deprecated.py | 36 +
tests/api/gef_arch.py | 24 +
tests/api/gef_heap.py | 79 +
tests/api/gef_session.py | 42 +
tests/api/misc.py | 71 +
tests/binaries/Makefile | 4 +-
tests/binaries/heap-bins.c | 18 +
tests/binaries/pcustom.c | 33 +
tests/binaries/syscall-args.c | 50 +
tests/binaries/unicorn.c | 14 -
tests/binaries/utils.h | 4 +
tests/commands/__init__.py | 0
tests/commands/aliases.py | 27 +
tests/commands/aslr.py | 50 +
tests/commands/canary.py | 18 +
tests/commands/checksec.py | 30 +
tests/commands/context.py | 16 +
tests/commands/dereference.py | 23 +
tests/commands/edit_flags.py | 52 +
tests/commands/elf_info.py | 16 +
tests/commands/entry_break.py | 19 +
tests/commands/format_string_helper.py | 22 +
tests/commands/functions.py | 19 +
tests/commands/gef.py | 122 +
tests/commands/gef_remote.py | 40 +
tests/commands/got.py | 32 +
tests/commands/heap.py | 178 +
tests/commands/heap_analysis.py | 27 +
tests/commands/hexdump.py | 26 +
tests/commands/highlight.py | 29 +
tests/commands/hijack_fd.py | 18 +
tests/commands/ksymaddr.py | 19 +
tests/commands/memory.py | 63 +
tests/commands/name_break.py | 24 +
tests/commands/nop.py | 67 +
tests/commands/patch.py | 62 +
tests/commands/pattern.py | 73 +
tests/commands/pcustom.py | 108 +
tests/commands/pie.py | 61 +
tests/commands/print_format.py | 40 +
tests/commands/process_search.py | 29 +
tests/commands/process_status.py | 22 +
tests/commands/registers.py | 33 +
tests/commands/reset_cache.py | 17 +
tests/commands/scan.py | 24 +
tests/commands/search_pattern.py | 17 +
tests/commands/shellcode.py | 41 +
tests/commands/smart_eval.py | 23 +
tests/commands/stub.py | 22 +
tests/commands/syscall_args.py | 89 +
tests/commands/theme.py | 49 +
tests/commands/trace_run.py | 24 +
tests/commands/version.py | 18 +
tests/commands/vmmap.py | 20 +
tests/commands/xfiles.py | 17 +
tests/commands/xinfo.py | 20 +
tests/commands/xor_memory.py | 26 +
tests/config/__init__.py | 23 +
tests/functions/__init__.py | 0
tests/functions/elf_sections.py | 81 +
tests/helpers.py | 161 -
tests/perf/__init__.py | 0
tests/perf/benchmark.py | 39 +
tests/perf/context_times.sh | 32 +-
tests/regressions/__init__.py | 0
tests/regressions/registers_register_order.py | 43 +
tests/requirements.txt | 5 +
tests/run-remote.sh | 26 -
tests/runtests.py | 1020 --
tests/utils.py | 369 +
135 files changed, 32446 insertions(+), 8107 deletions(-)
Published by hugsy over 2 years ago
Irritating Cookie
Important update: starting this release, GEF now requires GDB 8+ compiled with a Python 3.6+. If you cannot meet this requirements, you can still use previous versions of GEF, or also gef-legacy. Check out the compatibility matrix for more details.
Major changes:
gef
namespace. See the API docs for complete referenceArchitecture
base class has been reviewed and improved to allow new architectures to be (more) easily pluggable via a new decorator (@register_architecture
)pcustom
command was entirely rewritten to allow external ctypes
structures to be used by any other plugin or via the command lineAuthor | Number of commits |
---|---|
hugsy | 79 |
theguy147 | 9 |
Grazfather | 5 |
mattadev | 1 |
mh4ckt3mh4ckt1c4s | 1 |
skysider | 1 |
szotsaki | 1 |
Teddy Heinen | 1 |
Wyatt Neal | 1 |
Zion | 1 |
new-release.py
in the git
shell commanddocs/api.md
(#747)assert
on get_register
(#754)nb_argument
when printing guessed arguments (fix #753) (#755)assert
(#756)gef.py
for M68K support (in gef-extras
) (#757)Gef
and instance gef
that will be used to make the API simpler and more Pythonic. Also adds memory access (via gef.memory
) and settings (via gef.config
)GefHeapManager
class - deprecates many functions to an equivalent more readable - made GlibcArena
and GlibcChunk
classes iterablegef.session
which includes many runtime info (.pagesize
, .canary
, .constants
, etc.) - Add more docstrings - The GDB command objects are now in the namespace gef.gdb
- Adjust some gef functions to check result - Make endian_str
, gef_pagesize
, gef_read_canary
, set_gef_setting
and get_gef_setting
deprecated APIsget_memory_alignment()
-> gef.arch.ptrsize
heap.base_address
get_pid()
-> gef.session.pid
canary
commandelf-info
patch qword
GlibcArena.__eq__
get_register
-> gef.arch.register()
- new context manager for output redirection: RedirectOutputContext
__str__
to Section
gef.memory.maps
gef.session.qemu_mode
and gef.session.remote
reset()
that allows to entirely reset the gef session using pi reset()
__gef_redirect_output_fd__
-> gef.ui.redirect_fd
__gef_int_stream_buffer__
-> gef.ui.stream_buffer
__infos_files__
, was obsolete since we started using lru_cache
__commands__
--> gef.session.commands
highlight_table
--> gef.ui.highlight_table
libc_args_definitions
--> gef.session.libc_args_definitions
new_objfile_handle
doesn't need to re-init the managers since we already reset its cache__watches__
-> gef.ui.watches
__context_messages__
-> gef.ui.context_messages
__gef_convenience_vars_index
-> gef.session.convenience_vars_index
gef.session
ptrsize
static for x86 and x64ptrsize
static for arm, arm64 and mipspathlib.Path
(#775) added test for download_file
ptrsize
cachingGEF_RC
to a Path
object (#775)api/gef.md
@deprecated
adds a note in the api docheap set-arena
api.md
SHT_NUM
valueFormatStringSearchCommand
heap
CI failures (defered to #785) - minor type adjustmentsGefSetting
that prevented saved values to be loaded (#792)@deprecated
warning display can be toggled off (#795)pcustom
command (#794)theme
: use the gef settings managertry
/except
for gef restore
to indicate which setting name is missing.github/workflows/discord-notify.yml | 28 +-
.github/workflows/docs-link-check.yml | 9 +-
.github/workflows/run-tests.yml | 9 +-
LICENSE | 2 +-
README.md | 15 +-
docs/api.md | 281 +-
docs/api/gef.md | 23244 ++++++++++++++++++++++++++++++++
docs/commands.md | 5 +-
docs/commands/assemble.md | 2 +-
docs/commands/checksec.md | 2 +-
docs/commands/dereference.md | 6 +-
docs/commands/heap-analysis-helper.md | 2 +-
docs/commands/heap.md | 16 +-
docs/commands/print-format.md | 5 +-
docs/commands/stub.md | 4 +-
docs/commands/syscall-args.md | 6 +-
docs/commands/trace-run.md | 6 +-
docs/commands/vmmap.md | 2 +-
docs/commands/xfiles.md | 2 +-
docs/compat.md | 14 +
docs/config.md | 5 +-
docs/faq.md | 41 +-
docs/index.md | 18 +-
gef.py | 7837 +++++------
mkdocs.yml | 1 +
scripts/gef.sh | 3 +
scripts/generate-api-docs.sh | 48 +
scripts/new-release.py | 8 +-
tests/binaries/Makefile | 2 +
tests/binaries/heap-bins.c | 18 +
tests/binaries/pcustom.c | 33 +
tests/helpers.py | 28 +
tests/runtests.py | 198 +-
33 files changed, 27740 insertions(+), 4160 deletions(-)
Full Changelog: https://github.com/hugsy/gef/compare/2021.10...2022.01
Published by hugsy about 3 years ago
Royal Kill
elf-info
command was entirely rewrote (@Kileak)context
heap chunks
can now also display chunks in any/all arenas, fixed alignment issues (@theguy147 )unicorn-emulate
and capstone-disassemble
commands (@theguy147 ) - with better CI to detect failures fasterAuthor | Number of commits |
---|---|
theguy | 37 |
hugsy | 31 |
Grazfather | 7 |
Zion | 5 |
Ammar Faizi | 3 |
Kileak | 2 |
CptGibbon | 1 |
irontigran | 1 |
plop | 1 |
RafaelLeeImg | 1 |
Simon Segars | 1 |
new-release
script, now in python, and polls some data directly from githubnew-release.py
to include stats of code addition/removal - added credit for gef logo in docs/index.md
ida-interact
as obsolete, will be replaced soonsh
anymore but bash
memory watch
to use new argparse syntax of hexdump
cmd (#684)version
cmd (#683)print-format.md
gef-remote
: retrieve pid of inferior process after having connected to target (#686)gef_get_auxiliary_values
- added test for gef_convenience
- fixed test for memory_watch
only_if_current_arch_in
and its docparse_address
test_cmd_memory_watch
: no need for scanf
, which makes testing more hazardousint3
with __builtin_trap()
xinfo
screenshotpytest
on top of unittest
to allow multi-proc execution (#714)heap-multiple-heaps
to use the universal DebugBreak
so non x86 test can successfully be triggeredmax()
call on None
in print_guessed_arguments
(#742)docs/requirements.txt
scripts/new-release.py
.ci/mlc_config.json | 3 +
.github/PULL_REQUEST_TEMPLATE.md | 2 +-
.github/stale.yml | 25 ++
.github/workflows/discord-notify.yml | 10 +-
.github/workflows/docs-link-check.yml | 16 ++
.github/workflows/run-tests.yml | 23 +-
.gitignore | 5 +-
Makefile | 58 +++--
README.md | 4 +-
docs/api.md | 154 +++++++++--
docs/commands.md | 90 +++----
docs/commands/aliases.md | 4 +-
docs/commands/assemble.md | 62 ++++-
docs/commands/capstone-disassemble.md | 12 +-
docs/commands/context.md | 12 +
docs/commands/dereference.md | 21 +-
docs/commands/elf-info.md | 57 ++++-
docs/commands/functions.md | 33 ++-
docs/commands/gef-remote.md | 48 ++--
docs/commands/heap-analysis-helper.md | 2 +
docs/commands/heap.md | 77 +++---
docs/commands/help.md | 8 +-
docs/commands/hexdump.md | 46 ++--
docs/commands/ida-interact.md | 3 +-
docs/commands/ksymaddr.md | 4 +
docs/commands/memory.md | 4 +-
docs/commands/name-break.md | 14 +-
docs/commands/nop.md | 9 +-
docs/commands/patch.md | 8 +-
docs/commands/pattern.md | 48 ++--
docs/commands/pie.md | 74 +++---
docs/commands/print-format.md | 18 +-
docs/commands/process-search.md | 27 +-
docs/commands/process-status.md | 2 +-
docs/commands/registers.md | 20 +-
docs/commands/reset-cache.md | 5 +-
docs/commands/scan.md | 25 +-
docs/commands/set-permission.md | 25 +-
docs/commands/stub.md | 12 +-
docs/commands/tmux-setup.md | 16 +-
docs/commands/unicorn-emulate.md | 36 +--
docs/commands/version.md | 36 +++
docs/commands/vmmap.md | 2 +-
docs/commands/xinfo.md | 2 +-
docs/config.md | 38 ++-
docs/faq.md | 5 +-
docs/index.md | 81 +++---
docs/requirements.txt | 2 +-
docs/screenshots.md | 24 +-
gef.py | 1436 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
mkdocs.yml | 1 +
requirements.txt | 3 +
scripts/gef.sh | 35 ++-
scripts/new-release.py | 145 +++++++++++
scripts/new-release.sh | 13 -
tests/binaries/Makefile | 10 +-
tests/binaries/bss.c | 3 +-
tests/binaries/heap-fastbins.c | 34 +--
tests/binaries/heap-multiple-heaps.c | 54 ++++
tests/binaries/heap-non-main.c | 3 +-
tests/binaries/heap-tcache.c | 3 +-
tests/binaries/heap.c | 6 +-
tests/binaries/memwatch.c | 12 +
tests/binaries/nested.c | 3 +-
tests/binaries/nested2.c | 3 +-
tests/binaries/set-permission.c | 4 +-
tests/binaries/unicorn.c | 14 +
tests/binaries/utils.h | 44 ++++
tests/helpers.py | 158 ++++++++----
tests/runtests.py | 569 +++++++++++++++++++++++++++++++----------
70 files changed, 2832 insertions(+), 1033 deletions(-)
Published by hugsy over 3 years ago
Impractical Information
pattern
command to strictly follow its usage in pwntools
heap bin tcache
for multi-threaded execution (thanks @irontigran )gef-extras
, by leveraging rpyc
Name | Number of commits |
---|---|
Boris Molodenkov | 6 |
Grazfather | 4 |
hugsy | 79 |
Jacob Heybey | 1 |
Jeffrey Swan | 1 |
Michael Hoefler | 14 |
Simon Wörner | 1 |
emulate
to use the new argparseremulate
to use the new argparserpattern
command - changed the default period to 4 for better compat with pwntools
(fixed #658) - updated unit testsprint-format
to reflect short flagparse_arguments
to illustrate how to use positional arguments with a list of option (as suggested in #661)Ilshidur/action-discord
Ilshidur/action-discord
, hello sarisia/actions-status-discord
get_register
after #669 to restore some decent level of cachingno-space-after-comma
)parse_arguments
for pie *
commands (#659)run-test.yml
that prevented cache to be correctly collectedPublished by hugsy over 3 years ago
April 2021 Release with improvements that include:
Enjoy 🍻
Published by hugsy over 3 years ago
Routine release because it's been a while 😂
Bug were fixed, issues were addressed, people are happy.
Enjoy 🍻!
Published by hugsy over 4 years ago
Features / improvements:
pcustom
: now supports recursive structuregef-binja
, and is now a plugin available from the Binary Ninja Plugin StoreAnd as usual many fixes, ~60 commits, 3 new committers, etc. etc.
Enjoy 🍻!
Published by hugsy over 4 years ago
Issuing a minor release fixing an issue when attempting to guess function parameters.
Published by hugsy over 4 years ago
This release marks a special milestone, as Python 2 officially becomes unsupported by GEF. The main reason behind this change after 7 (!!) years of both Python 2 and 3 support is of course the fact that Python 2 has become officially unsupported since January 1st, 2020.
This release therefore reflects the change, by making the code lighter (and faster) due to the removal of the compatibility layer. Functionally speaking, if you're already a GDB+Py3 users nothing will change for you.
For those poor souls still obliged to use GDB + Python2 several options are open for you:
In addition to make GEF even cooler (especially for those who've never tried it), here are some cool goodies:
gef
/gef-demo
.As usual, we hope you enjoy the changes and fixes, and feel free to drop by our IRC channel to say hi, ask questions, share cool tricks, or even just say thanks (believe or not, it does go a long way to keep us motivated to continue).
Have fun, and happy debugging!
🍻 🍻 🍻
Published by hugsy over 5 years ago
Not much, mostly code improvements, bug fixes.
And a new logo (thanks to Pedro "TheZakMan" Araujo) !
Enjoy
🍻 🍻 🍻
Published by hugsy almost 6 years ago
This new release is the result of almost 5 months of hard work. So I'll just start by thanking those who made the projects alive: GEF reaches 29 contributors and a special thanks goes to:
The first timer(s):
The regular(s):
And the legendary
If you like gef
and meet one of those person, feel free to buy them a beer 🍺
print-format
$_pie
, $_heap
) by @wbowlingPyEnv
support (@hazedic)hexdump byte
(pwntools
-like)With about 1100 lines changed, the
format-string-helper
GEF will progressively stops supporting GDB+Python2, since Python2 is due to die soon anyway.
Published by hugsy over 6 years ago
New features:
context
documentation for more details)heap-analysis
and heap
commandstheme
commandHuge thanks to the contributors:
🍻 🍻 🍻
Published by hugsy over 6 years ago
GEF is now moving on to a release/tag based system. On top of making the life of our packager friends easier, this will enable a better tracking of issues, and milestone setting.
Happy hacking !