summaryrefslogtreecommitdiff
path: root/view
AgeCommit message (Collapse)Author
2026-02-23[Rust] Fix plugins being referenced in `cargo about` outputMason Reed
2026-02-19guard against empty .interp and .dynamicJordan Wiens
2026-02-19validation for zero sized symbol or string tablesJordan Wiens
2026-02-17Handle Universal binaries through container transform system.Brian Potchik
2026-02-13[DSC] Correctly mark symbols as having local, global, or weak bindingMark Rowe
2026-02-06Add regex and case sensitivity options to FilterEditJosh Ferrell
2026-02-02[MachO] Set segment flags for kernel images based on how XNU initially maps themMark Rowe
This was done for kernel cache in https://github.com/Vector35/binaryninja-api/pull/7519, and is now being extended to Mach-O images that appear to be XNU kernels (that is, they contain `__KLD` segments). This improves the experience when opening kernels from the macOS Kernel Debug Kit.
2026-01-30Force ELF view addr size to 4 bytes for x32 and ilp32Brandon Miller
These binaries can be ELF64 or ELF32 format, if the user specifies linux-x32 or linux-ilp32 platforms the BinaryView's default address size needs to be 4, even if it's an ELF64
2026-01-30Improve filename handling for container files.Brian Potchik
2026-01-23Lifted new PPC insns, MIPS reloc fix.Alexander Taylor
2026-01-23Implement R_386_IRELATIVE relocation handling.Alexander Taylor
Closes #7851.
2026-01-22[ELF] Fix reading dynamic string tables at large offsetsJosh Ferrell
2026-01-22[Mach-O] Improve how section types are identifiedwanghaiwei
1. A section's `flags` are masked with `SECTION_TYPE` before being compared. This prevents misclassifying a section when its low bits are shared with other section types. 2. `__mod_init_func` and `__init_offsets` are identified by section type flags, rather than by name. There's no documented reason why these were being matched by name. 3. A fallback is added to detect `__got` sections by name. This is necessary as some kext bundles that have their `__got` sections as `S_REGULAR` rather than `S_NON_LAZY_SYMBOL_POINTERS`. This fixes https://github.com/Vector35/binaryninja-api/issues/7891. Thanks to @WHW0x455 for these fixes.
2026-01-22architecturePreference description updateJordan Wiens
2026-01-14Allow controlling which address is used for instructions created when ↵Mark Rowe
inlining during analysis Previously the address of the instruction in the function being inlined was used as the new instruction's address when copying it during inlining. Now there is an additional option: use the address of the call instruction that is being replaced as the new instruction's address. This new mode is useful when inlining thunks or stub functions, but care must be taken if using it beyond that. The benefit is that it ensures that when a function contains multiple calls to the same stub function, each inlined copy ends up with distinct addresses. This ensures that call type adjustments and other overrides that are stored on the function and keyed by address can be applied independently to each callsite that was inlined. The trade-off is that if the function being inlined contains non-trivial logic, all of the inlined instructions sharing an address will limit what type of adjustments can be applied to them. The Objective-C and shared cache workflows are updated to take advantage of this new mode when they enable inlining of stub functions. This will make it possible for multiple calls to the same runtime function within a single function to have separate call type adjustments applied in the future.
2026-01-11[Rust] Enter more session scoped tracing spans for debug info and binary ↵Mason Reed
view callbacks
2026-01-11[Rust] Replace `log` with `tracing`Mason Reed
- Added more documentation - Replaced global named logger for plugins, fixing the issue when the CU has multiple (e.g. statically linked demo) - Simplified some misc code This is a breaking change, but I believe there is no better time to make it, we cannot continue to use the `log` crate, it is too limited for our needs.
2026-01-01update copyrights for 2026Jordan Wiens
2025-12-20Fix many of the warnings that show up when compiling with GCC 15.2Mark Rowe
2025-12-16Support automatic and manual endianness override for x86 ELF files (#7347)Copilot
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2025-12-15[MachO] Fix handling of relocations for self-bound data symbolsMark Rowe
Fixes https://github.com/Vector35/binaryninja-api/issues/7781.
2025-12-10[Rust] Move architecture module code into more reasonable filesMason Reed
To keep backwards compatibility for commonly referenced code we re-export them within the architecture module. Also does some light refactoring of some newly added APIs to keep them more consistent with other parts of the codebase.
2025-12-08[KernelCache] Wrap section creation within BeginBulkAddSegments / ↵Mark Rowe
EndBulkAddSegments This defers rebuilding of the section map until after all sections for an image have been added, rather than having the section map be rebuilt after adding each section.
2025-12-08[DSC] Wrap section creation within BeginBulkAddSegments / EndBulkAddSegmentsMark Rowe
This defers rebuilding of the section map until after all sections for an image have been added, rather than having the section map be rebuilt after adding each section.
2025-12-08Introduce an RAII type for managing bulk symbol modificationsMark Rowe
Fixes https://github.com/Vector35/binaryninja-api/issues/7666. Correctly managing the state of bulk symbol modifications via `BeginBulkModifySymbols` / `EndBulkModifySymbols` is error-prone in the face of exceptions and early returns. Leaking a bulk symbol modification can leave the view in a state where no further changes to symbols will be applied. All users of the C++ API are encouraged to move from `BeginBulkModifySymbols` / `EndBulkModifySymbols` to the new `BulkSymbolModification` class.
2025-12-04[DSC] Fix unhandled exception when opening secondary cache file with ↵Mason Reed
unbacked regions Fixes https://github.com/Vector35/binaryninja-api/issues/7724
2025-11-26[DSC] Place synthetic sections after the cache's address rangeMark Rowe
This ensures they do not overlap with any images that may later be loaded from the shared cache.
2025-11-26[KernelCache] Place synthetic sections after the cache's address rangeMark Rowe
This ensures they do not overlap with any images that may later be loaded from the kernel cache. Fixes https://github.com/Vector35/binaryninja-api/issues/7634.
2025-11-25Update to Qt 6.10.1Rusty Wagner
2025-11-17Fix some compiler warningsRusty Wagner
2025-11-11[KernelCache] Remove 'Load Selected Image and Dependencies'Mark Rowe
Fixes https://github.com/Vector35/binaryninja-api/issues/7615. The dependency loading for kernel cache images was copied from the shared cache code, and looks for `LC_LOAD_DYLIB` load commands to determine the direct dependencies of an image. Images in kernel caches don't use `LC_LOAD_DYLIB` load commands so no dependencies were ever loaded. It could, however, result in a crash.
2025-11-04[MachO] Set display name of memory regions to match the segment names they ↵Mark Rowe
correspond to
2025-11-04Update FilterEdit and FilterTarget to preserve existing selectionsMark Rowe
The down and enter keys now preserve an existing selection in the associated list or table views, rather than unconditionally selecting or activating the first item.
2025-11-04Fix whitespace. (skip-ci)Brian Potchik
2025-10-23[KernelCache] Set segment permissions based on how XNU initially maps themMark Rowe
XNU maps kernel cache segments in with different permissions than the load commands indicate. For instance, `__DATA_CONST` is initially mapped as read-write before later being re-mapped as read-only. Treating it as read-only results in analysis falsely assuming that global variables cannot change. To work around this we maintain a mapping from segment name to initial permissions (i.e., most lax permissions) and favor them over permissions derived from the segment load command. Section semantics are also derived from the segment's permissions when the segment is present in the mapping. The mapping is based on the initial permissions established by `arm_vm_prot_init` within the XNU source.
2025-10-22[MachO] Fix GCC buildMark Rowe
Clang, MSVC and GCC all have different opinions about what's permissible with initialization from a braced initializer list.
2025-10-22[MachO] Fix Windows buildMark Rowe
2025-10-22[Mach-O] Refactor fixup chain parsingMark Rowe
The parsing of fix-up chains is moved out of `MachoView` and into its own class. It deals purely in terms of offsets into the Mach-O slice. `MachoView` translates those offsets to mapped addresses when needed. This is primarily aimed at fixing incorrect handling of pointer formats that use offsets where in some cases the relocations would be applied at incorrect addresses due to confusion between file offsets, Mach-O slice offsets, and VM offsets. It incidentally fixes addends from bind operations not being respected. These show up most frequently in C++ RTTI information.
2025-10-21better validation for malformed PE RSRC records and cleanup (fixes an ↵Jordan Wiens
infinite loop)
2025-10-21fix pe section debug loggingJordan Wiens
2025-10-18Add DecodeWithContext to LZFSETransform.Brian Potchik
2025-10-14Fix issue #7247WeiN76LQh
See https://github.com/Vector35/binaryninja-api/issues/7247#issuecomment-3392192797 for details.
2025-10-11Fix demo ifdefsJosh Ferrell
2025-10-10Add password prompting for encrypted containers in Container Browser.Brian Potchik
2025-10-07Remove old banners from DSC and KC pluginsMason Reed
Extra noise in the CMake configure step, much of the value from these has been removed after the refactor(s), e.g. metadata version is no longer used
2025-10-03Add zero-copy data pointer access for BinaryData objects for API-side ↵Brian Potchik
container transforms.
2025-10-03Update IMG4 transform to use DecodeWithContext and synthesize a filename for ↵Brian Potchik
the payload.
2025-10-02[MachO] Tweak handling of LC_FUNCTION_STARTSMark Rowe
`LC_FUNCTION_STARTS` includes both functions and jump tables. We want to avoid calling `AddFunctionForAnalysis` on jump tables since it can result in a function being created at the jump table's location with a bogus body. We already skip adding functions for entries in `LC_FUNCTION_STARTS` if the lifting of their first few bytes end up including `LLIL_UNDEF`. However, arm64 intentionally lifts `udf` instructions (i.e., opcodes in the Permanently Undefined range) to `LLIL_TRAP` in order to preserve the immediate portion of the instruction. To address this, `MachoView::IsValidFunctionStart` now returns false if the first lifted instruction is `LLIL_TRAP` in addition to when the lifting contains `LLIL_UNDEF`.
2025-10-01Cleanup for some container format handling.Brian Potchik
2025-09-30Initial support for opening container formats.Brian Potchik