summaryrefslogtreecommitdiff
path: root/plugins/warp
AgeCommit message (Collapse)Author
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.
2025-08-08Update remaining projects to C++20Mark Rowe
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-30Add dependency tracking to the Python code generationMark Rowe
This ensures that the Python source files are only generated and copied into the output directory if inputs have changed, rather than being done unconditionally.
2025-07-30[CMake] Specify CONFIGURE_DEPENDS for all file(GLOB ..)Mark Rowe
This ensures that CMake detects when files that match the glob are added or removed.
2025-07-29Add support for declarative downstream dependencies to workflow system.Brian Potchik
2025-07-28[Rust] Misc formattingMason Reed
2025-07-28[WARP] Fix user annotations being overriden by WARP annotationsMason Reed
Fixes https://github.com/Vector35/binaryninja-api/issues/7194
2025-07-28[WARP] Update snapshots following regression fixMason Reed
Forgot to update these after the guid regression fix, there is no cause for alarm :)
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] Misc formatting fixesMason Reed
2025-07-21[WARP] Fix sidebar run matcher icon not resetting to idleMason Reed
Fixes https://github.com/Vector35/binaryninja-api/issues/7116
2025-07-21[WARP] Fix UI hanging when matched function sidebar updates with >50k ↵Mason Reed
matched functions One day I will get the QT incantations correct
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-21[WARP] Fix garbage jumps from being included in the variant instruction maskingMason Reed
We emit jumps at the end of some blocks that the architecture is not aware of, they are not actually apart of the functions instructions rather they are used in our analysis... somehow, I have not figured out what they are supposed to be used for but regardless, they should be ignored by WARP. This was just a case where the filtering was including jumps in non start instructions, where we actually wanted the opposite.