summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2024-11-04 02:02:02 -0500
committerMason Reed <mason@vector35.com>2024-11-04 02:02:02 -0500
commit2fb55af5d2bc5577fd51fbc9007d212485a1498e (patch)
tree23aeb47854bdbb8ca2eb73c6af4bfaa1dac7bf19 /plugins
parent1ef7e59d179ce137fa63ddca7351c078e6e66694 (diff)
WARP: Add README
Should help with people wanting to build sigem
Diffstat (limited to 'plugins')
-rw-r--r--plugins/warp/README.md44
1 files changed, 44 insertions, 0 deletions
diff --git a/plugins/warp/README.md b/plugins/warp/README.md
new file mode 100644
index 00000000..ed56fb31
--- /dev/null
+++ b/plugins/warp/README.md
@@ -0,0 +1,44 @@
+# warp_ninja
+
+Provides integration with [WARP](https://github.com/Vector35/warp), more specifically the function identification and associated type information.
+
+## Batch Processing
+
+`sigem` (see code at `src/bin/sigem.rs`) allows for batch processing binaries for signature generation.
+
+The only real "magic" here is the cross-linking of symbols in archives, this means that static libraries will have much finer constraint matching.
+
+Duplicate functions will be removed to save space, any input will always produce a single output signature file, if you want separate signature files, invoke individually.
+
+### Building
+
+> Assuming you have the following:
+> - A compatible Binary Ninja with headless usage (see [this documentation](https://docs.binary.ninja/dev/batch.html#batch-processing-and-other-automation-tips) for more information)
+> - Clang
+> - Rust (currently tested for 1.77.0)
+> - Set `DEP_BINARYNINJACORE_PATH` env variable to your install directory (see [here](https://docs.binary.ninja/guide/#binary-path) for more details)
+
+1. Clone this repository (`git clone https://github.com/Vector35/binaryninja-api/tree/dev`)
+2. Navigate to this plugin (`cd plugins/warp`)
+3. Build in release (`cargo build --release`)
+
+If compilation fails because it could not link against binaryninjacore than you should double-check you set `DEP_BINARYNINJACORE_PATH` correctly.
+
+Once it finishes you now will have a `sigem` binary in `target/release` for use.
+
+### Usage
+
+> Assuming you already have the `sigem` binary and a valid headless compatible Binary Ninja license.
+
+To create a signature file simply pass the input as the first positional argument to `sigem`:
+
+- A regular binary
+- An archive of binaries (`.a`, `.lib`, `.rlib`)
+- A directory of binaries
+- A BNDB
+
+Example: `./sigem mylibrary.a` or `./sigem ./all-libs/`
+
+Once its finished you should see a `.sbin` file next to the input file, this can be moved into the corresponding signature folder (see the [user docs](https://docs.binary.ninja/dev/annotation.html?h=install+path#signature-library) for more info)
+
+If you encounter malloc errors or instability try and adjust the number of parallel threads using `RAYON_NUM_THREADS` environment variable (ex. `RAYON_NUM_THREADS=1 ./sigem mylib.a`) \ No newline at end of file