summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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.
2025-08-15add note to show_message_box API about escapingJordan Wiens
2025-08-14[Mac] Consistently specify rpaths for plug-insMark Rowe
C++ plug-ins now consistently use the `plugin_rpath` or `ui_plugin_rpath` macros to ensure they have `SKIP_BUILD_RPATH` set when building on Mac (i.e., no `LC_RPATH` is added). Rust plug-ins have their build.rs updated to only specify `-Wl,-rpath` when building for Linux. It is not needed on macOS. On macOS we instead explicitly specify an `@rpath`-relative install name. This doesn't change any behavior, but avoids leaving an absolute path as the library's install name and is consistent with CMake's behavior for C++ plug-ins.
2025-08-14Add "highlight returns" render layer exampleGlenn Smith
2025-08-14[thumb2] silence parentheses-equality warnings when compiling generated ↵Galen Williamson
thumb2 disassembler
2025-08-14[armv7] add explicit signedness to conversions for scalar forms of VCVTGalen Williamson
2025-08-14[thumb2] improved disassembly and lifting of VCVT instruction for scalar ↵Galen Williamson
floating-point/integer cases
2025-08-14Corrected python docstring for LowLevelILFunction.float_convertGalen Williamson
[thumb2] removed redundant format suffixes from disassembly of VFP instruction [thumb2] Corrected lifting of VCVT instruction
2025-08-14[armv7] Add lifting for VCVT floating-point scalar variantsGalen Williamson
2025-08-14[thumb2] Updated thumb2 disassembler generator to use Tatsu-generated parser ↵Galen Williamson
instead of deprecated Grako
2025-08-14[armv7/thumb2] Fix Lifting for PC-relative vldr instruction does not align ↵Galen Williamson
PC when calculating address #6947 Updated thumb2 pcode parser used by disassembler generator to use Tatsu instead of deprecated Grako
2025-08-14Bump CURRENT_CORE_ABI_VERSION for GetFilePathInProjectAlexander Khosrowshahi
2025-08-14Expose GetFilePathInProject API for context menuAlexander Khosrowshahi
2025-08-14ELFView performance fix: avoid calling GetSectionsAt in the innerloopPeter LaFosse
When the section list gets large GetSectionsAt becomes quite slow instead the the whole list of sections outside the loop and just encour that hit once. It could probably be made even faster if we used an interval tree but then we have to pay the cost of building the tree which may be more nauanced
2025-08-14Ensure ELFView only add segments in a Begin/EndBulkAddSegments contextPeter LaFosse
2025-08-13[DSC] Add support for DriverKit shared cachesMark Rowe
2025-08-13[WARP] Use type-safe activity configurationMark Rowe
2025-08-13[SVD] Use type-safe activity configurationMark Rowe
2025-08-13[Rust] Add builder API for creating workflowsMark Rowe
`Workflow::new` is replaced by `Workflow::build` that returns a `Builder` type that supports the operations that mutate a workflow, such as registering activities. `Workflow::instance` is replaced by `Workflow::get` to make clear that it is intended to look up an existing workflow. `Workflow::cloned` is introduced to wrap the common pattern of retrieving an existing workflow and cloning it with the same name in order to modify it. `Builder::activity_before` / `Builder::activity_after` are introduced to wrap the common pattern of registering an activity then inserting it before or after a given activity.
2025-08-13[Rust] Add a type-safe builder API for Activity configurationMark Rowe
This makes it possible to see what structure the configuration takes and eliminates errors due to typos in JSON string literals.
2025-08-13[Rust] Fix warnings about names that are not snake caseMark Rowe
The names can simply be omitted since they are only mentioned in the declaration of a function pointer.
2025-08-13make type library questions headersJordan Wiens
2025-08-13Fix round and single-operand uses of COMBINE in Pseudo-CGalen Williamson
2025-08-12Docs: fix example descriptionsGlenn Smith