summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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>`.
2025-08-27[ObjC] Fix parsing method type encoding strings for 32-bit platformsMark Rowe
Incorrect parsing of method type encoding strings was causing incorrect function types to be applied to Objective-C method implementations. In some cases this would result in confusion about which stack locations specific parameters resided at. `q`, `Q` and `d` were being mapped to `NSInteger`, `NSUInteger` and `CGFloat` respectively. While this works for 64-bit platforms, the type aliases refer to 32-bit types on 32-bit platforms. These type encodings are explicitly for 64-bit types. To address this `q`, `Q` and `d` are now mapped to `int64_t`, `uint64_t` and `double` respectively. `l` and `L` were incorrectly being interpreted as `int64_t` and `uint64_t`. While `long` is a 64-bit type on 64-bit Apple platforms, the `l` / `L` type encodings always refer to a 32-bit type. `S` was mistakenly being mapped to `uint8_t`. It is now `uint16_t` as intended.
2025-08-27[ObjC] Correctly decode block pointers in the method type encodingMark Rowe
The compiler represents block parameters as `@?` in the method type encoding string. We had been parsing this as two separate parameters (one `id` and one unknown type that was mapped to `void*`), resulting in some Objective-C method implementations incorrectly having an extra parameter. We cannot represent a Clang block (e.g., `void (^)()`) in the type system at present. Since these are Objective-C compatible types the simplest solution for now is to represent them as `id`.
2025-08-27Revise the documentation on how multiple symbols at the same address are handledMark Rowe
To avoid non-determinism and provide consistent behavior in all cases, now only confidence, symbol type, and name are considered when disambiguating multiple symbols at the same address. The previously documented behavior was not what was implemented. While recency was considered in some cases for disambiguating symbols at the same address, respecting it consistetly results in non-deterministic behavior when symbols are being added concurrently by multiple sources.
2025-08-27Revert "Clarify the documentation on how multiple symbols at the same ↵Mark Rowe
address are handled" This reverts commit 6293afcb4e10997838f94c38430feba9742bea75.
2025-08-27Clarify the documentation on how multiple symbols at the same address are ↵Mark Rowe
handled
2025-08-21Add support for automatically loading PDB/DWARF info from sibling files in ↵Josh Ferrell
projects
2025-08-20[Rust] Fix misc inconsistencies in `2ba29fd`Mason Reed
2025-08-20[Rust] Misc formatting fixesMason Reed
2025-08-20[Rust] Add project path file retrieval related functionsMason Reed
2025-08-20Deprecate Workflow::Instance in favor of Workflow::Get and Workflow::GetOrCreateMark Rowe
Calls to `Workflow::Instance` that were looking up a built-in workflow name are updated to use `Workflow::Get`. Others use `Workflow::GetOrCreate`.
2025-08-20Fix memory leak in LZFSE transform along with some other fixes.Brian Potchik
2025-08-19[ObjC] Only define metadata types if they don't already exist on the viewMark Rowe
This eliminates a significant amount of wasted work when loading multiple images containing Objective-C from a shared cache. The time taken to load 400 images from an iOS shared cache (with an analysis hold enabled) drops from eight minutes to around six minutes.
2025-08-19Add platform support to workflow eligibility.Brian Potchik
2025-08-18Fix loading local variables from DWARF in non-relocatable imagesJosh Ferrell
2025-08-18Add ability to rebase the current view through the UIContext.Brian Potchik
2025-08-18Fix disallowBranchToString in default abb.Benedikt Waibel
The setting should halt analysis of branch targets that fall within string references. Previous implementation looked up string references at branch source.