summaryrefslogtreecommitdiff
path: root/plugins/warp
AgeCommit message (Collapse)Author
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[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-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-16[WARP] Fix unused rerun matcher checkbox when loading file on diskMason Reed
2025-11-16[WARP] Fix container list not refreshing for dynamically added containersMason Reed
When running the command "WARP\\Load File" it will create a new container and add it to the global container list, we need to show this in the UI
2025-11-16[WARP] Explicitly create user signature directory on plugin initMason Reed
Fixes cases where the user signature directory for some reason has not been created, typically the directory will exist as the sigkit runner will also try and create the directory.
2025-11-05[WARP] Bump parser version to 1.0.1Mason Reed
2025-11-05[WARP] Demote server disconnect failure to warningMason Reed
Its not critical, but I still want it to be visible when it fails
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-11-04Update FilterEdit and FilterTarget to preserve existing selectionsMark Rowe
The down and enter keys now preserve an existing selection in the associated list or table views, rather than unconditionally selecting or activating the first item.
2025-11-04[WARP] Return existing source id when adding a file to a disk containerMason Reed
Removes the need to book keep on the caller side
2025-11-04[WARP] Use enterprise download provider when availableMason Reed
This allows connections to enterprise servers without requiring the default download provider to be switched in settings
2025-11-04[WARP] Update python example to fix adding a source to a "read-only" containerMason Reed
2025-11-04[WARP] Add example of batch processing using the headless Rust APIMason Reed
2025-10-22Add more plugins to freeMason Reed
Adds WARP, DWARF Import and Objective-C plugins to free
2025-10-22[WARP] Use download provider API instead of reqwestMason Reed
Unfortunately we cannot use reqwest because enterprise servers provide invalid certificates, so we must use the enterprise download provider to bypass certain certificate validations
2025-10-12[WARP] Fix misc sidebar navigation / focus event bugsMason Reed
- Fixed crash related to pending fetch callback for deleted view frame - Fixed focus not being kept for tables in the sidebar, as well as focus in general - Made matched function list navigation require a double click, to fix accidental navigation to other functions
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-11Fix demo ifdefsJosh Ferrell
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] Misc `cloned()` -> `copied()` fixupMason Reed
2025-10-07[WARP] Format UI pluginMason Reed
2025-10-07[WARP] Improved fetch dialog UXMason Reed
- Respects views fetch batch size and allowed tags - Saves and loads from the view settings instead of qt settings
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] Implicitly make newly added network sources writableMason Reed
This fixes an issue where the commit dialog would not fill in the newly added network source
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-07[WARP] Fix rendering of constraint matches in sidebarMason Reed
Also makes it so that constraints with an exact offset match are displayed differently.
2025-10-05fix missing rust importJordan Wiens
2025-10-03[WARP] Fix sidebar not refreshing after fetching data from serverMason Reed
2025-10-03[WARP] Push added functions and types to network containers cacheMason Reed
This makes them immediately available, and works around the issue of invalidating the entire cache to allow for retrieving of locally pushed data
2025-10-03[WARP] Add option to reset allowed tags in fetch dialogMason Reed
2025-10-03[WARP] Trim whitespace from server API keyMason Reed
2025-10-02Fix Rust formattingMark Rowe
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] 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-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-20[Rust] Misc formatting fixesMason Reed
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-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.