summaryrefslogtreecommitdiff
path: root/plugins/warp/src/plugin
AgeCommit message (Collapse)Author
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-22[WARP] Allow containers to be constructed programmatically (#7952)Mason 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.
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] Deduplicate matched functions within the matcher implicitlyMason Reed
Avoids having to coalesce function objects from multiple sources when enumerating for matched functions.
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-11-16[WARP] Fix unused rerun matcher checkbox when loading file on diskMason Reed
2025-11-04[WARP] Add number of matched functions to the ending log message for matchingMason Reed
Fixes https://github.com/Vector35/binaryninja-api/issues/7266
2025-10-12[WARP] Improve UX surrounding removal of matched functionsMason Reed
- Adds Python API to remove matched function - Adds command + UI actions to remove matched function - Adds command + UI actions to ignore function in subsequent matches
2025-10-07[WARP] Add optional `analysis.warp.fetcher` activity to run fetch networked ↵Mason Reed
functions as apart of initial analysis This is off by default for the obvious reasons, we may also in the future want to expand upon this with a "matched view" such that the first step a user can take after loading is to validate what functions were matched and decide if they want to keep any of that data. This fetch happens as apart of the initial analysis, such that a headless script will not return from the load function until it has finished fetching. We may want to add a configurable timeout, and/or run the fetch out of band (let load return before fetching finishes).
2025-10-07[WARP] Move WARP settings to own setting groupMason Reed
This then allows us to group the settings into more understandable subgroups such as fetcher & matcher
2025-10-07[WARP] Let BNDB processing optionally skip analysis updatesMason Reed
This helps when you have analyzed large binaries and want to create signatures after-the-fact, skipping analysis. This can speed up the time to create large datasets drastically.
2025-10-07[Rust] Fix save file dialog not respecting default file pathMason Reed
Fixes https://github.com/Vector35/binaryninja-api/issues/7268
2025-10-03[WARP] Trim whitespace from server API keyMason Reed
2025-10-01[WARP] Enhanced network supportMason Reed
2025-09-29Fix Rust LowLevelILFunction owner function methodBrandon Miller
LowLevelILFunction objects can be constructed without a owner function. BNGetLowLevelILOwnerFunction can return NULL and must be checked before creating a Function object.
2025-09-15Deprecate some Rust MediumLevelILFunction methods in favor of Function ↵Josh Ferrell
implementations
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] 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] 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-08-13[WARP] 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-08[WARP] Move symbol and comment application to when matched functions are ↵Mason Reed
inserted Instead of applying symbols and comments in the applier step, we will do it when the matched function is identified. This has the side effect that if you turn off the apply activity names and comments will still be applied, more work to be done later.
2025-08-03[Rust] Misc formattingMason Reed
2025-07-29Add support for declarative downstream dependencies to workflow system.Brian Potchik
2025-07-28[WARP] Fix user annotations being overriden by WARP annotationsMason Reed
Fixes https://github.com/Vector35/binaryninja-api/issues/7194
2025-07-23[WARP] Generate function guids for mach-o objective-c binariesMason Reed
Previously we only added the warp function activities to the meta workflow, however objective-c plugin currently registers its own workflow that we must add the activities to as well. Fixes https://github.com/Vector35/binaryninja-api/issues/7172
2025-07-21[WARP] Add warning if trying to run matcher on database with no function ↵Mason Reed
guids generated Just a sanity check so we can alert the user, they can just reanalyze their functions and the guid will be constructed
2025-07-17[WARP] Construct a minimal version of the function object when user only ↵Mason Reed
wants the symbol We were previously constructing the function type, comments and variables to just throw away, wasting precious cpu cycles!
2025-07-17[WARP] Add adjustable thread pool for project signature creationMason Reed
Will also adjust the worker thread count so that there is enough for view destruction and what not. The default will be filled as well for the user.
2025-07-17[WARP] Stop showing the time it took to match if it is under a secondMason Reed
Just added noise to the logs, probably should do this for rtti as well
2025-07-17[WARP] Fix skipping warp files in projectsMason Reed
2025-07-15[WARP] Misc improvementsMason Reed
- Fix project file filter not blacklisting warp files - Fix project name not being used for default file save name - Prevent adding the same file to the available sources
2025-07-15[WARP] Add network containerMason Reed
This is going to be disabled by default on this upcoming stable, however users may enable it once we deploy the public server. The data from the server is done through `Container::fetch_functions` independent of the nonblocking function lookup functions. The sidebar has been updated to drive fetching so that when users navigate to a new function the fetcher will kick off. This fetcher operates on a separate thread, in the event of a user navigating to many functions before the current fetch has completed they all will be batched together in a single fetch. Networked container currently is limited to just function prototypes, other type information separate from the function object will be omitted.
2025-07-15[WARP] Add more options to creating signatures in projectsMason Reed
2025-07-15[WARP] Filter out LLIL_JUMP artifacts in lifted ILMason Reed
With the new instruction retrieval we are getting the instructions at the end of the lifted function which are not really apart of the function, but they share the address of the last ret/jump.
2025-07-06[WARP] Fix tag type creation marking the view as modifiedMason Reed
2025-07-06[WARP] Recover register variables and re-add tags to matched functionsMason Reed
2025-07-04[WARP] Fix possible skipped instructions when multiple IL expressions are ↵Mason Reed
appended for a given instruction
2025-07-04[WARP] Remove warning about missing sections for Raw viewMason Reed
2025-07-03Temporarily disable tags for WARP functions tag types are not thread safeMason Reed
Another set of bugs caused by undo and main thread actions, when will it end
2025-07-02WARP 1.0Mason Reed
- Added FFI - Added a sidebar to the UI - Added project, directory and archive processing - Added generic `Container` interface for extensible stores of WARP data - Fixed type references being constructed and pulled incorrectly - Added HTML, Markdown and JSON report generation - Made the WARP information added as an analysis activity - Flattened the signatures directory, the target information is stored in the file now - Matched function information is stored as function metadata in the database to reliably persist, alongside the function GUID - Split the matching out from the application, allowing you to match on a given function without applying it - Added more/better tests - Added support for binaries with multiple architectures, the functions are now also queried based off the Target, see WARP spec for more details - Greatly improved support for RISC architectures, see WARP spec for more details - Greatly improved UX when loading files after the fact, will now sanely rerun the matcher - Omitted the function type if not a user type, this greatly reduces file size - Improved support for functions that reference a page aligned base pointer, see WARP spec for more details - Removed some extra cache structures that were causing erroneous behavior - Fixed edge-case in LLIL traversal missing some constant pointers, this was a bug in the Rust bindings - Added support for function comments - Made long running tasks, such as generating, matching and loading signatures, cancellable where possible - Made function constraints more versatile, allowing for easy extensions in the future, see WARP spec for details - Added options to signature generation, such as what data to store, and whether to compress the data or not - Made all long running tasks prompt the user for required information before the task starts, allowing users to "set it and forget it" and not have to baby sit the finalization of the task - Myriad of other changes to the actual WARP format that impact performance, file size and general feature set, see https://github.com/Vector35/warp for more details
2025-07-02Add highlight render layer to WARPMason Reed
Highlights all variant instructions and blacklisted instructions Variant instructions are highlighted red, blacklisted will be orange.
2025-05-12[Rust] Remove `NonSSAVariant` bound from `LowLevelILFunction`Mason Reed
We don't do enough with the lifted il != non lifted il to justify the bound. This makes modifying IL much less work as the historical lifted il bound is gone.
2025-05-12[Rust] Reduce usage of `IntoCStr` in function signaturesMason Reed
This is being done to reduce complexity in function signatures, specifically many of the strings we are passing ultimately should be new types themselves instead of "just strings", things such as type ids. Another place which was confusing was dealing with filesystem related APIs, this commit turns most of those params into a stricter `Path` type. This is bringing the rust api more inline with both python and C++, where the wrapper eagerly converts the string into the languages standard string type. Special consideration must be made for symbols or other possible non utf-8 objects. This commit will be followed up with one that adds the `IntoCStr` bound on API's we want to keep as invalid utf-8 so we can for example, get section by name on a section with invalid utf-8.
2025-05-12[Rust] More cleanup regarding `BnString`Mason Reed
- Removed `to_string` shortcut from `BnString`. - Misc formatting
2025-05-12[Rust] Return `String` instead of `BnString` for cases where lossy ↵Mason Reed
conversion can be tolerated Still need to go and audit all usage, but realistically the most important places to give the user control are with symbols, where the data can come from non utf8 sources This is still incomplete, I just looked for usage of -> BnString so any other variant was omitted.