summaryrefslogtreecommitdiff
path: root/view
AgeCommit message (Collapse)Author
2026-05-28[ELF] Fix MIPS symbol lookup hang with malformed symbol table entryMason Reed
If we hit a got entry outside the valid regions of memory we can safely assume the tables to be malformed.
2026-05-28[PE] Add a fast fail for malformed PE exception directory table sizeMason Reed
Fixes https://github.com/Vector35/binaryninja/issues/1472
2026-05-27Pull lambdas out into separate functions.Alexander Taylor
Addresses feedback from PR #8188.
2026-05-27Better handling for shared cache files in projects.Alexander Taylor
Closes #6630.
2026-05-27Improve UX when loading shared cache.Alexander Taylor
Closes #8020 and #8021.
2026-05-27Apply symbols and types to TMS320C6x ELFsBrandon Miller
2026-05-22Refactor calling conventions to support correct representation of structuresRusty Wagner
2026-05-19Fix leaks due to missing parenting of Qt objectsMark Rowe
2026-05-10[Rust] Refactor `binary_view` moduleMason Reed
- Remove the "viral" `BinaryViewExt` trait and its blanket impl - Split up the binary view type from the custom trait impl - Simplify and fix bugs regarding custom binary view initialization - Rewrite Minidump binary view example, parses the PE headers to create proper sections now - Add some extra documentation - Add unit test for custom binary view
2026-05-06Fix ARM/Thumb2 function platform for .gnu_debugdata symbols.Brian Potchik
2026-04-22Always show the triage view when opening a shared cache or kernel cacheMark Rowe
BinaryViewType gains a HasNoInitialContent function that views can use to suppress layout restoration when opening a file. The layout will still be restored when the view is loaded from a saved database. Fixes https://github.com/Vector35/binaryninja-api/issues/8083.
2026-04-22[PE] Do not create symbols for debugging metadata symbol entriesJosh Ferrell
2026-04-21[MachO] Improve library tracking for imported symbolsMark Rowe
2026-03-31Prevent a crash whenever readLEB128 is passed a nullptr0cyn
2026-03-30[DSC] Process Objective-C metadata when loading view from .bndbMark Rowe
The processed Objective-C metadata is not saved to the .bdnb. It must be recomputed when the view is loaded. Fixes https://github.com/Vector35/binaryninja-api/issues/8030.
2026-03-30This reverts commit 7228ba0b889765bc3474fbd5475870e24efc79ca.Brian Potchik
2026-03-23[MachO] Apply the correct calling convention for objc_retain_xN / ↵Mark Rowe
objc_release_xN The type library for the Objective-C runtime does not apply the custom calling conventions these functions use. Detect these functions when creating symbols for imported functions and apply the custom calling convention to them. Fixes https://github.com/Vector35/binaryninja-api/issues/8031.
2026-03-20Add option to disable dedicated Universal architecture picker and use ↵Brian Potchik
Container Browser Add the ui.files.universal.dedicatedPicker setting, allowing users to choose between the dedicated architecture picker dialog and the standard container browser for opening Universal (fat) Mach-O binaries. Previously the dedicated picker was always used with no way to opt out. Implementing this required restructuring how Universal binaries are handled during file open. The previous approach intercepted Universal binaries during container processing, bypassing the container browser's normal pipeline with dedicated routing logic. This tightly coupled Universal-specific behavior into the container system, prevented the container browser from handling Universal binaries natively, and introduced several bugs around exclusion settings, nested containers, and multi-child container hierarchies. Bug fixes: - The previous implementation always intercepted Universal binaries during container processing with its own routing logic, bypassing the container browser entirely. There was no way for the container browser to handle Universal binaries natively, even when that was the desired behavior. - Universal binaries inside multi-child containers were not detected. The previous implementation only traversed single-child paths in the container hierarchy, silently ignoring Universal binaries that appeared as siblings among multiple children. - Nested containers (e.g., archives) inside Universal slices were not handled. The previous implementation intercepted Universal binaries at the transform routing level before the container browser could perform recursive delayering. When the dedicated picker is disabled, the container browser now processes the full hierarchy including Universal slices and any containers within them. - Reverted incorrect IsInteractive to IsUIEnabled change in UniversalTransform. The previous change conflated headless mode with non-interactive processing. The UI can be enabled while still performing a non-interactive auto-open (e.g., container browser auto-resolving with a preferred architecture). The IsInteractive() flag captures the actual intent and enables the transform to produce only the preferred architecture child for non-interactive sessions, avoiding unnecessary BinaryView construction for all slices.
2026-03-16Refactor where architecture selection is performed for universal binariesMark Rowe
Responsibility for selecting an architecture is moved out of `UniversalTransform` and into a new `ContainerOpenRequest` class. `UniversalTransform` still handles architecture selection in headless operation (for now).
2026-03-06Implement DTPOFF64 and DTPMOD64 relocations.Alexander Taylor
Finally closes #5463.
2026-03-06Remove unused variable (skip-ci)Xusheng
2026-03-05Parse and display PE resource information in triage view. Fix ↵Xusheng
https://github.com/Vector35/binaryninja-api/issues/4052, fix https://github.com/Vector35/binaryninja-api/issues/5607
2026-01-27Fix MIPS64 relocation entry parsing.Alexander Taylor
2026-02-27[MachO] Ensure that weak bound symbols are not resolved to their import addressMark Rowe
Fixes https://github.com/Vector35/binaryninja-api/issues/7989. Also corrects an oversight from d92b3684 in handling of library ordinals >= 128.
2026-02-27[MachO] Fix incorrect handling of BIND_SPECIAL_DYLIB_*_LOOKUP in chained fixupsMark Rowe
These lookup modes are negative values that are encoded in the library ordinal, an unsigned field, of an import fixup entry. Incorrect sign extension when converting these ordinals back to signed values led to them being misinterpreted.
2026-02-24[DSC] Simplify file mapping to fix intermittent unrelocated pointersMark Rowe
The `FileAccessorCache`'s LRU eviction could discard a file's mapped data after slide info had already been applied to it. Future accesses to the file produced a fresh mapping, but failed to reapply the slide info. This could result in pointers not correctly being slid, such as in https://github.com/Vector35/binaryninja-api/issues/7689. The LRU cache existed to stay within OS file descriptor limits, since the old `MappedFile` held its fd open for the lifetime of the mapping. There's no real reason for it to hold the file descriptor open like this. Closing it after `mmap` is sufficient to avoid the file descriptor limits. `MappedFileRegion` replaces the combination of `FileAccessorCache`, `WeakFileAccessor`, and `MappedFileAccessor`. It closes the fd immediately after mmap, so all files can stay mapped without consuming descriptors, making the cache unnecessary. `MappedFileRegion` is owned directly by the `CacheEntry` for its full lifetime. Slide info is applied exactly once to each `MappedFileRegion`.
2026-02-23[KernelCache] Automatically unwrap kernel caches within a full IMG4 containerMark Rowe
This builds on the existing support for opening kernel caches directly from IM4P payload files, and allows opening macOS kernel caches directly from `/System/Volumes/Preboot/<apfs-uuid>/boot/<boot-manifest-hash>/System/Library/Caches/com.apple.kernelcaches/kernelcache`.
2026-02-23Revert "validation for zero sized symbol or string tables"Brian Potchik
This reverts commit bcc40473b3660005e83f51150bdc17ae177768dc.
2026-02-23Revert "guard against empty .interp and .dynamic"Brian Potchik
This reverts commit 4573354f23da495099983dac4b665988cd837ff5.
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.