* feat: enhance attachp command to support partial process name matching.
* feat: use to retrieve PID and command, support multiple target search.
* docs: update attachp command description to include partial name matching
* basic binary ninja integration
* start centralizing integrations into uniform interface
* finish most integrations
* make binja integration contain all ida features
* allow switching servers
* remove unused functions
* format
* fix unit tests
* satisfy mypy + warn instead of error on invalid provider
* fix decompilation not working in function prologue
* better config options and il config
* lint
* fix bn_sym test
* add decomp command
* add bn_eval gdb function
* format binja_script.py
* satisfy mypy again
* doc update
* move integrations to separate subdir + make test_loads more versatile
* format
* forgot to push a file
* format
* highlight next instruction instead of previous one in decomp
* fix disassembly il level
* prefer function tags over data tags
* add bn_var function
* add variable labeling
* more configurability, documentation, bug fixes
* code cleanup
* format
* remove code duplication between chain.py and memory.py
* add short-lived cache for some integration functions
* use every register available to help with frame inference
* lint
* don't waste time checking irrelevant registers
* move performance hit in cache only to except case
* fix issue with conflict resolution
* lint
* fix rebase mistake
* Add annotations for CMP like instructions in AArch64, Arm. Refactor it to avoid code duplication
* Use walrus operator
* Properly resolve Arm register and constant operands, applying shifts and extends, to resolve actual values used
* Apply mask only if doing shift/extend
* lint
* remove unused method
* immediate constant shift doesn't need bit mask - miximum shift possible is 4095 << 12, which doesn't overflow in any case
* constant 5
* Make register width check better
* lint
* Unicorn now runs Thumb mode, and Capstone disassembler can dynamically change to Thumb mode disassembling in the middle of the disasm view (based on the emulator)
* thumb mode fix
* fix
* lint
* comment
* Fix bool() bug and make emu code a bit cleaner
* Finish separating command from GDB
* Fix lints
* Add ContextManager for thread and frame selection
* Add LLDB to the Debugger API
* Add test command using `ArgparsedCommand`
* Fix lints and small issues
* Minor fix
* Fix session
* Change inferior selection in LLDB
* DON'T AWOO $350 FINE
* Lint fixes
* Reword comment about `Value.is_optimized_out`
* Revert to dev LLDB implementation
* Revert pwndbg/lldblib/__init__.py to upstream version
* Move usage of `pwndbg.gdblib.regs.fix` in `command/__init__.py` to Debugger API
* More lint fixes
* Add typing info to gdb.py
* Add a few clarifications
* Lint fix
* nit
* Finish separating command from GDB
* Fix lints
* Add ContextManager for thread and frame selection
* Make `pwndbg.dbg.gdb.Selection` a `@contextmanager` function
* Split from `pwndbg/commands/__init__.py` GDB disentaglement PR
* Added types to hexdump()'s parameters
* hexdump(): upgraded format strings to f-strings, while fixing the offset when data is empty
* hexdump(): offset is now correctly computed and updated accross repeated calls to hexdump.
This fixes two bugs:
1. Offset was increased by the number of lines displayed by the hexdump() command,
which was incorrect, as some lines may be compressed;
2. When dumping a number of bytes that is not divisible by the number of bytes per line,
offset would be incorrectly updated.
* Linter
* hexdump: fixed type of retrieved config entry hexdump_group_use_big_endian
* Fixed test_hexdump_saved_address_and_offset test to account for random stack address
* Improve bin corruption checks
* Update pwndbg/heap/ptmalloc.py
* factor out and clean up bin corruption check
* check chunks even if bin is longer than limit
* add empty bin check
* lint.sh, remove testing if
* dont modify chain in check, allow corruption=0, cleanup
* typing, more reliable empty bin check
* cast params to int, otherwise not detected properly
* add regression test for corruption check
* lint.sh
---------
Co-authored-by: Gulshan Singh <gsingh2011@gmail.com>
Co-authored-by: Disconnect3d <dominik.b.czarnota@gmail.com>
* Implement bitwise math rotation operations on numbers of discrete width. Will be used in manually evaluating arm instruction offsets and shifts
* fixes
* Arm thumb mode in banner
* lint
* Use Walrus operator
Co-authored-by: Disconnect3d <dominik.b.czarnota@gmail.com>
* changes
* remove unneeded line
---------
Co-authored-by: Disconnect3d <dominik.b.czarnota@gmail.com>
This PR fixes a bug with stack exploration: we did not return it from `stack.get()`!
Additionally, it refactors the `is_executable` function to return early and do not cache the `nx` variable.
* Move syscall number evaluation into instruction.py. This allows us to determine and display future syscalls
* Move string manipulation to color.disasm.py
* lint
* fix padding
* Fix x86 syscall
* disable debug mode
* @override decorator added to methods
* comments
* lint
* Fix x86/x86_64 edge cases with syscall register reading, and add test for emulation off for syscalls
* Tests depend on width of context banner
* Fix strange rebasing error
* Add IRET to jump groups, and remove multiple places in codebase where jumps groups are defined (non uniformly)
* remove duplicate test (rebase stuff)
* Honor delay slots
* fix bug with linear use of nearpc
* Move some logic around to allow for x86 REP instruction to pass test cases
* lint + comment
* rebase
* restore wx changes
* rewrite small comment
* simply check and make call instructions work again
* Move syscall number evaluation into instruction.py. This allows us to determine and display future syscalls
* Move string manipulation to color.disasm.py
* lint
* fix padding
* Fix x86 syscall
* disable debug mode
* @override decorator added to methods
* comments
* lint
* Fix x86/x86_64 edge cases with syscall register reading, and add test for emulation off for syscalls
* Tests depend on width of context banner
* Fix strange rebasing error
* Call like instructions
* Add IRET to jump groups, and remove multiple places in codebase where jumps groups are defined (non uniformly)
* remove duplicate test (rebase stuff)
* lint
* Fix caching for pwndbg.gdblib.elf functions
* Add test for cache clear priority
* Fix formatting in files
* switch priority to an enum instead of boolean
* fix logging for start event
* decouple gdblib.events import from lib.cache