summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-09-18fix ldrsw lift to sign extend in certain encodingsyrp
2025-09-17[Python] Use IL-specific types in return type annotations for get_basic_block_attbodt
2025-09-17[ObjC] Propagate type information from calls to `[super init]`Mark Rowe
Calls to `objc_msgSendSuper2` with a selector in the `init` family are detected and their arguments are analyzed to determine the receiver class. A call type adjustment is added to update the return type. This handles most calls to `[super init]` from Objective-C code as the compiler generates a straightforward code sequence for these calls. Some calls from Swift are handled, but the Swift compiler generates more varied code so additional work is needed for complete coverage.
2025-09-17[Rust] Add TypeBuilder::set_child_typeMark Rowe
2025-09-17Fix a Rust formatting issueMark Rowe
2025-09-17[DSC] Ignore .a2s files when loading a shared cacheMark Rowe
These files are present alongside iOS 26 shared caches. Explicitly ignoring them avoids an error being logged to the console.
2025-09-17[DSC] Rework handling of .symbols files to be compatible with iOS 15Mark Rowe
In some iOS 15 caches, the .symbols file's mapping has an address of 0. This would cause it to be returned by `SharedCache::GetEntryContaining` and loaded into the view. The .symbols file contains the local symbol tables for images in the shared cache. It is not intended to be mapped into the same address space as the rest of the shared cache. `SharedCache` now tracks the symbols cache entry separately from other entries. A dedicated `VirtualMemory` region is used when accessing the data it contains. This could be a `FileAccessor`, but that would require additional changes within `SharedCacheMachOHeader`. `SharedCacheMachOProcessor` now directly accesses the local symbols cache entry rather than needing to search for it.
2025-09-17[DSC] Support relative direct selectors in older shared cache versionsMark Rowe
Prior to macOS 13 / iOS 16, the base offset to use for relative direct selector references within Objective-C message lists was stored within the `__TEXT,__objc_opt_ro` section of /usr/lib/libobjc.A.dylib.
2025-09-17[MachO] Populate external links with library imports for files in projectsMark Rowe
A mapping from imported symbol names to libraries is added to metadata. This is used to populate external links for files within projects, following the lead of `PEView`.
2025-09-15Deprecate some Rust MediumLevelILFunction methods in favor of Function ↵Josh Ferrell
implementations
2025-09-11Add Apple arm64 syscall calling convention to Apple's platformsmostobriv
2025-09-11Docs grammar and spelling fixesJosh Ferrell
2025-09-11Update docs around behavior of "Save As"Josh Ferrell
2025-09-11Added new IL attribute ILTransparentCopyHongyu Chen
2025-09-11add support for toggling views with tab in graph view tooJordan Wiens
2025-09-09Fix broken copyright in docs.Alexander Taylor
2025-09-09Python: Update docs for label / transformation functionsGlenn Smith
2025-09-09Docs: Better explanations of using IL labelsGlenn Smith
2025-09-09Unflatten example: use source labels betterGlenn Smith
2025-09-09IL Modifying docs: Add section on labels and GOTOsGlenn Smith
2025-09-09Fix and optimize triage view hash calculations for large files.Brian Potchik
2025-09-08remove duplicate documentation, resolves #7365Jordan Wiens
2025-09-08[aarch64] Enable Always and Never Branch patching for TBZ/TBNZ and CBZ/CBNZGalen Williamson
2025-09-07[Rust] Support pointer base types and offsetsLukBukkit
2025-09-05Ensure that auto call type adjustments don't overwrite user call type ↵Mark Rowe
adjustments of the same confidence A call type adjustment set via `SetAutoCallTypeAdjustment` will only take effect if any existing call type adjustment, automatic or user-defined, is of a lower confidence level. This ensures that user call type adjustments with full confidence will not be overridden by a workflow. Similar changes have been made to `SetAutoCallStackAdjustment`, `SetAutoInlinedDuringAnalysis` and the overload of `SetAutoCallRegisterStackAdjustment` that adjusts a single register stack.
2025-09-05[KernelCache] Pass the correct flags when adding an image's segmentsMark Rowe
Fixes https://github.com/Vector35/binaryninja-api/issues/7354.
2025-09-04Further improve feature map behavior when feature map pane is hiddenMark Rowe
2025-09-03Fix user stack var rust APIsJosh Ferrell
2025-09-03Add disassembly setting for block labelsMason Reed
2025-09-03Fix idb_import invalid offset in EoF hitrbran
2025-09-03Update idb_import idb-rs to 0.1.12rbran
2025-09-03[WARP] Improve matcher speed and add fast fail for pathological casesMason Reed
Improves the speed by moving chunks of functions into worker threads, because of how the functions and possible functions are gathered we have many locations to insert fast fails, which is also partially addressed by this commit (see `maximum_possible_functions`).
2025-09-03[WARP] Fix very large binaries from being prevented from creating WARP files ↵Mason Reed
of all the functions This was caused by the internal flatbuffer verifier reaching the max number of tables, this is fine and the solution is to split the large chunk into smaller ones, effectively creating more flatbuffer "views" of tables. This is fine from a performance perspective because we already have optimized for many small chunks (e.g. we have a lookup table stored next to each chunk). I left some comments for future improvements but this should be good now. Also alongside this change we improved generating performance by 2x on some pathological binaries.
2025-09-03[WARP] Do not show the report in the UI if file is very largeMason Reed
It will just end up freezing the UI for an unreasonable time, just open the generated report in a real web browser or text editor, QTextBrowser falls over and fixing it would be more effort than its worth.
2025-09-03[WARP] Only merge chunks in create from view command if an existing file was ↵Mason Reed
given Fixes the case where we are generating many smaller chunks for a given view and then unintentionally merging them back together, throwing away all data.
2025-09-03[WARP] Refactor variable retrieval to fix eager dependence on the functions MLILMason Reed
It is important that we only retrieve the medium-level IL if the function has any user-defined variables, otherwise, we will possibly be generating MLIL for no reason. For the above reason, we do a filter on user-defined variables first.
2025-09-03[WARP] Fix generating lifted IL when function GUID is already cachedMason Reed
We do not need to consult the lifted IL if we have already cached the function GUID in the function metadata
2025-09-02[SharedCache] Move plugin_rpath calls into BN_INTERNAL_BUILD blocksMark Rowe
These calls set the rpaths used for release builds of the dylibs using a macro that isn't available in the API repository. They are not necessary when building the shared cache plug-in outside of the context of the app.
2025-09-02Introduce a new define to control LogTrace rather than using _DEBUGMark Rowe
Defining `_DEBUG` changes which MSVC runtime library needs to be linked which breaks clients attempting to use the C++ API with `RelWithDebInfo`. To fix this we define a new private `BN_ENABLE_LOG_TRACE` macro and use that within log.cpp where it was previously using `_DEBUG`. Fixes https://github.com/Vector35/binaryninja-api/issues/7288.
2025-09-02Do not change symbol type when setting data variable nameJosh Ferrell
2025-09-01Add option to build rust api without linking to coreJosh Ferrell
2025-08-29Update docs for new theme colorsRusty Wagner
2025-08-29Add theme color for panes with keyboard focusRusty Wagner
2025-08-29Added additional theming for sidebar iconsRusty Wagner
2025-08-29Add a modal dialog option for cross referencesRusty Wagner
2025-08-29Highlight sidebar icon when the sidebar has focusRusty Wagner
2025-08-29Add a Pinned Cross References tab to hold pinned referencesRusty Wagner
2025-08-27Rewrite Obj-C workflow in RustMark Rowe
This is functionally equivalent to the previous workflow_objc, with the following changes: 1. It mutates the `core.function.metaAnalysis` workflow rather than registering a new named workflow. The activities now all check for the presence of the Objective-C metadata added by `ObjCProcessor` to determine whether they should do work, rather than relying on `MachoView` to override the function workflow when Objective-C metadata is present. This fixes https://github.com/Vector35/binaryninja-api/issues/6779. 2. The auto-inlining of `objc_msgSend` selector stub functions is performed in a separate activity from the processing of `objc_msgSend` call sites. The selector stub inlining activity is configured so that it does not run in `DSCView` as the shared cache needs different behavior for stub functions more generally that `SharedCacheWorkflow` already provides. 3. The way that types like `id` and `SEL` are referenced is fixed so that they show up as `id` rather than `objc_struct*`. This also replaces the Objective-C portion of the shared cache's workflow, and incorporates several bug fixes that had been applied to it but not the standalone Objective-C workflow.
2025-08-27[Rust] Fix a couple of oversights in the APIMark Rowe
1. Some SSA-specific functions are now implemented on `LowLevelILFunction<M, SSA>` rather than `Ref<LowLevelILFunction<M, SSA>>`. 2. A lifting helper for `LLIL_TAILCALL` is added to `LowLevelILFunction`. 3. `PossibleValueSet::ImportedAddressValue` now holds the value.
2025-08-27[Rust] Add LowLevelILFunction::{get_ssa_register_value, get_ssa_flag_value}Mark Rowe
These are available on `LowLevelILFunction<M, SSA>`.