summaryrefslogtreecommitdiff
path: root/plugins
AgeCommit message (Collapse)Author
2026-02-23[Rust] Misc documentation and cleanupMason Reed
2026-02-23[BNTL] Misc improvementsMason Reed
2026-02-23[BNTL Utils] Fix misc clippy lintsMason Reed
2026-02-23Add BNTL utility pluginMason Reed
Allow users to easily create, diff, dump and validate type libraries Supports the following formats: - C header files (via core type parsers) - Binary files (collects exported and imported functions) - WinMD files (via `windows-metadata` crate) - Existing type library files (for easy fixups) - Apiset files (to resolve through forwarded windows dlls) Can be invoked as a regular plugin via UI commands or via CLI. Processing of type libraries inherently requires external linking, processing will automatically merge and deduplicate colliding type libraries so prefer to use inside a project or a directory and process all information (for a given platform) at once, rather than smaller invocations.
2026-02-23[Python] Add missing `TypeLibrary.duplicate` APIMason Reed
2026-02-23[Rust] Refactor `FileMetadata` file informationMason Reed
- Rename and retype `FileMetadata::filename` and make the assignment required to happen at time of construction. - Add `FileMetadata::display_name` which is only to be used for presentation purposes. - Add `FileMetadata::virtual_path` for containers. - Rename `FileMetadata::modified` to `FileMetadata::is_modified` to be more consistent across codebase. - Add some missing documentation. - Add `BinaryView::from_metadata` with accompanying documentation.
2026-02-23[Rust] Fix plugins being referenced in `cargo about` outputMason Reed
2026-02-22[WARP] Allow containers to be constructed programmatically (#7952)Mason Reed
2026-02-10Fix rpath of workflow_objc on macOSMark Rowe
2026-02-06Add regex and case sensitivity options to FilterEditJosh Ferrell
2026-02-06[DWARF Import] Do not wrap pointer types in named type referencesJosh Ferrell
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-13[RTTI] Improve virtual function discoveryMason Reed
- Allow extern functions to show up in a MSVC vtable - Fix https://github.com/Vector35/binaryninja-api/issues/7871 - Share code between itanium and msvc vft analysis, it is the same logic basically
2026-01-11[DWARF] Fix misc missing imports from `log` => `tracing`Mason Reed
2026-01-11[Rust] Update examples to use tracingMason Reed
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-08[DWARF Import] Fix potential hang when encountering some unhandled ↵Josh Ferrell
DW_AT_location variants for a DW_TAG_variable
2026-01-07Fix Windows buildXusheng
2026-01-01update copyrights for 2026Jordan Wiens
2025-12-29[PDB] Remove `QualifiedName` stateMason Reed
Apart of fixes for https://github.com/Vector35/binaryninja-api/issues/7827 This also makes vtable type names refer to base class vtable type name, this was the original behavior, but it should be revisited later.
2025-12-29Fix vtable type name parsingTruman Kilen
2025-12-20Fix many of the warnings that show up when compiling with GCC 15.2Mark Rowe
2025-12-15Fix PDB bitfield members importing with wrong offset (#7797)Truman Kilen
2025-12-15[WARP] Allow multi-round matching to resolve matching function dependenciesMason Reed
Fixes some possible nondeterminism due to parallelized matching
2025-12-15[WARP] Misc cleanupMason Reed
2025-12-15[WARP] Skip non-defined function symbols when collecting constraintsMason Reed
Reduces the size of constraints, reducing the size of chunks.
2025-12-15[Rust] Add `Function::defined_symbol` to use when getting the default ↵Mason Reed
function symbol is not warranted
2025-12-15[WARP] Deduplicate matched functions within the matcher implicitlyMason Reed
Avoids having to coalesce function objects from multiple sources when enumerating for matched functions.
2025-12-13[WARP] Fix `warp_headless` example not linking binaryninjacore (#7787)Mason Reed
Would result in binaryninjacore not being loaded: ``` dyld[19068]: Library not loaded: @rpath/libbinaryninjacore.1.dylib ``` Simply forgot to add build.rs to direct cargo at where to find the lib.
2025-12-11[ObjC] Don't override the core.function.metaAnalysis workflow descriptionMark Rowe
Fixes https://github.com/Vector35/binaryninja-api/issues/7770.
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-09[Rust] Fix misc formattingMason Reed
2025-12-09[DWARF Import] Do not link functions without addresses to externsJosh Ferrell
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-05[Rust] Do not clean out-of-tree dependencies for incremental buildsMason Reed
We already do this for a number of plugins / crates, this commit goes over the rest to make sure that they all do this. We keep cleaning binaryninjacore-sys as we want to generate the core bindings immediately on changes to binaryninjacore.h
2025-12-05[Rust] Fix misc clippy lints and warningsMason Reed
These are introduced after changing to Rust 1.91.1
2025-12-05[Rust] Bump pinned version to 1.91.1Mason Reed
2025-12-01[ObjC] Support removing reference counting operations in more places in the ↵Mark Rowe
shared cache Dataflow is now used to determine call targets when detecting calls to reference counting runtime functions. The previous approach of matching on specific instructions missed some patterns that are common in the shared cache.
2025-12-01[WARP] Consult type library function objects when matched function has no ↵Mason Reed
explicit type Helps with windows functions where we had previously defined the signature
2025-12-01[RTTI] Add more error checking for malformed PE binariesMason Reed
Fixes https://github.com/Vector35/binaryninja-api/issues/7705 RTTI processing with malformed sections can still cause prolonged analysis, in extreme cases like the binary in the issue needing the user to stop the RTTI processing once it gets to the Itanium RTTI pass. More work to be done, I would like to solve this with some section heuristics using the sections/segments entropy.
2025-12-01[RTTI] Skip MSVC VFT sweep if we never collected any class information in ↵Mason Reed
the previous pass
2025-11-28[DWARF] Fix loading Fat Mach-O debug filesJosh Ferrell
2025-11-25[WARP] Stop propagating skipped file error when processing archivesMason Reed
Should have the same behavior as doing it on a directory
2025-11-25[WARP] Fix leaking binary view on empty viewsMason Reed
Can be triggered by trying to run the processor on a file with no functions. Found this while doing misc performance testing on windows.
2025-11-19[DWARF] Improve logging when loading fails, remove extra bv creationJosh Ferrell
2025-11-19[DWARF] Fix incorrect error messages for empty lexical blocksJosh Ferrell
2025-11-19Allow loading supplementary dwarf debug info from path in .gnu_debugaltlinkJosh Ferrell
2025-11-16[DWARF] Fix crash in dwarf export with detached NTR vtable data variableMason Reed
Fixes https://github.com/Vector35/binaryninja-api/issues/7646 Also cleaned up and added some more context to the `NamedTypeReference::target` function.
2025-11-16[WARP] Fix unused rerun matcher checkbox when loading file on diskMason Reed