Skip to content

2022.01 - Irritating Cookie

Compare
Choose a tag to compare
@hugsy hugsy released this 30 Jan 22:46

Changelog: 2022.01 - Irritating Cookie

Highlights of 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:

  • Internal code restructuring now exposes a bunch of new API via the gef namespace. See the API docs for complete reference
  • As a consequence, many existing functions available to gef and other plugins based on gef became obsolete and are now deprecated. Using those API will show a warning message in gef (which can be toggled off)
  • The Architecture base class has been reviewed and improved to allow new architectures to be (more) easily pluggable via a new decorator (@register_architecture)
  • Type hinting (with Python 3.6 compatibility) support, which makes the code globally more readable
  • Bunch of bugs squashed thanks to the type hinting
  • Taking advantage of Python 3.6 (again) allows to reduce code size by relying more on builtin Python classes
  • The pcustom command was entirely rewritten to allow external ctypes structures to be used by any other plugin or via the command line
  • More tests added, and the documentation updated.

Contributors

Author 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

Closed Issues

Closed Pull Requests

Commit details

100 commits since 2021.10

Commit log

  • 2021-10-22 b982f3chugsy • Fixed minor bug in new-release.py in the git shell command
  • 2021-10-22 83b4934hugsy • Update README.md
  • 2021-10-25 50231d9mh4ckt3mh4ckt1c4s • Fix typo in docs/api.md (#747)
  • 2021-10-31 c10b1e4hugsy • Update README.md
  • 2021-11-02 8fc0583skysider • add number arg for 'heap chunk' command (#745)
  • 2021-11-16 721ad4bmattadev • Use sha256 for gef_hash to quiet static analyzers (#751)
  • 2021-11-27 34a14bchugsy • Remove the assert on get_register (#754)
  • 2021-11-27 152bb0chugsy • fixed typo from #754
  • 2021-11-28 97ad7f7hugsy • [CI] Change test order
  • 2021-11-29 5b91420Teddy Heinen • add support for hex strings to print-format (#758)
  • 2021-12-03 add63datheguy147 • fix typo in GotBaseFunction docs (#761)
  • 2021-12-06 04f847bhugsy • Bound nb_argument when printing guessed arguments (fix #753) (#755)
  • 2021-12-06 702858chugsy • Remove final assert (#756)
  • 2021-12-06 3efb77bhugsy • Adds constants to gef.py for M68K support (in gef-extras) (#757)
  • 2021-12-11 d512ac9hugsy • Added @therealdreg to the sponsors list
  • 2021-12-11 1c9da33hugsy • Update README.md
  • 2021-12-11 d98ffb7Wyatt Neal • Fixes GEF installer bash script #762)
  • 2021-12-11 61782e4hugsy • [Refactor] Adds a global class 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)
  • 2021-12-11 380412ehugsy • Added GEF compatibility matrix
  • 2021-12-13 cdfdf42hugsy • More changes to a more pythonic version - creates a GefHeapManager class - deprecates many functions to an equivalent more readable - made GlibcArena and GlibcChunk classes iterable
  • 2021-12-13 9f45be8hugsy • Fixed the heap (arena & chunk) iterators
  • 2021-12-13 e36152dhugsy • - Separate gef managers initialization - Add gef.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 APIs
  • 2021-12-13 fbbcc3ahugsyget_memory_alignment() -> gef.arch.ptrsize
  • 2021-12-13 e709aebhugsy • Fixed heap.base_address
  • 2021-12-13 43a9920hugsyget_pid() -> gef.session.pid
  • 2021-12-13 5b20f3chugsy • Fixed canary command
  • 2021-12-13 87e6204hugsy • Fixed elf-info
  • 2021-12-13 52b0646hugsy • Fixed patch qword
  • 2021-12-13 d1aee83hugsy • CI passing w00t
  • 2021-12-13 1f62d53hugsy • test everything
  • 2021-12-13 7698f30hugsy • making linters happy
  • 2021-12-14 b9493f2hugsy • fixed GlibcArena.__eq__
  • 2021-12-15 a98dcb9hugsy • - get_register -> gef.arch.register() - new context manager for output redirection: RedirectOutputContext
  • 2021-12-15 321e104hugsy • added __str__ to Section
  • 2021-12-16 a7ab48etheguy147 • refactor: use Generators and Comprehension (#771)
  • 2021-12-16 f497bc8theguy147 • refactor: replace OSError aliases (#769)
  • 2021-12-25 08f4b28szotsaki • Update dereference.md (#773)
  • 2022-01-05 a697afdhugsy • use avatars for contributors and sponsors in readme and docs/index
  • 2022-01-07 8a27a38theguy147 • refactor: remove utf8 encoding declaration (#770)
  • 2022-01-07 4f6ab0chugsy • Added gef.memory.maps
  • 2022-01-07 d2f5f27hugsy • Merge branch 'gdb_8_py36_code_refactor' of github.com:hugsy/gef into gdb_8_py36_code_refactor
  • 2022-01-07 f0126cehugsy • added gef.session.qemu_mode and gef.session.remote
  • 2022-01-07 8262adchugsy • added a simple helper reset() that allows to entirely reset the gef session using pi reset()
  • 2022-01-07 0ee63e3hugsy__gef_redirect_output_fd__ -> gef.ui.redirect_fd
  • 2022-01-07 df129edhugsy • replaced __gef_int_stream_buffer__ -> gef.ui.stream_buffer
  • 2022-01-07 809c735hugsy • removed global __infos_files__ , was obsolete since we started using lru_cache
  • 2022-01-07 eb7312bhugsy__commands__ --> gef.session.commands
  • 2022-01-07 d83b239hugsyhighlight_table --> gef.ui.highlight_table
  • 2022-01-07 67df573hugsylibc_args_definitions --> gef.session.libc_args_definitions
  • 2022-01-07 93f2b15hugsy • restore commands & functions as globals
  • 2022-01-07 84b00f1hugsy • fixed typo in uimanager
  • 2022-01-07 4bcf19ahugsynew_objfile_handle doesn't need to re-init the managers since we already reset its cache
  • 2022-01-07 b0da3f8hugsy__watches__ -> gef.ui.watches
  • 2022-01-07 f08667bhugsy__context_messages__ -> gef.ui.context_messages
  • 2022-01-07 bf96176hugsy__gef_convenience_vars_index -> gef.session.convenience_vars_index
  • 2022-01-07 10a97c6hugsy • linting
  • 2022-01-07 ece1662hugsy • moved the last globals to gef.session
  • 2022-01-08 b95c4achugsy • making ptrsize static for x86 and x64
  • 2022-01-08 a04cd64hugsy • making ptrsize static for arm, arm64 and mips
  • 2022-01-08 6514ad3hugsy • restoring MIPS64
  • 2022-01-08 bca69dahugsy • hardcoding endianness for x86,64 and arm,64
  • 2022-01-08 32941adhugsy • added a class decorator to register architectures
  • 2022-01-08 d5a3bb6hugsy • changed path to pathlib.Path (#775) added test for download_file
  • 2022-01-08 64e3115hugsy • [arm] fix ptrsize caching
  • 2022-01-09 1a430d5theguy147 • refactor: add type hints (#774)
  • 2022-01-09 8de60ebhugsy • Merge branch 'gdb_8_py36_code_refactor' of github.com:hugsy/gef into gdb_8_py36_code_refactor
  • 2022-01-09 5f641bbhugsy • Replaced GEF_RC to a Path object (#775)
  • 2022-01-10 b653a6ehugsy • Automatically generating gef api (#776)
  • 2022-01-10 f7979f5hugsy • Markdown doc also shows if a function/class is deprecated (#776)
  • 2022-01-10 3179289hugsy • [docs] Partially fix hrefs in api/gef.md
  • 2022-01-10 c25f9c1hugsy • [gef] fixing glibc main arena calculation for arm [docs] @deprecated adds a note in the api doc
  • 2022-01-11 29a9925hugsy • [tests] fixed heap set-arena
  • 2022-01-11 adcc1d4hugsy • Fixed PPC specs URL
  • 2022-01-11 ad51825theguy147 • refactor: use f-strings across codebase (#768)
  • 2022-01-11 8ad0c4fhugsy • Fixed PPC specs URL
  • 2022-01-11 1683fcbhugsy • [docs] Fixed complete API link in api.md
  • 2022-01-11 bf70642hugsy • Merge branch 'dev' into gdb_8_py36_code_refactor
  • 2022-01-12 bdea715hugsy • first run of pr feedback
  • 2022-01-12 2975d5ftheguy147 • [CI] Add tests for heap bins(#780)
  • 2022-01-12 795f51chugsy • [docs] updating docs to stipulate the new minimum requirements for gef
  • 2022-01-12 b442af3hugsy • [elf] fixed duplicate SHT_NUM value
  • 2022-01-16 8ebd7b0hugsy • Apply suggestions from code review
  • 2022-01-16 fa28aa2hugsy • Removed debug info in FormatStringSearchCommand
  • 2022-01-16 e4a77aahugsy • - fixed heap CI failures (defered to #785) - minor type adjustments
  • 2022-01-16 5f31516Grazfather • Merge pull request #779 from hugsy/gdb_8_py36_code_refactor
  • 2022-01-17 9055b65Grazfather • tests: Make sure keystone and capstone tests fail with missing lib (#791)
  • 2022-01-17 599db81hugsy • Fixed bugs in GefSetting that prevented saved values to be loaded (#792)
  • 2022-01-18 67fccb5Zion • updated add_context_pane settings use (#796)
  • 2022-01-18 d162004Grazfather • Use https URLs where we can (#793)
  • 2022-01-18 9560041hugsy@deprecated warning display can be toggled off (#795)
  • 2022-01-20 c6909e1theguy147 • refactor: add missing py3.6 type hints (#797)
  • 2022-01-20 eaf9d11Grazfather • Variadic gef print (#789)
  • 2022-01-21 b4bffdchugsy • Update copyright year (#800)
  • 2022-01-25 779369fhugsy • Complete rewrite of pcustom command (#794)
  • 2022-01-25 364cf44hugsy • ELF class upgrades (#798)
  • 2022-01-27 58f2a2etheguy147 • fix: heap bins commands (#805)
  • 2022-01-29 65daadehugsy • - Regenerated API doc
  • 2022-01-29 a280cfeGrazfather • Re-add lru_cache to __get_register_for_selected_frame (#809)
  • 2022-01-30 545fa28hugsy • fixed theme : use the gef settings manager
  • 2022-01-30 8c8c838hugsy • - changed the try/except for gef restore to indicate which setting name is missing

File diff

.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(-)

New Contributors

Full Changelog: 2021.10...2022.01