diff --git a/.github/ISSUE_TEMPLATE/native-plugin.yaml b/.github/ISSUE_TEMPLATE/native-plugin.yaml new file mode 100644 index 0000000..1a1d8bb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/native-plugin.yaml @@ -0,0 +1,23 @@ +name: New (NATIVE) Plugin +description: For C, C++, or Rust plugins. +title: "[New NATIVE Plugin]: " +labels: ["new native plugin"] +body: + - type: markdown + attributes: + value: | + Thanks for writing a new plugin and submiting it! + - type: textarea + id: plugin-description + attributes: + label: Plugin Description + description: What does your plugin do? + validations: + required: false + - type: input + id: url + attributes: + label: Plugin Repository URL + value: "Repo URL: " + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/new-plugin.yaml b/.github/ISSUE_TEMPLATE/new-plugin.yaml new file mode 100644 index 0000000..9a5d898 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/new-plugin.yaml @@ -0,0 +1,39 @@ +name: New Plugin +description: Add a new plugin to the repository +title: "[New Plugin]: " +labels: ["new plugin"] +body: + - type: markdown + attributes: + value: | + Thanks for writing a new plugin and submiting it! + - type: textarea + id: plugin-description + attributes: + label: Plugin Description + description: What does your plugin do? + validations: + required: false + - type: input + id: url + attributes: + label: Plugin Repository URL + value: "Repo URL: " + validations: + required: true + - type: checkboxes + id: properrepo + attributes: + label: Real Release + description: Yes, I've read the instructions, especially the part about creating an [actual release](https://binary.ninja/2019/07/04/plugin-manager-2.0.html#5-create-a-release) and creating the tag. I either used the UI, or the `hub` command to create a _real_ release. + options: + - label: I have made a real release + required: true + - type: checkboxes + id: validation + attributes: + label: Creation and Validation of `plugin.json` + description: I've created a `plugin.json` file and validated it with the [`generate_plugininfo.py`](https://github.com/Vector35/community-plugins/blob/master/generate_plugininfo.py) script (you can run `./generate_plugininfo.py -v PATH/TO/plugin.json`). + options: + - label: I have created a valid `plugin.json` file + required: true diff --git a/.github/ISSUE_TEMPLATE/other-issue.md b/.github/ISSUE_TEMPLATE/other-issue.md new file mode 100644 index 0000000..340893a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/other-issue.md @@ -0,0 +1,10 @@ +--- +name: Other Issue +about: Any other Issue +title: '' +labels: '' +assignees: '' + +--- + +Describe your issue here: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..9a211f9 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,41 @@ +name: Update Plugin Repository +on: + workflow_dispatch: + inputs: + message: + description: 'automatically update readme and plugin.json based on updates and latest listing' + required: true + +jobs: + run: + name: Update Plugins.json + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Install dependencies + run: pip install -r requirements.txt + + - name: Run Generator + env: + URL_SHORTENER: ${{ secrets.URL_SHORTENER }} + run: python3 generate_index.py ${{ secrets.M_GITHUB_TOKEN }} + + - name: Commit changes + uses: EndBug/add-and-commit@v9 + with: + author_name: ${{ github.actor }} + author_email: pluginmanager@vector35.com + message: ${{ inputs.message }} + add: '["*.json", "*.md"]' + + - name: Report Status + if: always() + uses: ravsamhq/notify-slack-action@v1 + with: + status: ${{ job.status }} + notify_when: 'failure' + notification_title: '{workflow} has {status_message}' + env: + SLACK_WEBHOOK_URL: ${{ secrets.ACTION_MONITORING_SLACK }} diff --git a/.github/workflows/validatenewrepo.yml b/.github/workflows/validatenewrepo.yml new file mode 100644 index 0000000..0b3bcd9 --- /dev/null +++ b/.github/workflows/validatenewrepo.yml @@ -0,0 +1,59 @@ +name: Validate New Plugin Repository +on: + issues: + types: [opened] +jobs: + run: + name: ValidateRepo + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Check Issue Label + id: check-label + uses: actions/github-script@v5 + with: + script: | + const labels = context.payload.issue.labels; + const hasLabel = labels.some(label => label.name === 'new plugin'); + if (!hasLabel) { + core.setOutput('skipRemainingSteps', 'true'); + } + + - name: Install dependencies + if: steps.check-label.outputs.skipRemainingSteps != 'true' + run: pip install -r requirements.txt + + - name: Run Validator + if: steps.check-label.outputs.skipRemainingSteps != 'true' + run: python3 validate_json.py ${{ secrets.M_GITHUB_TOKEN }} + env: + ISSUE_CONTENT: ${{ github.event.issue.body }} + + - name: Comment + if: (steps.check-label.outputs.skipRemainingSteps != 'true') && (failure()) + uses: actions/github-script@v7 + with: + script: | + await github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `Sorry, this repository does not appear to have a valid plugin.json. + + Please ensure it is valid JSON and that you have created an actual release. + ` + }) + await github.rest.issues.addLabels({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ['invalid'] + }) + await github.rest.issues.update({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + state: 'closed' + }) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f836980 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +mirror/ diff --git a/.gitmodules b/.gitmodules index 88fb35d..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,213 +0,0 @@ -[submodule "plugins/binaryninja-bookmarks"] - path = plugins/binaryninja-bookmarks - url = https://github.com/joshwatson/binaryninja-bookmarks.git -[submodule "plugins/binaryninja-msp430"] - path = plugins/binaryninja-msp430 - url = https://github.com/joshwatson/binaryninja-msp430.git -[submodule "plugins/binaryninja-radare2"] - path = plugins/binaryninja-radare2 - url = https://github.com/Manouchehri/binaryninja-radare2.git -[submodule "plugins/binaryninja-spu"] - path = plugins/binaryninja-spu - url = https://github.com/bambu/binaryninja-spu.git -[submodule "plugins/binja-avr"] - path = plugins/binja-avr - url = https://github.com/cah011/binja-avr.git -[submodule "plugins/binjatron"] - path = plugins/binjatron - url = https://github.com/snare/binjatron.git -[submodule "plugins/binoculars"] - path = plugins/binoculars - url = https://github.com/rick2600/binoculars.git -[submodule "plugins/easypatch"] - path = plugins/easypatch - url = https://github.com/walterschell/easypatch.git -[submodule "plugins/liil"] - path = plugins/liil - url = https://github.com/ColdHeat/liil.git -[submodule "plugins/x64dbgbinja"] - path = plugins/x64dbgbinja - url = https://github.com/x64dbg/x64dbgbinja.git -[submodule "plugins/binaryninja-microcorruption"] - path = plugins/binaryninja-microcorruption - url = https://github.com/joshwatson/binaryninja-microcorruption -[submodule "plugins/linsweep"] - path = plugins/linsweep - url = https://github.com/lstotch/linsweep -[submodule "plugins/binaryninja-machosymbols"] - path = plugins/binaryninja-machosymbols - url = https://github.com/bambu/binaryninja-machosymbols -[submodule "plugins/binaryninja-vmndh"] - path = plugins/binaryninja-vmndh - url = https://github.com/verylazyguy/binaryninja-vmndh -[submodule "plugins/bnhook"] - path = plugins/bnhook - url = https://github.com/orndorffgrant/bnhook -[submodule "plugins/nampa"] - path = plugins/nampa - url = https://github.com/kenoph/nampa -[submodule "plugins/Annotator"] - path = plugins/Annotator - url = https://github.com/carstein/Annotator -[submodule "plugins/Syscaller"] - path = plugins/Syscaller - url = https://github.com/carstein/Syscaller -[submodule "plugins/i8051"] - path = plugins/i8051 - url = https://github.com/amtal/i8051 -[submodule "plugins/binja_explain_instruction"] - path = plugins/binja_explain_instruction - url = https://github.com/ehennenfent/binja_explain_instruction -[submodule "plugins/binja_dynamics"] - path = plugins/binja_dynamics - url = https://github.com/ehennenfent/binja_dynamics -[submodule "plugins/binja_arch_ref"] - path = plugins/binja_arch_ref - url = https://github.com/ehennenfent/binja_arch_ref -[submodule "plugins/binja_sensei"] - path = plugins/binja_sensei - url = https://github.com/ehennenfent/binja_sensei -[submodule "plugins/binaryninja-pasticciotto"] - path = plugins/binaryninja-pasticciotto - url = https://github.com/peperunas/binaryninja-pasticciotto -[submodule "plugins/binja-msdn"] - path = plugins/binja-msdn - url = https://github.com/schmotzle/binja-msdn -[submodule "plugins/binaryninja-frida"] - path = plugins/binaryninja-frida - url = https://github.com/chame1eon/binaryninja-frida -[submodule "plugins/bnil-graph"] - path = plugins/bnil-graph - url = https://github.com/withzombies/bnil-graph -[submodule "plugins/ripr"] - path = plugins/ripr - url = https://github.com/pbiernat/ripr -[submodule "plugins/llvm-deobfuscator"] - path = plugins/llvm-deobfuscator - url = https://github.com/RPISEC/llvm-deobfuscator -[submodule "plugins/trickledown_vars"] - path = plugins/trickledown_vars - url = https://github.com/toolCHAINZ/trickledown_vars -[submodule "plugins/binja_function_abi"] - path = plugins/binja_function_abi - url = https://github.com/whitequark/binja_function_abi -[submodule "plugins/binja_itanium_cxx_abi"] - path = plugins/binja_itanium_cxx_abi - url = https://github.com/whitequark/binja_itanium_cxx_abi -[submodule "plugins/binaryninja-lc3"] - path = plugins/binaryninja-lc3 - url = https://github.com/kapaw/binaryninja-lc3 -[submodule "plugins/binjago"] - path = plugins/binjago - url = https://github.com/zznop/binjago -[submodule "plugins/binja_sibyl"] - path = plugins/binja_sibyl - url = https://github.com/kenoph/binja_sibyl -[submodule "plugins/binaryninja_avr"] - path = plugins/binaryninja_avr - url = https://github.com/fluxchief/binaryninja_avr -[submodule "plugins/bnpy"] - path = plugins/bnpy - url = https://github.com/extremecoders-re/bnpy -[submodule "plugins/xref_call_finder"] - path = plugins/xref_call_finder - url = https://github.com/rick2600/xref_call_finder -[submodule "plugins/find_and_nop"] - path = plugins/find_and_nop - url = https://github.com/made0x78/find_and_nop -[submodule "plugins/binaryninja-search"] - path = plugins/binaryninja-search - url = https://github.com/6e726d/binaryninja-search -[submodule "plugins/WinAPI-Annotator"] - path = plugins/WinAPI-Annotator - url = https://github.com/levyjm/WinAPI-Annotator -[submodule "plugins/Keyhole"] - path = plugins/Keyhole - url = https://github.com/carstein/Keyhole -[submodule "plugins/binaryninja-clipper"] - path = plugins/binaryninja-clipper - url = https://github.com/pmackinlay/binaryninja-clipper -[submodule "plugins/retdec_offline"] - path = plugins/retdec_offline - url = https://github.com/ThisIsSecurity/retdec_offline -[submodule "plugins/djumpo_unchained"] - path = plugins/djumpo_unchained - url = https://github.com/ThisIsSecurity/djumpo_unchained -[submodule "plugins/cryptoscan"] - path = plugins/cryptoscan - url = https://github.com/Rami114/cryptoscan -[submodule "plugins/binja-secret"] - path = plugins/binja-secret - url = https://github.com/iGio90/binja-secret -[submodule "plugins/binja-msvc"] - path = plugins/binja-msvc - url = https://github.com/DatBrick/binja-msvc -[submodule "plugins/binja-ipython"] - path = plugins/binja-ipython - url = https://github.com/ernw/binja-ipython -[submodule "plugins/binja-i8086"] - path = plugins/binja-i8086 - url = https://github.com/whitequark/binja-i8086 -[submodule "plugins/binaryninja-offsetview"] - path = plugins/binaryninja-offsetview - url = https://github.com/tchebb/binaryninja-offsetview -[submodule "plugins/binja-clipboard"] - path = plugins/binja-clipboard - url = https://github.com/bkerler/binja-clipboard -[submodule "plugins/binja_JSON_Plugin"] - path = plugins/binja_JSON_Plugin - url = https://github.com/mozark24/binja_JSON_Plugin -[submodule "plugins/binaryninja-mcs48"] - path = plugins/binaryninja-mcs48 - url = https://github.com/pmackinlay/binaryninja-mcs48 -[submodule "plugins/binja-psx"] - path = plugins/binja-psx - url = https://github.com/PeterBortas/binja-psx -[submodule "plugins/Binja-SigMaker"] - path = plugins/Binja-SigMaker - url = https://github.com/Alex3434/Binja-SigMaker -[submodule "plugins/idc_importer"] - path = plugins/idc_importer - url = https://github.com/Cryptogenic/idc_importer -[submodule "plugins/similarninja"] - path = plugins/similarninja - url = https://github.com/v-p-b/similarninja -[submodule "plugins/binaryninja-vle"] - path = plugins/binaryninja-vle - url = https://github.com/ehntoo/binaryninja-vle -[submodule "plugins/binaryninja-v850"] - path = plugins/binaryninja-v850 - url = https://github.com/ehntoo/binaryninja-v850 -[submodule "plugins/binja-list-symbols"] - path = plugins/binja-list-symbols - url = https://github.com/sheadovas/binja-list-symbols -[submodule "plugins/bn-genesis"] - path = plugins/bn-genesis - url = https://github.com/zznop/bn-genesis -[submodule "plugins/bnGB"] - path = plugins/bnGB - url = https://github.com/icecr4ck/bnGB -[submodule "plugins/structor"] - path = plugins/structor - url = https://github.com/toolCHAINZ/structor -[submodule "plugins/annotate"] - path = plugins/annotate - url = https://github.com/bkerler/annotate -[submodule "plugins/peutils"] - path = plugins/peutils - url = https://github.com/404d/peutils -[submodule "plugins/syms2elf"] - path = plugins/syms2elf - url = https://github.com/sheadovas/syms2elf -[submodule "plugins/jump-table-branch-editor"] - path = plugins/jump-table-branch-editor - url = https://github.com/Vasco-jofra/jump-table-branch-editor -[submodule "plugins/Binja4J"] - path = plugins/Binja4J - url = https://github.com/CySHell/Binja4J -[submodule "plugins/bncov"] - path = plugins/bncov - url = https://github.com/ForAllSecure/bncov -[submodule "plugins/binaryninja-svd"] - path = plugins/binaryninja-svd - url = https://github.com/ehntoo/binaryninja-svd/ diff --git a/INFO b/INFO new file mode 100644 index 0000000..5f6e037 --- /dev/null +++ b/INFO @@ -0,0 +1,53 @@ +# Binary Ninja Community Plugins + +Plugins in this repository are provided by the community. Vector 35, Inc. makes no guarantees to the quality, safety or efficacy of the plugins herein. + +## Official Plugins + +This repository tracks third-party plugins, but many official plugins are provided by Vector 35 that offer additional functionality: + + - [Example Plugins](https://github.com/Vector35/binaryninja-api/tree/dev/python/examples) are included with all installs of Binary Ninja and can [be installed](https://github.com/Vector35/binaryninja-api/tree/dev/python/examples#loading-plugins) from there + - [Official Samples](https://github.com/Vector35/official-plugins) a fully formed repository of official plugins + - [Sample Plugin](https://github.com/Vector35/sample_plugin) if you're looking for a template to build a new plugin from + +## Installing Plugins + +To install plugins, you can either use the Plugin Manager in the UI or clone the repositories linked here in into your [plugin folder](https://github.com/Vector35/binaryninja-api/tree/dev/python/examples#loading-plugins). + +## Contributing Plugins + + 1. Create a new repository (Optionally, just copy it from the [sample plugin](https://github.com/Vector35/sample_plugin)) + 1. Fill out a [`plugin.json`](https://github.com/Vector35/sample_plugin/blob/master/plugin.json). Optionally you can use the `generate_plugininfo.py -p` to interactively walk you through setting the required fields. The `plugin.json` must pass all the checks when run through `generate_plugininfo.py -v plugin.json`. `generate_plugininfo.py` can also generate your `README.md` and your `LICENSE` file with the `-r`, `-l`, or `-a` (all) options. Below is a list of the required and recommended fields. + 1. Create and push a git tag with the version of your plugin (e.g. `v1.1`). Create a release, optionally attaching build artifacts as required. We recommend using our [release helper](https://github.com/Vector35/release_helper) which simplifies this process. + 1. File an [issue](https://github.com/Vector35/community-plugins/issues) with a link to your repo. + 1. To update your plugin, simply do a new release! For future updates we'll automatically detect and add the new release to the plugin manager for you! (This previously was a manual step that has been since automated) + +### Required Fields + +To be displayed in the plugin loader, your `plugin.json` MUST have the following fields: + + - `pluginmetadataversion` - The current version is the integer `2` + - `name` - Good names do not use "Binary Ninja" or "Binja" neither do they use the words "plugin" or "extension". So instead of "Binja 6502 Architecture Plugin" simply use "6502 Architecture" + - `author` - Your name, handle, or company name. + - `api` - A list of supported architectures. Currently only `python3` is supported. + - `license` - A json object with `name` and `text` keys. + - `description` - This is a short (<50 character) description of the plugin. + - `version` - Version string + - `minimumBinaryNinjaVersion` - An integer _build number_ so instead of `1.1.555` use `555`. + - `platforms` - A list of strings one for each supported platform. Valid platforms are `Darwin`, `Linux`, and `Windows` + +### Recommended Fields + + - `longdescription` - A longer Markdown formatted description of the plugin including hyperlinks and images as needed. This will be shown in the plugin preview in the plugin manager and images are highly recommended. If not specified or if empty, the [README file](https://github.com/Vector35/community-plugins/blob/master/generate_index.py#L104) from your repository will be automatically used instead. + - `type` - A list of strings of the following types: `core`, `ui`, `architecture`, `binaryview`, and `helper`. + - `helper` - Plugin that adds some base functionality to Binary Ninja. Most plugins will be of this type. + - `ui` - The plugin extends the UI is some way. + - `architecture` - The plugin adds an architecture (e.g. `x86`, `ARM`, `MIPS`). + - `binaryview` - The plugin adds a new BinaryView (e.g. `PE`, `MachO`, `ELF`). + - `core` - Plugin that extends the core's analysis. Your plugin probably isn't one of these. + - `sync` - A plugin that synchronizes data with an external tool. + - `installinstructions` - A json object with keys for each supported platform listed in `platforms` and text Markdown formatted. + +## License + +Note that content contained in the root of this repository itself is Copyright 2016-2024, Vector 35, Inc. and [available](LICENSE) under an MIT license, but each individual plugin may be released under a different license. diff --git a/LICENSE b/LICENSE index 8913a8e..9ad781d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2016 VECTOR 35 +Copyright (c) 2016-2024 VECTOR 35 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 43b385c..7141903 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,189 @@ -# Binary Ninja Community Plugins - -Repository to track Binary Ninja Community Plugins, Themes, and other related tools - -## Plugins - -Plugins in this repository are provided by the community. Vector 35 LLC makes no guarantees to the quality, safety or efficacy of the plugins herein. - -### Installing Plugins - -To install plugins, you can either clone this repository, or clone the specific plugin you are interested in into your [plugin folder](https://github.com/Vector35/binaryninja-api/tree/dev/python/examples#loading-plugins). - -### Contributing Plugins - - 1. Create a new repository (Optionally, just copy it from the [sample plugin](https://github.com/Vector35/sample_plugin)) - 1. Fill out a [`plugin.json`](https://github.com/Vector35/sample_plugin/blob/master/plugin.json) - 1. (Optional) Run `generate-readme.md` to update your readme and license - 1. File an [issue](https://github.com/Vector35/community-plugins/issues) with a link to your repo. Please note that pull requests are not supported at this time. - -#### Required Fields - -To be displayed in the plugin loader, your `plugin.json` MUST have the following fields: - - - `name` - - `author` - - `api` - - `license['name']` - - `description` - - `version` - -All other fields are optional. - -## License - -Note that content contained in the root of this repository itself is Copyright 2016, Vector 35 LLC and [available](LICENSE) under an MIT license, but each individual plugin may be released under a different license. +| Name|Author|Description|Last Updated|Type|API|License | +| ----|------|-----------|------------|----|---|------- | +| [0CD](https://github.com/0xb0bb/0CD)|b0bb|Quality of life utilities for obsessive compulsive CTF enthusiasts.|2022-02-17|helper|python3|MIT | +| [AMD-SP/PSP Loader](https://github.com/dayzerosec/AMD-SP-Loader)|dayzerosec|Loader for AMD-SP or PSP firmware binaries.|2023-01-29|binaryview|python3|MIT | +| [Add GoReSym Info](https://github.com/xusheng6/binja-GoReSym)|Xusheng|Add information recovered by tool GoReSym into the binary view|2024-07-18|helper|python3|MIT | +| [Add XFG Xref](https://github.com/xusheng6/add-xfg-xref)|Xusheng|Add xref from caller to callee based on XFG hashes|2023-06-11|helper|python3|MIT | +| [Annotate Functions](https://github.com/bkerler/annotate)|B.Kerler with code from John Levy and @carstein|A plugin that annotates function arguments.|2019-07-09|binaryview|python2, python3|MIT | +| [Apple Blocks](https://github.com/droe/binja-blocks)|Daniel Roethlisberger|Annotation of Apple libclosure blocks.|2025-08-24|helper|python3|MIT | +| [Ariadne](https://github.com/seeinglogic/ariadne)|Mark Griffin (@seeinglogic)|Browser-based interactive graph for viewing callgraph, static analysis, and coverage information|2025-02-15|ui, helper|python3|MIT | +| [Auto Enum](https://github.com/junron/auto-enum)|Lam Jun Rong|Automatically set enums for standard functions|2025-01-16|helper|python3|MIT | +| [Auto Utils](https://github.com/404d/autoutils)|404'd|Various auto analysis utilities|2020-12-12|helper|python3|MIT | +| [BD Viewer](https://github.com/PistonMiner/binaryninja-bindiff-viewer)|Linus S. (aka PistonMiner)|View BinDiff results and port symbols|2022-07-26|ui, helper|python3|MIT | +| [BN Inspectors](https://github.com/CouleeApps/bn_inspectors)|Glenn Smith|Sidebar inspectors for debugging Binary Ninja itself|2025-01-02|ui, helper|python3|MIT | +| [BN KConfig Recover](https://github.com/zznop/bn-kconfig-recover)|Brandon Miller|Recover Linux kernel build configurations|2022-01-14|helper|python3|MIT | +| [BNHook](https://github.com/jeffli678/bnhook)|Grant Orndorff|Insert custom hooks|2021-03-29|ui, core|python2, python3|MIT | +| [BNIL Instruction Graph](https://github.com/withzombies/bnil-graph)|Ryan Stortz (@withzombies)|A plugin to graph BNIL instruction trees|2023-07-19|ui|python2, python3|Apache-2.0 | +| [Banjo](https://github.com/ivision-research/banjo)|Austin Ralls|Adds support for Android Dex files|2024-04-26|architecture, binaryview|python3|MIT | +| [BinAssist](https://github.com/jtang613/BinAssist)|Jason Tang|A plugin that provides LLM helpers to explain code and assist in RE.|2026-02-01|ui, helper|python3|MIT | +| [BinAssistMCP](https://github.com/jtang613/BinAssistMCP)|Jason Tang|Comprehensive MCP server for Binary Ninja with dual transport support (SSE and STDIO)|2026-01-31|binaryview, helper, ui|python3|MIT | +| [BinSync](https://github.com/binsync/binsync)|BinSync Team|Adds support for cross-decompiler collab in the BinSync supported decompilers.|2026-01-30|sync|python3|BSD 2-clause | +| [BinYars](https://github.com/xorhex/BinYars-SideWidget)|xorhex|BinYars provides YARA-X scanning ability and a rule editor. When running commerical or higher Binary Ninja edition, it can sort files in the project view.|2026-01-19|helper|python3, rust|MIT | +| [Binary Ninja MCP](https://github.com/fosdickio/binary_ninja_mcp)|fosdick.io|A Binary Ninja plugin that provides a MCP (Model Context Protocol) server with HTTP endpoints for LLM integration.|2025-12-16|architecture, binaryview, core, helper|python3|GPL-3.0 | +| [Binary Ninja Ollama](https://github.com/ahaggard2013/binaryninja-ollama)|Austin Haggard|Binary Ninja Ollama integrates with your own locally hosted ollama server to rename functions and variables with AI|2024-10-09|architecture, binaryview, core, helper, ui|python3|MIT | +| [Binary Ninja Type Manager](https://github.com/Ayrx/binja-typemanager)|Terry Chia|Manage custom type libraries.|2021-01-30|helper|python3|MIT | +| [Binary Ninja Wrapped](https://github.com/psifertex/bnwrap)|Jordan Wiens|Shows statistics about your Binary Ninja usage. Also includes a 'Time Wasted Debugging' timer widget for the status bar (disabled by default, enable in settings).|2025-12-07|ui|python3|MIT | +| [Binja IPython console](https://github.com/skr0x1c0/ipybinja)|skr0x1c0|IPython console widget for Binary Ninja|2022-12-12|binaryview, core, helper, ui|python3|MIT | +| [Binja Missing Link](https://github.com/FFRI/binja-missinglink)|Koh M. Nakagawa|Binary Ninja plugin that fills missing indirect branch information|2025-10-20|core, helper|python3|Apache version 2.0 | +| [Binja Snapshot Manager](https://github.com/d0mnik/binja_snapshot_manager)|d0minik|Binary Ninja plugin to take and manage database snapshots|2024-10-30|helper|python3|AGPL-3.0 | +| [BinjaExportTox64dbg](https://github.com/moval0x1/BinjaExportTox64dbg)|moval0x1|Export notations from Binja to x64dbg|2024-02-20|binaryview|python3|MIT | +| [Blackfin Architecture Plugin](https://github.com/0bs3n/arch-blackfin)|sen|A Binary Ninja architecture plugin for the AD Blackfin architecture|2022-05-28|architecture|python3|GPL-3.0 | +| [Call Shellcode](https://github.com/lwerdna/call_shellcode)|lwerdna|Add "call shellcode" menu option which executes highlighted bytes.|2021-04-03|helper|python2, python3|Unlicense | +| [Callgraph](https://github.com/psifertex/callgraph)|Josh Watson / Jordan Wiens|Callgraph generator for called or calling funcs|2022-04-20|ui|python3|MIT | +| [Calltree](https://github.com/elbiazo/calltree)|Eric Biazo|Generates calltree. Alternative view for callgraph|2024-09-04|binaryview, helper, ui|python3|MIT | +| [Char Arrays](https://github.com/elbee-cyber/analyze_char_arrays)|elbee|Displays char arrays by analyzing their use in functions|2023-01-18|binaryview, helper|python3|MIT | +| [ClassyPP](https://github.com/CySHell/ClassyPP)|CyShell|Parse and extract class information from MSVC x86 32\64 bit C++ binaries.|2023-06-06|binaryview|python3|MIT | +| [Clean Tricks](https://github.com/janbbeck/CleanTricks)|Jan Beck|This plugin removes some simple known obfuscation techniques to cut down on the tedium.|2020-06-08|architecture, binaryview, core, helper, ui|python3|MIT | +| [Code Mode MCP Server](https://github.com/akrutsinger/binja-codemode-mcp)|Austyn Krutsinger|MCP server for LLM-assisted reverse engineering via code execution|2026-01-09|helper|python3|MIT | +| [Comments Viewer](https://github.com/matteyeux/comments-viewer)|matteyeux|Binary Ninja comments viewer|2022-05-27|ui|python3|MIT | +| [CommentsAndSymbols](https://github.com/moval0x1/CommentsAndSymbols)|moval0x1|Show comments and symbols renamed during the analysis process.|2024-02-20|ui, binaryview|python3|MIT | +| [CoolSigMaker](https://github.com/unknowntrojan/binja_coolsigmaker)|unknowntrojan|SigMaker style plugin|2025-03-01|helper|rust|AGPLv3 | +| [CoolTypeOxidizer](https://github.com/unknowntrojan/binja_cooltypeoxidizer)|unknowntrojan|Provides a render layer that visually replaces C-style numeric types in HLIL with their Rust equivalents at zero runtime cost. (int64_t => i64)|2025-08-29|binaryview, helper, ui|python3|AGPLv3 | +| [Copy As YARA](https://github.com/ald3ns/copy-as-yara)|alden (@birchb0y)|Let's you copy sections of disassembly formatted for YARA.|2025-04-14|helper|python3|MIT | +| [Copy as Deeplink](https://github.com/pathtofile/binja_plugin_copy_deeplink)|pathtofile|Creates a deeplink to the current address and adds it to the clipboard|2025-05-18|helper|python3|MIT | +| [DBG Loader](https://github.com/gamozolabs/coff_nm)|Gamozo Labs, LLC|Load old COFF .dbg files as well as CAB-ed .db_ files!|2021-11-15|helper|python3|MIT | +| [DUMB](https://github.com/toolCHAINZ/DUMB)|toolCHAINZ|DUMB: An Example Architecture for Binary Ninja|2020-03-01|architecture, binaryview|python3|MIT | +| [DeGObfuscate](https://github.com/kryptoslogic/binja_degobfuscate)|Jamie Hankins|De-obfuscates strings inside of obfuscated Go binaries|2020-12-02|helper|python3|MIT | +| [Delphi Mapper](https://github.com/CTM1/BinjaDelphiMapper)|Claudio Teixeira|A plugin that renames Delphi functions according to a .map file produced by IDR.|2024-01-11|binaryview|python2, python3|MIT | +| [Delphi VMT Analyzer](https://github.com/ImNotAVirus/delphi_ninja)|ImNotAVirus|Find Delphi VMTs and generate their structures|2022-02-21|helper|python3|MIT | +| [Dependency analyzer](https://github.com/shizmob/binja-depanalyzer)|Shiz|Analyze dependencies and resolve obfuscated imports|2020-05-25|helper|python2, python3|MIT | +| [Dev Tools for Tantō](https://github.com/ElykDeer/tanto-devtools)|Elykdeer|Instruction Slices, IL Hierarchy Slices, Dominance Slices, and other tools for devs. Requires Tantō.|2025-12-08|ui, helper|python3|MIT | +| [Discord Integration](https://github.com/psifertex/discordpresence)|psifertex|Enables Discord Rich Presence Integration for Binary Ninja|2025-05-23|helper|python3|MIT | +| [Dyld Shared Cache Processor](https://github.com/0cyn/bn-dyldsharedcache)|cynder (kat)|Processing for Apple's dyld_shared_cache format.|2022-03-01|architecture, binaryview, core, helper, ui|python3|MIT | +| [EFI Inspector](https://github.com/zznop/efi-inspector)|Brandon Miller|Binary Ninja plugin for inspecting UEFI firmware images|2024-02-28|helper|python3|MIT | +| [Emotet API+string deobfuscator](https://github.com/mauronz/binja-emotet)|Francesco Muroni|Deobufscate API calls and strings in unpacked Emotet samples.|2020-09-21|helper|python3|MIT | +| [Explain Instruction](https://github.com/ehennenfent/binja_explain_instruction)|Eric Hennenfent|Displays a window that explains in simple English what an assembly instruction does|2021-10-10|ui, helper|python3|Apache 2 | +| [Fix stomped imports](https://github.com/nettitude/binja-fix-stomped-imports)|LRQA Nettitude|Recover the imports from a stomped PE header by pasting in an IAT dump from dynamic analysis.|2024-09-19|architecture, binaryview, core, helper, ui|python3|MIT | +| [Format String Analysis](https://github.com/nshp/binaryninja-printf)|Nick Shipp|Script to automatically annotate variadic printf functions|2023-03-08|helper|python3|MIT | +| [Format String Finder](https://github.com/Vasco-jofra/format-string-finder-binja)|jofra|Finds format string vulnerabilities|2019-07-15|helper|python3|MIT | +| [Frida](https://github.com/chame1eon/binaryninja-frida)|Chame1eon|A plugin to integrate the Frida dynamic instrumentation toolkit into Binary Ninja.|2020-06-01|helper|python3|MIT | +| [Frinja](https://github.com/dzervas/frinja)|Dimitris Zervas|Frida plugin for Binary Ninja - continuation of BinRida by @c3r34lk1ll3r|2024-04-10|helper|python3|MIT | +| [Function ABI](https://github.com/whitequark/binja_function_abi)|whitequark|A plugin that adds a GUI for changing function ABI.|2019-11-22|ui|python2, python3|BSD-0-clause | +| [Fuzzable](https://github.com/ex0dus-0x/fuzzable)|ex0dus-0x|Framework for Automating Fuzzable Target Discovery with Static Analysis|2023-11-22|ui|python3|MIT | +| [GEF-Binja](https://github.com/hugsy/gef-binja)|hugsy|Interface Binary Ninja with GDB-GEF easily.|2020-05-18|ui, helper|python3|MIT | +| [GO Loader Assist](https://github.com/f0rki/bn-goloader)|Michael Rodler|Short script that parses go symbol table and renames/creates functions.|2021-02-02|ui|python2, python3|MIT | +| [GTIRB](https://github.com/adrianherrera/binaryninja-gtirb)|Adrian Herrera|Support the GrammaTech Intermediate Representation for Binaries (GTIRB) in Binary Ninja|2024-10-07|helper|python3|MIT | +| [Game Boy Loader and Architecture Plugin](https://github.com/icecr4ck/bnGB)|Hugo Porcher (@icecr4ck)|A loader and diassembler for Game Boy ROMs.|2020-11-17|architecture, binaryview|python3|MIT | +| [Game ROM Loader](https://github.com/redthing1/binja_gameroms_plugin)|redthing1|Game ROM Loader for Binary Ninja|2026-01-27|architecture, binaryview, core, ui|python3|MIT | +| [GameCube DOL](https://github.com/PistonMiner/binaryninja-gc-dol)|Linus S. (aka PistonMiner)|GameCube DOL file BinaryView|2021-07-08|binaryview|python3|MIT | +| [GameCube symbol map loader](https://github.com/PistonMiner/binaryninja-gc-load-map)|Linus S. (aka PistonMiner)|GameCube symbol map loader|2021-07-08|helper|python3|MIT | +| [Ghinja](https://github.com/Martyx00/ghinja)|Martin Petran|Plugin to embed Ghidra Decompiler into Binary Ninja|2022-06-08|ui|python3|Apache-2.0 | +| [Go Calling Convention](https://github.com/PistonMiner/binaryninja-go-callconv)|Linus S. (aka PistonMiner)|Adds the "gocall" calling convention|2023-12-14|helper|python3|MIT | +| [GoLang binary parser](https://github.com/dipusone/golang_pclntab_parser)|Jacopo Ferrigno|BinaryNinja plugin to parse GoLang binaries and restore some information, like function names and type information|2025-07-29|ui|python3|MIT | +| [Golang Symbol Restore](https://github.com/d-we/binja-golang-symbol-restore)|Daniel Weber|Binary Ninja plugin for restoring function names from stripped Golang binaries|2020-10-19|helper|python3|MIT | +| [Golang Symbol Restore 1.18+](https://github.com/scmerrill/golang_1_18_restore_names)|Spencer Merrill|Binary Ninja plugin for restoring function names from stripped Golang binaries|2022-09-08|helper|python3|MIT | +| [HLIL Dump](https://github.com/atxsinn3r/BinjaHLILDump)|atxsinn3r|Dumps HLIL code to a directory|2020-06-07|helper|python2, python3|BSD-3-Clause | +| [HashDB](https://github.com/cxiao/hashdb_bn)|Cindy Xiao|Plugin for interacting with the OALabs HashDB service.|2024-10-02|ui, helper|python3|3-Clause BSD | +| [Hex Integers in Python Console](https://github.com/CouleeApps/hex_integers)|Glenn Smith|Makes your integers print as hex in the python console.|2023-11-01|helper|python3|MIT | +| [Hyara](https://github.com/hyuunnn/Hyara)|Hyun Yi|YARA rule making tool for Binary Ninja, Cutter, and IDA|2023-11-13|ui|python2, python3|MIT | +| [IDC Importer](https://github.com/Cryptogenic/idc_importer)|SpecterDev|Allows users to import idc database dumps from IDA into Binary Ninja.|2022-10-13|helper|python3|MIT | +| [IFL](https://github.com/leandrofroes/bn_ifl)|Leandro Froes|A small plugin that provides an user-friendly way to navigate between functions and their references.|2024-07-09|ui, helper|python3|CC BY 3.0 | +| [Ibis](https://github.com/jonpalmisc/ibis)|jonpalmisc|Segment-accurate iBoot/SecureROM loader|2025-12-06|binaryview|python3|BSD 3-Clause | +| [Improved Gameboy Architecture](https://github.com/samrussell/binja-gameboy)|Sam Russell (@samrussell)|A loader and diassembler for Game Boy ROMs.|2024-03-28|architecture, binaryview|python3|MIT | +| [Instruction Slicer](https://github.com/c3r34lk1ll3r/Instruction_Slicer)|Andrea Ferraris|Forward and backward instruction slicer|2020-11-25|helper|python2, python3|MIT | +| [Intel 8086 Architecture](https://github.com/whitequark/binja-i8086)|whitequark|A plugin providing the 16-bit Intel architecture.|2019-09-04|arch|python2, python3|BSD-0-clause | +| [IoC Ninja](https://github.com/CX330Blake/ioc_ninja)|CX330|IoC Ninja is a Binary Ninja plugin that can improve the QoL of malware analysts.|2025-11-18|binaryview, core, helper, ui|python3|MIT | +| [Itanium C++ ABI](https://github.com/whitequark/binja_itanium_cxx_abi)|whitequark|A plugin providing an analysis for Itanium C++ ABI.|2023-03-01|analysis|python2, python3|BSD-0-clause | +| [JMPscare](https://github.com/fgsect/JMPscare-binja)|Lukas Seidel|Fuzzing Introspection for use with the JMPscare Toolkit.|2022-12-07|binaryview, core, helper, ui|python3|MIT | +| [JNIAnalyzer](https://github.com/Ayrx/binja-JNIAnalyzer)|Terry Chia (Ayrx)|Analysis scripts for Binary Ninja to work with Android NDK libraries.|2022-03-27|helper|python3|MIT | +| [Jump table branch editor](https://github.com/Vasco-jofra/jump-table-branch-editor)|jofra|A plugin that eases fixing jump table branches|2019-07-06|ui, core|python2, python3|MIT | +| [Leak Audit](https://github.com/Vector35/Leak-Audit)|Vector 35 Inc|A debugging tool for Binary Ninja plugin developers to detect and diagnose memory leaks related to BinaryView objects.|2025-11-11|helper|python3|Apache-2.0 | +| [Lighthouse](https://github.com/gaasedelen/lighthouse)|Markus Gaasedelen|A Coverage Explorer for Reverse Engineers|2024-02-05|helper|python3|MIT | +| [MCP Server](https://github.com/MCPPhalanx/binaryninja-mcp)|Known Rabbit|MCP Server for Binary Ninja.|2025-05-11|ui, helper|python3|Apache-2.0 | +| [MSVC](https://github.com/0x1F9F1/binja-msvc)|Brick|Parses MSVC structures to improve analysis|2019-07-12|helper|python2, python3|MIT | +| [Minidump Loader](https://github.com/redthing1/binja_minidump)|redthing1|Minidump Loader for Binary Ninja|2025-05-09|binaryview, core, ui|python3|MIT | +| [MobiCore Loader Format](https://github.com/v-rzh/mclf-binja-loader)|vrzh|Loader for MobiCore trustlets and secure drivers.|2024-07-19|binaryview, helper|python3|MIT | +| [Mole](https://github.com/cyber-defence-campus/mole)|Damian Pfammatter and Sergio Paganoni|Uncover interesting paths using static backward slicing|2026-01-23|ui, helper|python3|Apache-2.0 | +| [Moon Analyzer](https://github.com/redthing1/binja_moonanalyzer)|redthing1|Analyze things on the Moon|2026-01-29|binaryview, core, ui|python3|MIT | +| [Motorola 68k Architecture Plugin](https://github.com/galenbwill/binaryninja-m68k)|Galen Williamson|A disassembler and lifter for the Motorola 68k architecture.|2022-06-10|architecture|python3|MIT | +| [NEC850 Architecture](https://github.com/Accenture/NEC850_Architecture)|Accenture (Martin Petran)|Architecture plugin for Renesas RH850/V850 family of processors.|2025-01-22|architecture|C++|Apache-2.0 | +| [Nampa](https://github.com/thebabush/nampa)|Paolo Montesel (https://github.com/thebabush)|FLIRT for (binary) ninjas|2020-05-27|binaryview, core|python3|LGPL v3 | +| [Native Predicate Solver](https://github.com/ScriptWare-Software/native-predicate-solver_loader)|ScriptWare Software|Remove opaque predicates from binaries|2025-06-29|helper|python3|MIT | +| [Native SigScan](https://github.com/rikodot/binja_native_sigscan_loader)|rikodot|Find and create signatures|2024-08-13|helper|python2, python3|MIT | +| [Notepad](https://github.com/jonpalmisc/bn-notepad)|Jon Palmisciano|A notepad for taking notes inside Binary Ninja.|2021-04-19||python3|MIT | +| [Obfuscation Analysis](https://github.com/mrphrazer/obfuscation_analysis)|Tim Blazytko, Nicolò Altamura|Analyze and simplify obfuscated code|2025-10-11|helper|python3|GPL-2.0 | +| [Obfuscation Detection](https://github.com/mrphrazer/obfuscation_detection)|Tim Blazytko|Automatically detect obfuscated code and other interesting code constructs|2025-03-14|helper|python3|GPL-2.0 | +| [Opaque Predicates Detective](https://github.com/yellowbyte/opaque-predicates-detective)|Yu-Jye Tung|detect opaque predicates|2021-04-10|helper|python2, python3|MIT | +| [OpenAI GPT3](https://github.com/WhatTheFuzz/binaryninja-openai)|Sean Deaton (@WhatTheFuzz)|Queries OpenAI's GPT3 to determine what a given function does.|2024-04-17|helper|python3|MIT | +| [Original Xbox Executable Loader](https://github.com/xclusivor/binaryninja-xbe)|xclusivor|Loader for Original Xbox Executables|2023-11-13|binaryview|python3|MIT | +| [PSVitaLoader](https://github.com/computerman00/BinaryNinja-PSVitaLoader)|computerman00|PS Vita ELF/PRX2 loader plugin|2024-09-19|helper|python3|MIT | +| [PowerPC VLE Extension](https://github.com/Martyx00/PowerPC-VLE-Extension)|Martin Petran|PowerPC VLE support via architecture extension.|2025-03-03|architecture|cpp|Apache-2.0 | +| [Pseudo C Dump](https://github.com/AsherDLL/PCDump-bn)|Asher Davila L.|Binary Ninja plugin to dump the Pseudo C generated by Binja into a folder.|2023-01-28|helper|python3|Apache-2.0 | +| [Python bytecode](https://github.com/Njord0/BNPyc)|Njörd|Python bytecode (.pyc) support for Binary Ninja|2024-03-03|architecture, binaryview|python3|MIT | +| [QSettings Viewer](https://github.com/psifertex/qsview)|Jordan Wiens|QSettings Viewer|2024-10-22|ui, helper|python3|MIT | +| [Renesas M16C Architecture](https://github.com/whitequark/binja-m16c)|whitequark|A plugin providing the Renesas M16C architecture.|2020-01-19|architecture|python3|BSD-0-clause | +| [Renesas V850 architecture plugin](https://github.com/tizmd/binja-v850)|Tomonori Izumida |An architecture plugin for Renesas V850 series|2022-11-07|architecture|python3|MIT | +| [ReverserAI](https://github.com/mrphrazer/reverser_ai)|Tim Blazytko|Provides automated reverse engineering assistance through the use of local large language models (LLMs) on consumer hardware.|2024-06-21|helper|python3|GPL-2.0 | +| [RopView](https://github.com/elbee-cyber/RopView)|elbee|RopView is a gadget analysis framework for BinaryNinja capable of granular per-instruction based analysis and complex logical queries.|2025-02-25|binaryview, helper, ui|python3|MIT | +| [Rust Demangle](https://github.com/inspier/BinjaRustDemangler)|inspier|Demangles Rust symbols.|2023-07-09|helper|python3|MIT | +| [Rust String Slicer](https://github.com/cxiao/rust_string_slicer)|Cindy Xiao|Rust binary string recovery plugin|2026-01-11|helper|python3|MIT | +| [Rust Type Layout Helper](https://github.com/cxiao/rust_type_layout_helper_bn)|Cindy Xiao|An extremely experimental Binary Ninja importer for the type layout information emitted by the -Zprint-type-sizes flag of the Rust compiler.|2023-04-27|helper|python3|MIT | +| [SEH Helper](https://github.com/EliseZeroTwo/SEH-Helper)|EliseZeroTwo|Helper for exploring structured exception handlers in PEs|2022-02-19|ui, helper|python3|MIT | +| [SENinja](https://github.com/borzacchiello/seninja)|Luca Borzacchiello|Symbolic execution plugin for BinaryNinja|2024-02-24|helper|python3|2-Clause BSD | +| [SEPROM Loader](https://github.com/matteyeux/seprom-loader)|matteyeux|Binary View for loading 32 bits and 64 bits Apple SEPROM|2023-07-17|binaryview|python3|MIT | +| [Screenshot Ninja](https://github.com/jonpalmisc/screenshot_ninja)|jonpalmisc|Easily capture Binary Ninja screenshots in ultra-high resolution|2025-11-13|helper|python3|MIT | +| [Shellcode-IDE](https://github.com/CX330Blake/Shellcode-IDE)|CX330Blake|Shellcode IDE makes developing and analyzing shellcode much more convenient.|2025-11-19|binaryview, helper, ui|python3|MIT | +| [Shellcoder](https://github.com/0xricksanchez/Shellcoder)|434b|Interactive shellcode disassembler/assembler|2024-11-28|helper|python3|Apache 2.0 | +| [Simple YARA Generator](https://github.com/1337-42/SimpleYaraBN)|Remco Sprooten|Generate YARA rules from selected assembly instructions with intelligent architecture-aware wildcarding. Features real-time preview, per-instruction wildcard control, and Capstone Engine integration for accurate opcode preservation across x86/x64, ARM/A...|2025-07-01|ui|python3|MIT | +| [Sourcery Pane](https://github.com/mechanicalnull/sourcery_pane)|mechanicalnull|Synchronized source code pane for debug binaries|2019-07-15|ui, helper|python2, python3|MIT | +| [Swift Analyzer](https://github.com/FFRI/binja-swift-analyzer)|Koh M. Nakagawa|Binary Ninja plugin for analyzing Swift binaries|2025-10-20|core, helper|python3|Apache License, Version 2.0 | +| [Swift Demangler](https://github.com/saagarjha/binja-swift-demangler)|Saagar Jha|Demangles Swift functions.|2025-06-01|architecture, binaryview, core, helper, ui|python3|MIT | +| [Switch Loader](https://github.com/EliseZeroTwo/Switch-Binja-Loader)|EliseZeroTwo|Loader for common Nintendo Switch binaries|2020-07-22|binaryview, helper|python3|ISC | +| [Symgrate2 Plugin](https://github.com/travisgoodspeed/symgrate2-binja-plugin)|Travis Goodspeed|This is a client plugin for recovering symbols using the Symgrate2 server.|2021-09-11|helper|python3|MIT | +| [Syscaller](https://github.com/carstein/Syscaller)|Michal Melewski|Decorate encountered syscalls with details like name and arguments|2019-07-15|helper|python3|MIT | +| [TE Loader](https://github.com/zznop/te-loader)|Brandon Miller|Binary Ninja plugin for loading EFI Terse Executable files|2024-02-28|architecture|python3|MIT | +| [Tag Team](https://github.com/psifertex/tagteam)|psifertex|Tags functions using emoji for a number of interesting characteristics|2021-03-12|helper|python3|Apache-2.0 | +| [Translation Plugin](https://github.com/psifertex/translation-plugin)|psifertex|Translate strings and symbols|2025-09-26|helper|python3|MIT | +| [Type Oxidizer](https://github.com/austinzwile/TypeOxidizer)|austinzwile / azw|TypeOxidizer converts the C-Style types in your HLIL / decompilation to their Rust equivalents for easier reading / interpretation and shorter decompilation.|2025-02-24|binaryview, helper, ui|python3|MIT | +| [TypeLib Exporter](https://github.com/SmoothHacker/TypeLib-Exporter)|SmoothHacker|This plugin compiles exported functions and its corresponding types into a type library. Type libraries can also be applied to existing bndbs through this plugin.|2025-12-31|binaryview, helper, ui|python3|MIT | +| [VMNDH-2k12 Architecture Plugin](https://github.com/verylazyguy/binaryninja-vmndh)|verylazyguy|A disassembler and lifter for the VMNDH-2k12 architecture.|2019-07-10|architecture|python2, python3|MIT | +| [VTIL Plugin](https://github.com/vtil-project/VTIL-BinaryNinja)|Layle|Integrates the VTIL (Virtual-machine Translation Intermediate Language) Project with Binary Ninja|2020-07-05|architecture, binaryview|python2, python3|BSD-3-Clause | +| [VirusTotal Code Insights](https://github.com/txhaflaire/virustotal_code_insights)|thijs.xhaflaire|Analyze a function or highlighted code using VirusTotal Code Insights (Google Threat Intelligence).|2025-12-09|architecture, binaryview, core, helper, ui|python3, |MIT | +| [VulnFanatic](https://github.com/Martyx00/VulnFanatic)|Martin Petran|Assistant plugin for vulnerability research.|2024-09-07|helper|python3|Apache-2.0 | +| [WASM Plugin](https://github.com/ivision-research/binjawa)|Meador Inge|This is a plugin for disassembling and lifting WASM images..|2020-06-30|architecture, binaryview|python3|MIT | +| [Windows Driver Analyzer](https://github.com/shareef12/driveranalyzer)|shareef12|Find IRP dispatch routines and valid IOCTLs in a Windows kernel driver|2019-08-08|helper|python2, python3|MIT | +| [XNU Sysctl Hunter](https://github.com/xpcmdshell/SysctlHunter)|actae0n|XNU Sysctl Hunter is a tool for analyzing Kexts that will automatically identify, type, and tag sysctl OIDs, as well as correct the prototypes of their OID handler functions. It contains a Binary Ninja plugin action, as well as a headless script for cli...|2021-07-22|helper|python3|MIT | +| [XProtect Remediator Analyzer](https://github.com/FFRI/binja-xpr-analyzer)|Koh M. Nakagawa|XProtect Remediator Analyzer is a plugin analyzing XProtect Remediator binaries.|2025-10-20|core, helper|python3|Apache version 2.0 | +| [Xtensa Architecture Support and ESP8266 Loader](https://github.com/nicabi/binja-xtensa2)|Nicolae Binica|Xtensa Architecture Support and ESP8266 Image Loader|2025-08-30|architecture, binaryview|python3|MIT | +| [YARA Scan](https://github.com/trib0r3/binja-yara)|trib0r3|YARA signatures|2020-05-26|binaryview, core|python3|MIT | +| [ar (.a) archive container transform](https://github.com/ArcaneNibble/binja-ar)|ArcaneNibble|Plugin for ar (.a) archives of object files|2025-12-21|binaryview|python3|BSD-0-clause | +| [binja-doc-lookup](https://github.com/riskydissonance/binja-doc-lookup)|riskydissonance|Lookup documentation for the selected token|2024-06-20|ui, helper|python3|MIT | +| [binja-ps3](https://github.com/valters-tomsons/bninja-ps3)|faith|Playstation 3 ELF loader|2026-02-01|binaryview|python3|MIT | +| [binja-win-docs](https://github.com/matteyeux/binja-win-docs)|matteyeux|Binary Ninja plugin to display the documentation of a Windows function in a sidebar widget.|2024-04-11|ui, helper|python3|Apache-2.0 | +| [binja_sigmaker](https://github.com/apekros/binja_sigmaker)|apekros and Alex3434|Generate and find signatures.|2023-01-29|architecture, binaryview, core, ui|python3|MIT | +| [binjaextras](https://github.com/xorhex/binjaextras)|xorhex|Various features to make windows malware analysis easier.|2025-01-17|helper|python3|MIT | +| [bn-ebpf-solana](https://github.com/otter-sec/bn-ebpf-solana)|OtterSec LLC|An architecture/binaryview plugin for Solana EBPF.|2025-07-01|architecture, binaryview|python3|MIT | +| [bn-riscv](https://github.com/uni-due-syssec/bn-riscv)|Katharina Utz|RISC-V architecture plugin.|2021-01-18|architecture|python2, python3|Apache-2.0 | +| [bn-riscy-business](https://github.com/eybisi/bn-riscy-business)|Ahmet Bilal Can|RISC-V architecture plugin to load encrypted Riscy-Business binaries.|2025-05-21|architecture|python2, python3|Apache-2.0 | +| [bn-uefi-helper](https://github.com/zznop/bn-uefi-helper)|Brandon Miller (zznop)|Helper plugin for analyzing UEFI firmware|2023-04-28|helper|python3|MIT | +| [bncov](https://github.com/ForAllSecure/bncov)|Mark Griffin|Scriptable code coverage analysis and visualization plugin|2023-02-15|helper|python3|MIT | +| [bnida](https://github.com/zznop/bnida)|zznop|Transfer analysis data between Binary Ninja and IDA|2024-02-15|sync|python3|MIT | +| [cryptoscan](https://github.com/Rami114/cryptoscan)|Ben Pottier|A plugin to detect several common crypto constructs and magic vars.|2023-09-22|ui, binaryview|python2, python3|MIT | +| [ctypes Export](https://github.com/jordan9001/ctypes_export)|Jordan Whitehead|Export types definitions as ctypes structures|2024-06-24|helper|python3|MIT | +| [decomp2dbg](https://github.com/mahaloz/decomp2dbg)|Zion Basque (@mahaloz)|Adds support for Binary Ninja decompilation in your debugger, curently only supports GDB|2025-11-11|core|python3|BSD 2-clause | +| [devi](https://github.com/murx-/devi_binja)|@_murks|devi - DEvirtualize VIrtual calls in C++ binaries|2020-11-04|ui, helper|python3|MIT | +| [dewolf Decompiler](https://github.com/fkie-cad/dewolf)|fkie-cad|Research Decompiler to generate a C-like function representation|2026-01-01|ui, helper|python3|LGPL-2.1 | +| [droog](https://github.com/amtal/droog)|amtal|PDF Reference Opcodes Or reGisters. Like IDA's FRIEND/AMIE or Ghidra's "Processor Manual..." right-click menu.|2024-06-24|helper|python3|AGPL-3.0 | +| [ethersplay Ethereum Architecture Plugin](https://github.com/crytic/ethersplay)|Trail of Bits|A disassembler and lifter for the Ethereum architecture.|2022-11-03|architecture|python3|AGPL-3.0-only | +| [genesis](https://github.com/zznop/bn-genesis)|zznop|SEGA Megadrive/Genesis ROM Hacking Toolkit|2024-11-04|ui, helper|python3|MIT | +| [header-query](https://github.com/interruptlabs/header_query_bn)|Ashleigh Johannes|Import C header file types and function parameters from unprocessed or partial header files|2025-04-17|helper|python3|MIT | +| [hexfiles](https://github.com/toolCHAINZ/hexfiles)|toolCHAINZ|A simple loader for Motorola SREC, Intel HEX, and TI-TXT files.|2024-04-09|binaryview|python3|MIT | +| [iBoot64 Loader](https://github.com/BlackwingHQ/iBoot64Binja)|Blackwing Intelligence|Binary View for loading iBoot, SecureROM, etc. firmware|2020-10-01|binaryview|python3|MIT | +| [iBootLoader](https://github.com/EliseZeroTwo/iBoot-Binja-Loader)|EliseZeroTwo|iBoot/SecureROM Loader|2023-02-24|binaryview, helper|python3|ISC | +| [ilhierarchy](https://github.com/fabianfreyer/binja-il-hierarchy)|Fabian Freyer|Show current IL instruction hierarchy in sidebar|2022-02-06|ui, core|python3|MIT | +| [kallsyms](https://github.com/zznop/bn-kallsyms)|Brandon Miller|Parses output from /proc/kallsyms and applies symbols to the corresponding kernel BN database|2022-01-30|helper|python3|MIT | +| [keypatch](https://github.com/lwerdna/keypatch_binja)|lwerdna|Remake of keypatch plugin for Binary Ninja|2024-01-25|ui, helper|python3|Unlicense | +| [logrn](https://github.com/sum-catnip/logrn)|catnip|binary ninja plugin for abusing logging functions|2021-03-09|helper|python3|MIT | +| [msp430 Architecture](https://github.com/joshwatson/binaryninja-msp430)|Josh Watson|MSP430 Architecture Plugin for Binary Ninja|2022-02-02|architecture|python3|MIT | +| [pd-ninja](https://github.com/lockbox/pd-ninja)|lockbox|Playdate Console RE utilities|2023-03-01|helper|python3|MIT | +| [permap](https://github.com/redballoonsecurity/permap)|jepson2k, dannyp303|Supports loading .per files into Binary Ninja.|2024-12-18|helper|python3|Apache-2.0 | +| [peutils](https://github.com/404d/peutils)|404'd|Binary Ninja plugin providing various niche utilities for working with PE binaries|2020-12-12|helper|python3|MIT | +| [recursion](https://github.com/zznop/bn-recursion)|zznop|Locate and annotate direct and indirect recursion|2020-07-22|helper|python3|MIT | +| [ret-sync](https://github.com/bootleg/ret-sync)|Alexandre Gazet|Helper plugin to synchronize Binary Ninja with a debugging session|2022-01-21|helper|python3|MIT | +| [revsync](https://github.com/lunixbochs/revsync)|lunixbochs|Realtime IDA Pro and Binary Ninja sync plugin|2020-05-14|ui|python2, python3|MIT | +| [ripr](https://github.com/pbiernat/ripr)|Patrick Biernat|Package binary code as a Python class backed by Unicorn-Engine|2022-07-08|helper|python3|MIT | +| [scylla-ninja](https://github.com/ScriptWare-Software/scylla-ninja)|Script-Ware Software|Automated ScyllaHide injection and setup/configuration for Binary Ninja's debugger|2025-10-08|ui, helper|python3|MIT | +| [semgrep-bn](https://github.com/interruptlabs/semgrep_bn)|Samman Palihapitiya|Search code with Semgrep|2025-02-04|helper|python3|MIT | +| [themida-unmutate-bn](https://github.com/ergrelet/themida-unmutate-bn)|Erwan Grelet|Static deobfuscator for Themida, WinLicense and Code Virtualizer 3.x's mutation-based obfuscation.|2024-07-28|helper|python3|GPL-3.0-or-later | +| [x64dbgbinja](https://github.com/x64dbg/x64dbgbinja)|x64dbg|Official x64dbg plugin for Binary Ninja.|2026-01-03|sync|python3|MIT | +| [μBlaze Architecture Plugin](https://github.com/amtal/microblaze)|amtal|Configurable soft core for Xilinx FPGAs.|2022-05-29|architecture|python3|MIT | \ No newline at end of file diff --git a/generate_index.py b/generate_index.py old mode 100644 new mode 100755 index 834fefe..0413eab --- a/generate_index.py +++ b/generate_index.py @@ -1,87 +1,354 @@ -''' Python script to generate a stub README.md files from a plugin.json file ''' +#!/usr/bin/env python3 +import sys +import os import json import argparse -import os -import sys -import configparser -from collections import OrderedDict +import base64 +import requests +from dateutil import parser +import re +from datetime import datetime, timezone +from pathlib import Path + +token = None + +def printProgressBar(iteration, total, prefix = '', length = 60, fill = '█'): + filledLength = int(length * iteration // total) + bar = (fill * filledLength) + ('-' * (length - filledLength)) + percent = 100 * (iteration / float(total)) + fmt = f"\r{prefix} |{bar}| {percent:.1f}%" + sys.stdout.write(fmt) + # Print New Line on Complete + if iteration == total: + print() + + +def getfile(url): + return requests.get(url, headers={'Authorization': f'token {token}'}) -parser = argparse.ArgumentParser(description = 'Generate README.md index of all plugins') -parser.add_argument("-f", "--force", help = 'will automatically overwrite existing README', action='store_true') -args = parser.parse_args() +def getPluginJson(plugin, shortUrls, debug=False): + if debug: + print(f"Processing plugin: {plugin['name']}") + if "site" in plugin: + pluginsJson = getfile(plugin["site"]).json() + for plugin in pluginsJson: + if plugin["name"] == plugin["name"]: + return plugin + print(f'No plugin matching {plugin["name"]} found in {plugin["site"]}') + return -os.path.realpath(__file__) + site = "https://github.com/" + userAndProject = plugin["name"] + userName = plugin["name"].split("/")[0] + projectUrl = f"https://api.github.com/repos/{userAndProject}" + releasesUrl = f"{projectUrl}/releases/tags" + tagsUrl = f"{projectUrl}/tags" + releaseData = None + if 'view_only' in plugin and plugin['view_only']: + view_only = True + else: + view_only = False -basedir = os.path.join(os.path.dirname(os.path.realpath(__file__))) -pluginsdir = os.path.join(basedir, 'plugins') -pluginreadme = os.path.join(pluginsdir, 'README.md') -pluginjson = os.path.join(basedir, "plugins.json") + if 'auto_update' in plugin and plugin['auto_update']: + latestRelease = f"{projectUrl}/releases/latest" -if not args.force and os.path.isfile(pluginreadme): - print("Cowardly refusing to overwrite an existing README. Remove or re-run with -f.") - sys.exit(0) + try: + releaseData = getfile(latestRelease).json() -if not args.force and os.path.isfile(pluginjson): - print("Cowardly refusing to overwrite an existing plugins.json. Remove or re-run with -f.") - sys.exit(0) + match releaseData.get('message'): + case 'Not Found': + print(f"\n\nERROR: {plugin['name']}, Couldn't get release information. Likely the user created a tag but no associated release.\n") + return None + case 'Bad credentials': + print(f"\n\nERROR: Bad credentials, check access token.\n") + return None -config = configparser.ConfigParser() -config.readfp(open(os.path.join(basedir, '.gitmodules'))) -submodules = {} + plugin['tag'] = releaseData['tag_name'] -for section in list(config.items())[1:]: - sectionname = section[0].split('"')[1] - submodules[sectionname] = config.get(section[0], 'url') + except requests.exceptions.HTTPError: + print(f" Unable to get url {latestRelease}") + return None + elif view_only: + # No release for a view-only plugin + pass + else: + releases = f"{releasesUrl}/{plugin['tag']}" + try: + releaseData = getfile(releases).json() + if "message" in releaseData and releaseData["message"] == "Not Found": + print(f"\n\nERROR: {plugin['name']}, Couldn't get release information. Likely the user created a tag but no associated release.\n") + print(f"Tried to use URL: {releases}") + return None + except requests.exceptions.HTTPError: + print(f" Unable to get url {releases}") + return None + commit = None + zipUrl = None + shortUrl = "" + # Lookup the tag url and find the associated commit + if not view_only: + try: + tagData = getfile(tagsUrl).json() + for tag in tagData: + if tag["name"] == plugin["tag"]: + commit = tag["commit"]["sha"] + zipUrl = tag["zipball_url"] + break + if commit is None: + print(f"Unable to associate tag {plugin['tag']} with a commit for plugin {plugin['name']}") + return None + except requests.exceptions.HTTPError: + print(f" Unable to get url {tagsUrl}") + return None -template = '# Binary Ninja Plugins\n\n' -template += '''| PluginName | Author | License | Type | Description | -|------------|--------|---------|----------|-------------| -''' + if zipUrl in shortUrls: #avoid duplicates + shortUrl = shortUrls[zipUrl] + elif os.getenv("URL_SHORTENER"): + url = os.getenv("URL_SHORTENER") + assert url != "", "No URL_SHORTENER environment variable." + jsonData = {"cdn_prefix": "v35.us", "url_long": zipUrl} + r = requests.post(url, json=jsonData) + jsonResponse = json.loads(r.text) + if jsonResponse['error'] == '': + shortUrl = jsonResponse["url_short"] + assert shortUrl.find("http") == 0 -plugins = [] -for plugin in list(os.walk(pluginsdir))[0][1]: + projectData = None try: - url = submodules[os.path.join('plugins', plugin)] - if url.endswith('.git'): - url = url[:-4] - authorlink = '/'.join(url.split('/')[:4]) - except: - url = 'https://github.com/Vector35/community-plugins/tree/master/plugins/{plugin}'.format(plugin=plugin) - authorlink = 'https://github.com/Vector35/' + projectData = getfile(projectUrl).json() + except requests.exceptions.HTTPError: + print(f" Unable to get url {projectUrl}") + return None + + data = None + if "subdir" in plugin: + if view_only: + pluginjson = f"{projectUrl}/contents/{plugin['subdir']}/plugin.json" + else: + pluginjson = f"{projectUrl}/contents/{plugin['subdir']}/plugin.json?ref={plugin['tag']}" + else: + if view_only: + pluginjson = f"{projectUrl}/contents/plugin.json" + else: + pluginjson = f"{projectUrl}/contents/plugin.json?ref={plugin['tag']}" try: - data = json.load(open(os.path.join(pluginsdir, plugin, "plugin.json")), object_pairs_hook=OrderedDict, encoding="utf-8")['plugin'] - except Exception as exc: - print(exc) - print("Failed to load {}, possible json error.".format(plugin)) - continue - if (not url.startswith("http") or (plugin == "" )): - print("Failed to load {}, possible json error.".format(plugin)) - continue - data['url'] = url - data['path'] = plugin - if 'type' not in data: - data['type'] = ['none'] - plugins.append(data) - template += u'|[{name}]({url})|[{author}]({authorlink})|[{license}]({plugin}/LICENSE)|{plugintype}|{description}|\n'.format(name = data['name'], - url=url, - plugin=plugin, - author=data['author'], - authorlink=authorlink, - license=data['license']['name'], - plugintype=', '.join(sorted(data['type'])), - description=data['description']) -template += "\n\n" -print("Writing " + pluginjson) -try: - open(pluginjson, 'w').write(json.dumps(plugins, indent=4, sort_keys=True, ensure_ascii=False, encoding="utf-8").encode("utf-8")) -except: - open(pluginjson, 'w').write(json.dumps(plugins, indent=4, sort_keys=True, ensure_ascii=False)) - -print("Writing " + pluginreadme) -try: - open(pluginreadme, "w").write(template) -except: - open(pluginreadme, "w").write(template.encode('utf-8')) + if debug: + print(f"Getting plugin.json from {pluginjson}") + content = getfile(pluginjson).json()['content'] + try: + data = json.loads(base64.b64decode(content)) + except: + print(f"\n\nInvalid json when parsing {pluginjson}\n") + raise + if ('longdescription' in data and len(data['longdescription']) < 100) or ('longdescription' not in data): + try: + readmes = ["README.md", "README.MD", "readme.md", "README", "readme", "Readme.md"] + if "subdir" in plugin: + # Yes, this is suboptimal but I'd rather waste time at generation of this list to make sure we get better long descriptions + readmes = [f"{plugin['subdir']}/{x}" for x in readmes] + readmes + for readmefile in readmes: + if view_only: + readmeUrl = f"{projectUrl}/contents/{readmefile}" + else: + readmeUrl = f"{projectUrl}/contents/{readmefile}?ref={plugin['tag']}" + readmeJson = getfile(readmeUrl).json() + if all (k in readmeJson for k in ("encoding", "content")): + if readmeJson["encoding"] == "base64": + data['longdescription'] = base64.b64decode(readmeJson["content"]).decode('utf-8') + break + except: + pass + if "plugin" in data: + # Using old style json + data = data["plugin"] + except requests.exceptions.HTTPError: + print(f" Unable to get url {pluginjson}") + return None + + requirements_txt = "" + if not view_only: + try: + if "subdir" in plugin: + req_json = getfile(f"{projectUrl}/contents/{plugin['subdir']}/requirements.txt?ref={plugin['tag']}").json() + if not "content" in req_json: # Try top-level requirements as well + req_json = getfile(f"{projectUrl}/contents/requirements.txt?ref={plugin['tag']}").json() + else: + req_json = getfile(f"{projectUrl}/contents/requirements.txt?ref={plugin['tag']}").json() + if "content" in req_json: + requirements_txt = base64.b64decode(req_json["content"]).decode('utf-8') + if requirements_txt.startswith("\ufeff"): # Remove BOM from file contents + requirements_txt = requirements_txt[1:] + requirements_txt = requirements_txt.replace("\r\n", "\n") + except requests.exceptions.HTTPError: + pass + + # Additional fields required for internal use + if view_only: + lastUpdated = int(parser.parse(projectData["updated_at"]).timestamp()) + else: + lastUpdated = int(parser.parse(releaseData["published_at"]).timestamp()) + data["lastUpdated"] = lastUpdated + data["projectUrl"] = site + userAndProject + data["projectData"] = projectData + data["projectData"]["updated_at"] = datetime.fromtimestamp(lastUpdated, timezone.utc).isoformat() + data["authorUrl"] = site + userName + if view_only: + # Hack until new system is finished + data["packageUrl"] = "https://127.0.0.1/" + data["packageShortUrl"] = "https://127.0.0.1/" + data["view_only"] = True + else: + data["packageUrl"] = zipUrl + data["packageShortUrl"] = shortUrl + data["view_only"] = False + data["dependencies"] = requirements_txt + + # Replace the fwd slash with _ and then strip all non (alpha, numeric, _ ) + + data["path"] = re.sub("[^a-zA-Z0-9_]", "", re.sub("/", "_", projectData["full_name"])) + data["commit"] = commit + + # TODO: Consider adding license info directly from the repository's json data (would need to test unlicensed plugins) + # data["license"] = {"name" : data["license"]["name"], "text": getfile(data["license"]["url"])} + + if "api" in data.keys() and isinstance(data["api"], str): + data["api"] = [data["api"]] + + if "minimumbinaryninjaversion" in data: + if not isinstance(data["minimumbinaryninjaversion"], int): + data["minimumBinaryNinjaVersion"] = 0 + else: + data["minimumBinaryNinjaVersion"] = data["minimumbinaryninjaversion"] + del data["minimumbinaryninjaversion"] + elif "minimumBinaryNinjaVersion" in data: + if not isinstance(data["minimumBinaryNinjaVersion"], int): + data["minimumBinaryNinjaVersion"] = 0 + else: + data["minimumBinaryNinjaVersion"] = 0 + + if "pluginmetadataversion" not in data: + data["pluginmetadataversion"] = 2 # For any plugin to use v3+ schema features, they need to set this + + if ("maximumBinaryNinjaVersion" not in data or not isinstance(data["maximumBinaryNinjaVersion"], int)): + data["maximumBinaryNinjaVersion"] = 999999 + if "platforms" not in data: + data["platforms"] = [] + if "installinstructions" not in data: + data["installinstructions"] = {} + if "subdir" in plugin: + data["subdir"] = plugin["subdir"] + # Native plugins require this version to not produce error logs. + if view_only and data["minimumBinaryNinjaVersion"] < 6135: + data["minimumBinaryNinjaVersion"] = 6135 + if debug: + print(f"Finished processing plugin: {plugin['name']}") + return data + + +def main(): + parser = argparse.ArgumentParser(description="Produce 'plugins.json' for plugin repository.") + parser.add_argument("-i", "--initialize", action="store_true", default=False, + help="For first time running the command against the old format") + parser.add_argument("-r", "--readmeskip", action="store_true", default=False, + help="Skip generating a README.md") + parser.add_argument("-l", "--listing", action="store", default="listing.json") + parser.add_argument("-d", "--debug", action="store_true", default=False, + help="Debugging output") + parser.add_argument("token") + args = parser.parse_args(sys.argv[1:]) + global token + token = args.token + + pluginjson = Path("./plugins.json") + + oldPlugins = {} + shortUrls = {} + if pluginjson.exists(): + with open(pluginjson) as pluginsFile: + for i, plugin in enumerate(json.load(pluginsFile)): + # Create lookup for existing urls to avoid duplication + if "packageShortUrl" in plugin and len(plugin["packageShortUrl"]) > 0: + shortUrls[plugin["packageUrl"]] = plugin["packageShortUrl"] + oldPlugins[plugin["projectData"]["full_name"]] = plugin["lastUpdated"] + + allPlugins = {} + listing = json.load(open(args.listing, "r", encoding="utf-8")) + for i, plugin in enumerate(listing): + printProgressBar(i, len(listing), prefix="Collecting Plugin JSON files:") + jsonData = getPluginJson(plugin, shortUrls, debug=args.debug) + if jsonData is not None: + allPlugins[plugin["name"]] = jsonData + printProgressBar(len(listing), len(listing), prefix="Collecting Plugin JSON files:") + + newPlugins = [] + updatedPlugins = [] + removedPlugins = [] + newList = [] + for i, (name, pluginData) in enumerate(allPlugins.items()): + # printProgressBar(i, len(allPlugins), prefix="Updating plugins.json:") + newList.append(name) + pluginIsNew = False + pluginIsUpdated = False + if name not in oldPlugins: + pluginIsNew = True + else: + if name not in oldPlugins: + pluginIsUpdated = True + else: + pluginIsUpdated = pluginData["lastUpdated"] > oldPlugins[name] + + if pluginIsUpdated or pluginIsNew: + if pluginIsNew: + newPlugins.append(name) + elif pluginIsUpdated: + updatedPlugins.append(name) + for name in oldPlugins: + if name not in newList: + removedPlugins.append(name) + + printProgressBar(len(allPlugins), len(allPlugins), prefix="Updating plugins.json: ") + allPluginsList = [] + for name, plugin in allPlugins.items(): + allPluginsList.append(plugin) + + print(f"{len(newPlugins)} New Plugins:") + for plugin in newPlugins: + print(f"\t- {plugin}") + print(f"{len(updatedPlugins)} Updated Plugins:") + for plugin in updatedPlugins: + print(f"\t- {plugin}") + print(f"{len(removedPlugins)} Removed Plugins:") + for plugin in removedPlugins: + print(f"\t- {plugin}") + print(f"Writing {pluginjson}") + with open(pluginjson, "w") as pluginsFile: + json.dump(allPluginsList, pluginsFile, indent=" ") + + if not args.readmeskip: + info = "" + if Path("INFO").exists(): + info = open("INFO", encoding="utf-8").read() + u"\n" + with open("README.md", "w", encoding="utf-8") as readme: + readme.write(u"# Binary Ninja Plugins\n\n") + readme.write(u"| PluginName | Author | Description | Last Updated | Type | API | License |\n") + readme.write(u"|------------|--------|-------------|--------------|------|-----|---------|\n") + + for plugin in dict(sorted(allPlugins.items(), key=lambda x: x[1]['name'].casefold())).values(): + api = plugin["api"][0] if "api" in plugin.keys() and isinstance(plugin["api"], list) and len(plugin["api"]) > 0 else "None" + if "type" not in plugin: + plugin['type'] = ["None"] + readme.write(f"|[{plugin['name']}]({plugin['projectUrl']})" + f"|[{plugin['author']}]({plugin['authorUrl']})" + f"|{plugin['description']}" + f"|{datetime.fromtimestamp(plugin['lastUpdated']).date()}" + f"|{', '.join(sorted(plugin['type']))}" + f"|{api}" # API type + f"|{plugin['license']['name']}|\n") + readme.write(info) + + +if __name__ == "__main__": + main() diff --git a/generate_plugininfo.py b/generate_plugininfo.py new file mode 100755 index 0000000..3c09882 --- /dev/null +++ b/generate_plugininfo.py @@ -0,0 +1,322 @@ +#!/usr/bin/env python3 +""" +This script helps in the process of creating required metadata to add a plugin to the Binary Ninja plugin repository +""" +import json +import argparse +import os +import io +import datetime +from builtins import input + +currentpluginmetadataversion = 2 + +validPluginTypes = ["core", "ui", "binaryview", "architecture", "helper"] +validApis = ["python2", "python3"] +validPlatforms = ["Darwin", "Windows", "Linux"] +requiredLicenseKeys = ["name", "text"] + +def validateList(data, name, validList): + if name not in data: + print("Warning: '{}' field doesn't exist".format(name)) + return False + elif not isinstance(data[name], list): + print("Error: '{}' field isn't a list".format(name)) + return False + + success = True + for item in data[name]: + if item not in validList: + print("Error: plugin {}: {} not one of {}".format(name, item, validList)) + success = False + return success + +def validateString(data, name): + if name not in data: + print("Error: '{}' field doesn't exist".format(name)) + return False + elif type(data[name]).__name__ not in ("unicode", "str"): # a python 2/3 compliant check for string type + print("Error: '{}' field is {} not a string".format(name, type(data[name]))) + return False + return True + +def validateInteger(data, name): + if name not in data: + print("Error: '{}' field doesn't exist.".format(name)) + return False + elif not isinstance(data[name], int): + print("Error: '{}' is {} not an integer value".format(name, type(data[name]))) + return False + return True + +def validateStringMap(data, name, validKeys, requiredKeys=None): + if name not in data: + print("Error: '{}' field doesn't exist.".format(name)) + return False + elif not isinstance(data[name], dict): + print("Error: '{}' is {} not a dict type".format(name, type(data[name]))) + return False + + success = True + if requiredKeys is not None: + for key in requiredKeys: + if key not in data[name]: + print("Error: required subkey '{}' not in {}".format(key, name)) + success = False + + for key in data[name].keys(): + if key not in validKeys: + print("Error: key '{}' not is not in the set of valid keys {}".format(key, validKeys)) + success = False + + return success + +def validateRequiredFields(data): + success = validateInteger(data, "pluginmetadataversion") + if success: + if data["pluginmetadataversion"] != currentpluginmetadataversion: + print("Error: 'pluginmetadataversion' is not the correct version") + success = False + else: + print("Current version is {}".format(currentpluginmetadataversion)) + + success &= validateString(data, "name") + success &= validateList(data, "type", validPluginTypes) + success &= validateList(data, "api", validApis) + success &= validateString(data, "description") + success &= validateString(data, "longdescription") + success &= validateStringMap(data, "license", requiredLicenseKeys, requiredLicenseKeys) + validPlatformList = validateList(data, "platforms", validPlatforms) + success &= validPlatformList + success &= validateStringMap(data, "installinstructions", validPlatforms, list(data["platforms"]) if validPlatformList else None) + success &= validateString(data, "version") + success &= validateString(data, "author") + success &= validateInteger(data, "minimumbinaryninjaversion") + return success + +def getCombinationSelection(validList, prompt, maxItems=None): + if maxItems == None: + maxItems = len(validList) + + prompt2 = "Enter comma separated list of items> " + if maxItems == 1: + prompt2 = "> " + while True: + print(prompt) + for i, item in enumerate(validList): + print("\t{:>3}: {}".format(i, item)) + items = filter(None, input(prompt2).split(",")) + result = [] + success = True + for item in items: + try: + value = int(item.strip()) + except ValueError: + print("Couldn't convert {} to integer".format(item)) + success = False + break + if value < 0 or value >= len(validList): + print("{} is not a valid selection".format(value)) + success = False + break + else: + result.append(validList[value]) + if success: + return result + +licenseTypes = { + "MIT" : """Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.""", + "2-Clause BSD" : """Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.""", + "Apache-2.0" : """Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\n\thttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.""", + "LGPL-2.0" : """This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\n\nThis library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA""", + "LGPL-2.1" : """This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.\n\nThis library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA""", + "LGPL-3.0" : """This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option) any later version.\n\nThis library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA""", + "GPL-2.0" : """This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program; if not, see .""", + "GPL-3.0" : """This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see .""" +} + +def generatepluginmetadata(): + data = {} + data["pluginmetadataversion"] = 2 + data["name"] = input("Enter plugin name: ") + data["author"] = input("Enter your name or the name you want this plugin listed under: ") + data["type"] = getCombinationSelection(validPluginTypes, "Which types of plugin is this? ") + data["api"] = getCombinationSelection(validApis, "Which api's are supported? ") + data["description"] = input("Enter a short description of this plugin (50 characters max): ") + data["longdescription"] = input("Enter a full description of this plugin (Markdown formatted): ") + data["license"] = {} + + licenseTypeNames = ["Other"] + licenseTypeNames.extend(licenseTypes.keys()) + data["license"]["name"] = getCombinationSelection(licenseTypeNames, "Enter the license type of this plugin:", 1)[0] + if data["license"]["name"] == "Other": + data["license"]["name"] = input("Enter License Type: ") + data["license"]["text"] = input("Enter License Text: ") + else: + data["license"]["text"] = licenseTypes[data["license"]["name"]] + + year = datetime.datetime.now().year + holder = data["author"] + + answer = input("Is this the correct copyrigtht information?\n\tCopyright {year} {holder}\n[Y/n]: ".format(year=year, holder=holder)) + if answer not in ("Y", "y", ""): + year = input("Enter copyright year: ") + holder = input("Enter copyright holder: ") + + data["license"]["text"] = "Copyright {year} {holder}\n\n".format(year=year, holder=holder) + data["license"]["text"] + data["platforms"] = getCombinationSelection(validPlatforms, "Which platforms are supported? ") + + data["installinstructions"] = {} + for platform in data["platforms"]: + print("Enter Markdown formatted installation directions for the following platform: ") + data["installinstructions"][platform] = input("{}: ".format(platform)) + data["version"] = input("Enter the version string for this plugin. ") + data["minimumbinaryninjaversion"] = int(input("Enter the minimum build number that you've successfully tested this plugin with: ")) + return data + + +readmeTemplate = u"""# {name} (v{version}) +Author: **{author}** + +_{description}_ + +## Description: + +{longdescription} +{install} + +## Minimum Version + +This plugin requires the following minimum version of Binary Ninja: + +* {minimum} + +{dependencies} +## License + +This plugin is released under a {license} license. +## Metadata Version + +{metadataVersion} +""" + +def generateReadme(plugin): + install = None + if "installinstructions" in plugin: + install = "\n\n## Installation Instructions" + for platform in plugin["installinstructions"]: + install += "\n\n### {}\n\n{}".format(platform, plugin["installinstructions"][platform]) + + if "dependencies" in plugin: + dependencies = u"\n\n## Required Dependencies\n\nThe following dependencies are required for this plugin:\n\n" + for dependency in plugin["dependencies"]: + dependencylist = u", ".join(plugin["dependencies"][dependency]) + dependencies += u" * {dependency} - {dependencylist}\n".format(dependency = dependency, dependencylist = dependencylist) + dependencies += "\n" + else: + dependencies = "" + + return readmeTemplate.format(name=plugin["name"], version=plugin["version"], + author=plugin["author"], description=plugin["description"], + longdescription=plugin["longdescription"], install=install, + minimum=plugin["minimumbinaryninjaversion"], dependencies=dependencies, + license=plugin["license"]["name"], metadataVersion=plugin["pluginmetadataversion"]) + + +def main(): + parser = argparse.ArgumentParser(description="Generate README.md (and optional LICENSE) from plugin.json metadata") + parser.add_argument("-a", "--all", help="Generate all supporting information needed (plugin.json, README.md, LICENSE)", action="store_true") + parser.add_argument("-p", "--plugin", help="Interactively generate plugin.json file", action="store_true") + parser.add_argument("-r", "--readme", help="Automatically generate README.md", action="store_true") + parser.add_argument("-l", "--license", help="Automatically generate LICENSE file", action="store_true") + parser.add_argument("-f", "--force", help="Force overwrite of existing files", action="store_true") + parser.add_argument("-v", "--validate", help="Validate existing plugin.json only", metavar="JSON") + args = parser.parse_args() + + + # Just validate an existing plugin.json + if args.validate is not None: + if validateRequiredFields(json.load(io.open(args.validate, "r", encoding="utf8"))): + print("Successfully validated json file") + else: + print("Error: json validation failed") + return + + pluginjson = "plugin.json" + + # Enable all the options if --all is selected + if args.all: + args.plugin = True + args.readme = True + args.license = True + + if args.plugin: + plugin = generatepluginmetadata() + else: + try: + plugin = json.load(io.open(pluginjson, "r", encoding="utf8")) + except json.JSONDecodeError: + print("File {} doesn't contain valid json".format(pluginjson)) + return + except Exception: + print("File {} doesn't exist".format(pluginjson)) + return + + print("-----------------------------------------------------------------") + if validateRequiredFields(plugin): + print("Successfully validated json file") + else: + print("Error: json validation failed") + return + + if "python2" in plugin["api"] and "python3" not in plugin["api"]: + print("Warning: This python plugin doesn't support python3, python2 support will soon be deprecated.") + print(" Please consider upgrading you plugin to support python3") + + if args.plugin: + skip = False + print("-----------------------------------------------------------------") + if os.path.isfile(pluginjson) and not args.force and args.plugin: + print("{} already exists.".format(pluginjson)) + response = input("Overwrite it? (N,y) ") + if response != "y": + print("Not overwriting plugin.json") + skip = True + if not skip: + print("Creating plugin.json.") + with io.open(pluginjson, "w", encoding="utf8") as pluginfile: + pluginfile.write(json.dumps(plugin, indent=" ")) + + if args.readme: + print("-----------------------------------------------------------------") + readme = os.path.join(os.path.dirname(pluginjson), "README.md") + skip = False + if os.path.isfile(readme) and not args.force: + print("{} already exists.".format(readme)) + response = input("Overwrite it? (N,y) ") + if response != "y": + print("Not overwriting README.md") + skip = True + if not skip: + print("Creating README.md") + with io.open(readme, "w", encoding="utf8") as readmeFile: + readmeFile.write(generateReadme(plugin)) + + if args.license: + print("-----------------------------------------------------------------") + licenseFile = os.path.join(os.path.dirname(pluginjson), "LICENSE") + skip = False + if os.path.isfile(licenseFile) and not args.force: + print("{} already exists.".format(licenseFile)) + response = input("Overwrite it? (N,y) ") + if response != "y": + print("Not overwriting LICENSE") + skip = True + if not skip: + print("Creating LICENSE") + with io.open(licenseFile, "w", encoding="utf8") as lic: + lic.write(plugin["license"]["text"]) + + +if __name__ == "__main__": + main() diff --git a/listing.json b/listing.json new file mode 100644 index 0000000..78712ad --- /dev/null +++ b/listing.json @@ -0,0 +1,718 @@ +[ + { + "name": "bliutech/mbased", + "auto_update": true + }, + { + "name": "1337-42/SimpleYaraBN", + "auto_update": true + }, + { + "name": "ScriptWare-Software/native-predicate-solver_loader", + "auto_update": true + }, + { + "name": "mrphrazer/obfuscation_analysis", + "auto_update": true + }, + { + "name": "eybisi/bn-riscy-business", + "auto_update": true + }, + { + "name": "pathtofile/binja_plugin_copy_deeplink", + "auto_update": true + }, + { + "name": "redthing1/binja_moonanalyzer", + "auto_update": true + }, + { + "name": "redthing1/binja_minidump", + "auto_update": true + }, + { + "name": "unknowntrojan/binja_cooltypeoxidizer", + "auto_update": true + }, + { + "name": "cyber-defence-campus/mole", + "auto_update": true + }, + { + "name": "interruptlabs/header_query_bn", + "auto_update": true + }, + { + "name": "ald3ns/copy-as-yara", + "auto_update": true + }, + { + "name": "MCPPhalanx/binaryninja-mcp", + "auto_update": true + }, + { + "name": "psifertex/bnwrap", + "auto_update": true + }, + { + "name": "fosdickio/binary_ninja_mcp", + "auto_update": true + }, + { + "name": "ElykDeer/tanto-devtools", + "auto_update": true + }, + { + "name": "austinzwile/TypeOxidizer", + "auto_update": true + }, + { + "name": "otter-sec/bn-ebpf-solana", + "auto_update": true + }, + { + "name": "xorhex/binjaextras", + "auto_update": true + }, + { + "name": "CouleeApps/bn_inspectors", + "auto_update": true + }, + { + "name": "redballoonsecurity/permap", + "auto_update": true + }, + { + "name": "xorhex/binjaextras", + "auto_update": true + }, + { + "name": "valters-tomsons/bninja-ps3", + "auto_update": true + }, + { + "name": "droe/binja-blocks", + "auto_update": true + }, + { + "name": "d0mnik/binja_snapshot_manager", + "auto_update": true + }, + { + "name": "psifertex/qsview", + "auto_update": true + }, + { + "name": "adrianherrera/binaryninja-gtirb", + "auto_update": true + }, + { + "name": "junron/auto-enum", + "auto_update": true, + "subdir": "binjastub" + }, + { + "name": "Accenture/NEC850_Architecture", + "view_only": true + }, + { + "name": "Martyx00/PowerPC-VLE-Extension", + "view_only": true + }, + { + "name": "computerman00/BinaryNinja-PSVitaLoader", + "auto_update": true + }, + { + "name": "unknowntrojan/binja_coolsigmaker", + "view_only": true + }, + { + "name": "computerman00/BinaryNinja-PSVitaLoader", + "auto_update": true + }, + { + "name": "redthing1/binja_gameroms_plugin", + "auto_update": true + }, + { + "name": "nettitude/binja-fix-stomped-imports", + "auto_update": true + }, + { + "name": "redthing1/binja_unisymbol", + "auto_update": true + }, + { + "name": "jtang613/BinAssist", + "auto_update": true + }, + { + "name": "v-rzh/mclf-binja-loader", + "auto_update": true + }, + { + "name": "0xricksanchez/Shellcoder", + "auto_update": true + }, + { + "name": "ahaggard2013/binaryninja-ollama", + "auto_update": true + }, + { + "name": "ergrelet/themida-unmutate-bn", + "auto_update": true + }, + { + "name": "leandrofroes/bn_ifl", + "auto_update": true + }, + { + "name": "jordan9001/ctypes_export", + "auto_update": true + }, + { + "name": "amtal/droog", + "auto_update": true + }, + { + "name": "matteyeux/binja-win-docs", + "auto_update": true + }, + { + "name": "riskydissonance/binja-doc-lookup", + "auto_update": true + }, + { + "name": "elbee-cyber/RopView", + "auto_update": true + }, + { + "name": "ivision-research/banjo", + "auto_update": true + }, + { + "name": "interruptlabs/semgrep_bn", + "auto_update": true + }, + { + "name": "mrphrazer/reverser_ai", + "auto_update": true + }, + { + "name": "zznop/efi-inspector", + "auto_update": true + }, + { + "name": "zznop/te-loader", + "auto_update": true + }, + { + "name": "x64dbg/x64dbgbinja", + "auto_update": true + }, + { + "name": "CTM1/BinjaDelphiMapper", + "auto_update": true + }, + { + "name": "psifertex/discordpresence", + "auto_update": true + }, + { + "name": "dzervas/frinja", + "auto_update": true + }, + { + "name": "moval0x1/CommentsAndSymbols", + "auto_update": true + }, + { + "name": "moval0x1/BinjaExportTox64dbg", + "auto_update": true + }, + { + "name": "PistonMiner/binaryninja-go-callconv", + "auto_update": true + }, + { + "name": "xclusivor/binaryninja-xbe", + "auto_update": true + }, + { + "name": "cxiao/rust_string_slicer", + "auto_update": true + }, + { + "name": "saagarjha/binja-swift-demangler", + "auto_update": true + }, + { + "name": "xusheng6/binja-GoReSym", + "auto_update": true + }, + { + "name": "xusheng6/add-xfg-xref", + "auto_update": true + }, + { + "name": "cxiao/rust_type_layout_helper_bn", + "auto_update": true + }, + { + "name": "jonpalmisc/bn-notepad", + "auto_update": true + }, + { + "name": "Njord0/BNPyc", + "auto_update": true + }, + { + "name": "rikodot/binja_native_sigscan_loader", + "auto_update": true + }, + { + "name": "binsync/binsync", + "auto_update": true, + "subdir": "binsync/stub_files" + }, + { + "name": "lockbox/pd-ninja", + "auto_update": true + }, + { + "name": "dayzerosec/AMD-SP-Loader", + "auto_update": true + }, + { + "name": "mahaloz/decomp2dbg", + "auto_update": true, + "subdir": "decompilers/d2d_binja" + }, + { + "name": "cxiao/hashdb_bn", + "auto_update": true + }, + { + "name": "elbee-cyber/analyze_char_arrays", + "auto_update": true + }, + { + "name": "dipusone/golang_pclntab_parser", + "auto_update": true + }, + { + "name": "skr0x1c0/ipybinja", + "auto_update": true + }, + { + "name": "AsherDLL/PCDump-bn", + "auto_update": true + }, + { + "name": "WhatTheFuzz/binaryninja-openai", + "auto_update": true + }, + { + "name": "nshp/binaryninja-printf", + "auto_update": true + }, + { + "name": "crytic/ethersplay", + "auto_update": true, + "subdir": "ethersplay" + }, + { + "name": "seeinglogic/ariadne", + "auto_update": true + }, + { + "name": "scmerrill/golang_1_18_restore_names", + "auto_update": true + }, + { + "name": "pbiernat/ripr", + "auto_update": true + }, + { + "name": "SmoothHacker/TypeLib-Exporter", + "auto_update": true + }, + { + "name": "ex0dus-0x/fuzzable", + "auto_update": true + }, + { + "name": "hyuunnn/Hyara", + "auto_update": true, + "subdir": "hyara_lib/integration/bn_hyara" + }, + { + "name": "tizmd/binja-v850", + "auto_update": true + }, + { + "name": "CySHell/ClassyPP", + "auto_update": true + }, + { + "name": "0bs3n/arch-blackfin", + "auto_update": true + }, + { + "name": "matteyeux/comments-viewer", + "auto_update": true + }, + { + "name": "Ayrx/binja-typemanager", + "auto_update": true + }, + { + "name": "0cyn/bn-dyldsharedcache", + "auto_update": true + }, + { + "name": "ImNotAVirus/delphi_ninja", + "auto_update": true + }, + { + "name": "EliseZeroTwo/SEH-Helper", + "auto_update": true + }, + { + "name": "0xb0bb/0CD", + "auto_update": true + }, + { + "name": "fkie-cad/dewolf", + "auto_update": true + }, + { + "name": "fabianfreyer/binja-il-hierarchy", + "auto_update": true + }, + { + "name": "elbiazo/calltree", + "auto_update": true + }, + { + "name": "bootleg/ret-sync", + "auto_update": true, + "subdir": "ext_bn/retsync" + }, + { + "name": "zznop/bn-kconfig-recover", + "auto_update": true + }, + { + "name": "gamozolabs/coff_nm", + "auto_update": true, + "subdir": "binaryninja/dbg_load" + }, + { + "name": "ehennenfent/binja_explain_instruction", + "auto_update": true + }, + { + "name": "EliseZeroTwo/iBoot-Binja-Loader", + "auto_update": true + }, + { + "name": "zackorndorff/binja-xtensa", + "auto_update": true + }, + { + "name": "gaasedelen/lighthouse", + "auto_update": true, + "subdir": "binjastub" + }, + { + "name": "CouleeApps/hex_integers", + "auto_update": true + }, + { + "name": "xpcmdshell/SysctlHunter", + "auto_update": true + }, + { + "name": "PistonMiner/binaryninja-gc-load-map", + "auto_update": true + }, + { + "name": "PistonMiner/binaryninja-gc-dol", + "auto_update": true + }, + { + "name": "amtal/microblaze", + "auto_update": true + }, + { + "name": "zznop/bn-uefi-helper", + "auto_update": true + }, + { + "name": "yellowbyte/opaque-predicates-detective", + "auto_update": true + }, + { + "name": "jonpalmisc/screenshot_ninja", + "auto_update": true + }, + { + "name": "Ayrx/binja-JNIAnalyzer", + "auto_update": true + }, + { + "name": "mrphrazer/obfuscation_detection", + "auto_update": true + }, + { + "name": "psifertex/callgraph", + "auto_update": true + }, + { + "name": "psifertex/tagteam", + "auto_update": true + }, + { + "name": "fgsect/JMPscare-binja", + "auto_update": true + }, + { + "name": "samrussell/binja-gameboy", + "auto_update": true + }, + { + "name": "inspier/BinjaRustDemangler", + "auto_update": true + }, + { + "name": "PistonMiner/binaryninja-bindiff-viewer", + "auto_update": true + }, + { + "name": "kryptoslogic/binja_degobfuscate", + "auto_update": true + }, + { + "name": "travisgoodspeed/symgrate2-binja-plugin", + "auto_update": true + }, + { + "name": "Martyx00/VulnFanatic", + "auto_update": true + }, + { + "name": "Martyx00/ghinja", + "auto_update": true + }, + { + "name": "matteyeux/seprom-loader", + "auto_update": true + }, + { + "name": "murx-/devi_binja", + "auto_update": true + }, + { + "name": "d-we/binja-golang-symbol-restore", + "auto_update": true + }, + { + "name": "f0rki/bn-goloader", + "auto_update": true + }, + { + "name": "jeffli678/bnhook", + "auto_update": true + }, + { + "name": "thebabush/nampa", + "auto_update": true + }, + { + "name": "trib0r3/binja-yara", + "auto_update": true + }, + { + "name": "shizmob/binja-depanalyzer", + "auto_update": true + }, + { + "name": "hugsy/gef-binja", + "auto_update": true + }, + { + "name": "joshwatson/binaryninja-msp430", + "auto_update": true + }, + { + "name": "apekros/binja_sigmaker", + "auto_update": true + }, + { + "name": "Vasco-jofra/jump-table-branch-editor", + "tag": "v1.0" + }, + { + "name": "zznop/bnida", + "auto_update": true + }, + { + "name": "zznop/bn-genesis", + "auto_update": true + }, + { + "name": "zznop/bn-kallsyms", + "auto_update": true + }, + { + "name": "zznop/bn-recursion", + "auto_update": true + }, + { + "name": "bkerler/annotate", + "tag": "v1.2" + }, + { + "name": "verylazyguy/binaryninja-vmndh", + "auto_update": true + }, + { + "name": "0x1F9F1/binja-msvc", + "auto_update": true + }, + { + "name": "withzombies/bnil-graph", + "auto_update": true + }, + { + "name": "mechanicalnull/sourcery_pane", + "auto_update": true + }, + { + "name": "chame1eon/binaryninja-frida", + "auto_update": true + }, + { + "name": "Vasco-jofra/format-string-finder-binja", + "auto_update": true + }, + { + "name": "shareef12/driveranalyzer", + "auto_update": true + }, + { + "name": "carstein/Syscaller", + "auto_update": true + }, + { + "name": "404d/peutils", + "auto_update": true + }, + { + "name": "404d/autoutils", + "auto_update": true + }, + { + "name": "ForAllSecure/bncov", + "auto_update": true + }, + { + "name": "whitequark/binja_function_abi", + "auto_update": true + }, + { + "name": "whitequark/binja_itanium_cxx_abi", + "auto_update": true + }, + { + "name": "whitequark/binja-i8086", + "auto_update": true + }, + { + "name": "whitequark/binja-m16c", + "auto_update": true + }, + { + "name": "c3r34lk1ll3r/Instruction_Slicer", + "auto_update": true + }, + { + "name": "icecr4ck/bnGB", + "auto_update": true + }, + { + "name": "galenbwill/binaryninja-m68k", + "auto_update": true + }, + { + "name": "janbbeck/CleanTricks", + "auto_update": true + }, + { + "name": "uni-due-syssec/bn-riscv", + "auto_update": true + }, + { + "name": "Cryptogenic/idc_importer", + "auto_update": true + }, + { + "name": "atxsinn3r/BinjaHLILDump", + "auto_update": true + }, + { + "name": "lunixbochs/revsync", + "auto_update": true + }, + { + "name": "toolCHAINZ/DUMB", + "auto_update": true + }, + { + "name": "toolCHAINZ/hexfiles", + "auto_update": true + }, + { + "name": "ivision-research/binjawa", + "auto_update": true + }, + { + "name": "vtil-project/VTIL-BinaryNinja", + "auto_update": true + }, + { + "name": "EliseZeroTwo/Switch-Binja-Loader", + "auto_update": true + }, + { + "name": "borzacchiello/seninja", + "auto_update": true + }, + { + "name": "Rami114/cryptoscan", + "auto_update": true + }, + { + "name": "mauronz/binja-emotet", + "auto_update": true + }, + { + "name": "BlackwingHQ/iBoot64Binja", + "auto_update": true + }, + { + "name": "sum-catnip/logrn", + "auto_update": true + }, + { + "name": "lwerdna/call_shellcode", + "auto_update": true + }, + { + "name": "lwerdna/keypatch_binja", + "auto_update": true + } +] diff --git a/mirror-all-plugins.sh b/mirror-all-plugins.sh new file mode 100755 index 0000000..d4dcd66 --- /dev/null +++ b/mirror-all-plugins.sh @@ -0,0 +1,17 @@ +#!/bin/bash +DOWNLOAD_DIR="mirror" +if [ ! -d $DOWNLOAD_DIR ] +then + mkdir $DOWNLOAD_DIR +fi +for plugin in `grep '"name"' listing.json|awk -F\" '{print $4}'` +do + dirname=`echo $plugin|sed 's/.*\///g'` + if [ ! -d $DOWNLOAD_DIR/$dirname ] + then + git -C $DOWNLOAD_DIR clone https://github.com/$plugin + fi + pushd $DOWNLOAD_DIR/$dirname + git submodule update --init --recursive + popd +done diff --git a/plugins.json b/plugins.json index 9e67da4..b092f39 100644 --- a/plugins.json +++ b/plugins.json @@ -1,1680 +1,7237 @@ [ - { - "api": "python2", - "author": "Michal Melewski ", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [] - }, - "description": "A plugins that print out details about encountered syscalls.", - "license": { - "name": "MIT", - "text": "Copyright (c) \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-175", - "release": "1.0.13" - }, - "name": "Syscaller", - "path": "Syscaller", - "type": [ - "binaryview" - ], - "url": "https://github.com/carstein/Syscaller", - "version": "0.1" - }, - { - "api": "python2", - "author": "Mitchell Johnson", - "description": "A disassembler and lifter for the V850 architecture.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 Mitchell Johnson.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin disassembles V850 assembly code and generates LLIL.", - "minimumBinaryNinjaVersion": { - "release": "1.1.922" - }, - "name": "V850 Architecture Plugin", - "path": "binaryninja-v850", - "type": [ - "architecture" - ], - "url": "https://github.com/ehntoo/binaryninja-v850", - "version": "0.1" - }, - { - "api": "python2", - "author": "Josh Watson", - "description": "A plugin that adds bookmarking functionality.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2016 Josh Watson.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin enables a Binary Ninja user to bookmark addresses of interest and quickly navigate back to them at a later time. As the API for loading and saving user data to the analysis database is not available yet, the bookmarks must be manually saved and loaded to a separate file for now.\n\nTo install this plugin, navigate to your Binary Ninja plugins directory, and run\n\n```git clone https://github.com/joshwatson/binaryninja-bookmarks.git bookmarks```\n\nThen create a python file called `bookmarks.py` with the contents\n\n```import bookmarks```", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-87" - }, - "name": "Bookmarks", - "path": "binaryninja-bookmarks", - "type": [ - "core", - "ui" - ], - "url": "https://github.com/joshwatson/binaryninja-bookmarks", - "version": "0.2b" - }, - { - "api": "python2", - "author": "Josh Watson", - "description": "A `BinaryView` for Microcorruption CTF memory dumps", - "license": { - "name": "MIT", - "text": "Copyright (c) 2016 Josh Watson.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin provides a `BinaryView` for memory dumps of Microcorruption CTF challenges.\n\nTo install this plugin, navigate to your Binary Ninja plugins directory, and run\n\n`git clone https://github.com/joshwatson/binaryninja-microcorruption.git microcorruption`\n\nMemory dumps can be generated by copy-pasting the entire contents of the memory window from a microcorruption challenge into a text file, then processing it with [this script](https://gist.github.com/joshwatson/90f855e82a7be5c4a1fea2b46f8bf62b).", - "minimumBinaryNinjaVersion": { - "release (Commercial)": "1.0.320", - "release (Personal)": "1.0.13" - }, - "name": "Microcorruption BinaryView Plugin", - "path": "binaryninja-microcorruption", - "type": [ - "core", - "ui", - "binaryview" - ], - "url": "https://github.com/joshwatson/binaryninja-microcorruption", - "version": "0.1b" - }, - { - "api": "python2", - "author": "Brick", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [] - }, - "description": "A Binary Ninja plugin to scan for MSVC constructs", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 Brick.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "9999" - }, - "name": "binja-msvc", - "path": "binja-msvc", - "type": [ - "core", - "ui", - "architecture", - "binaryview" - ], - "url": "https://github.com/DatBrick/binja-msvc", - "version": "1.0 alpha" - }, - { - "api": "python2", - "author": "Stormshield", - "dependencies": { - "pip": [ - "Pygments" - ] - }, - "description": "The plugin recovers C code from machine code.", - "license": { - "name": "MIT", - "text": "Original work Copyright (c) 2017 crazy rabbidz\nModified work Copyright (c) 2018 Stormshield\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "The plugin uses RetDec to decompile code machine into C code. The plugin works offline.", - "minimumBinaryNinjaVersion": { - "dev": "1.1.dev-1060", - "release": "9999" - }, - "name": "RetDec Offline Decompiler", - "path": "retdec_offline", - "type": [ - "core", - "ui", - "architecture", - "binaryview" - ], - "url": "https://github.com/ThisIsSecurity/retdec_offline", - "version": "1.0 alpha" - }, - { - "api": "python3", - "author": "zznop", - "description": "SEGA Genesis ROM Hacking Toolkit", - "license": { - "name": "MIT", - "text": "Copyright (c) 2019 zznop\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Suite of plugins for SEGA Genesis ROM hacking and Motorola 68000 binary patching", - "minimumBinaryNinjaVersion": { - "release": "1.1.1470" - }, - "name": "genesis", - "path": "bn-genesis", - "type": [ - "binaryview" - ], - "url": "https://github.com/zznop/bn-genesis", - "version": "1.0" - }, - { - "api": "python2", - "author": "Toshi Piazza & Kareem El-Faramawi", - "description": "Deobfuscator for LLVM-Obfuscator", - "license": { - "name": "MIT", - "text": "Copyright (c) 2017 Toshi Piazza and Kareem El-Faramawi.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Emits a cleaned binary from one that has been obfuscated via LLVM-obfuscator's control-flow flattening pass", - "minimumBinaryNinjaVersion": { - "dev": "1.1.dev-1015" - }, - "name": "LLVM Deobfuscator", - "path": "llvm-deobfuscator", - "type": [ - "core", - "ui" - ], - "url": "https://github.com/RPISEC/llvm-deobfuscator", - "version": "0.1" - }, - { - "api": "python2", - "author": "rick2600", - "dependencies": {}, - "description": "Print call chains to a target function", - "license": { - "name": "MIT", - "text": "Copyright (c) 2016 rick2600\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Print call chains to a target function by recursively following xrefs", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "9999" - }, - "name": "Xref Call Finder", - "path": "xref_call_finder", - "type": [ - "core", - "ui", - "architecture", - "binaryview" - ], - "url": "https://github.com/rick2600/xref_call_finder", - "version": "1.0 alpha" - }, - { - "api": "python2", - "author": "Stormshield", - "description": "The plugin de-obfuscates chained jumps.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 Stormshield\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "The plugin de-obfuscates chained jumps.", - "minimumBinaryNinjaVersion": { - "dev": "1.1.dev-1060", - "release": "9999" - }, - "name": "Djumpo Unchained", - "path": "djumpo_unchained", - "type": [ - "core", - "ui", - "architecture", - "binaryview" - ], - "url": "https://github.com/ThisIsSecurity/djumpo_unchained", - "version": "1.0 alpha" - }, - { - "api": "python2", - "author": "SpecterDev", - "description": "Allows users to import idc database dumps from IDA into Binary Ninja.", - "license": { - "name": "MIT", - "text": "Copyright (c) \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Making the switch from IDA to Binary Ninja but need your function names and symbols to carry over? This plugin will take an IDC file and automatically import the functions, strings, and comments.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-175", - "release": "1.0.13" - }, - "name": "IDC Importer", - "path": "idc_importer", - "type": [ - "binaryview" - ], - "url": "https://github.com/Cryptogenic/idc_importer", - "version": "1.0" - }, - { - "api": "python2", - "author": "iGio90", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [ - "requests", - "Pygments" - ] - }, - "description": "", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 Giovanni - iGio90 - Rocca\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "9999" - }, - "name": "secRet.re", - "path": "binja-secret", - "type": [ - "core", - "ui", - "architecture", - "binaryview" - ], - "url": "https://github.com/iGio90/binja-secret", - "version": "0.1" - }, - { - "api": "python2", - "author": "whitequark", - "description": "A plugin that adds a GUI for changing function ABI.", - "license": { - "name": "BSD-0-clause" - }, - "longdescription": "This plugin provides a GUI for adjusting the ABI in a fine-grained way. Calling convention and clobbered registers can be adjusted.", - "name": "function_abi", - "path": "binja_function_abi", - "type": [ - "ui" - ], - "url": "https://github.com/whitequark/binja_function_abi", - "version": "0.1" - }, - { - "api": "python2", - "author": "Patrick Mackinlay", - "description": "A disassembler and lifter for the CLIPPER architecture.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 Patrick Mackinlay.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin disassembles CLIPPER assembly code and generates LLIL.\n\nTo install this plugin, navigate to your Binary Ninja plugins directory, and run\n\n```git clone https://github.com/pmackinlay/binaryninja-clipper.git clipper```", - "minimumBinaryNinjaVersion": { - "release": "1.1.1150" - }, - "name": "CLIPPER Architecture Plugin", - "path": "binaryninja-clipper", - "type": [ - "architecture" - ], - "url": "https://github.com/pmackinlay/binaryninja-clipper", - "version": "0.4" - }, - { - "api": "python2", - "author": "Ben Pottier", - "dependencies": {}, - "description": "A plugin to detect several common crypto constructs and magic vars.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 Ben Pottier\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "A plugin to detect several common crypto constructs and magic vars.", - "minimumBinaryNinjaVersion": { - "dev": "1.1.1190dev", - "release": "9999" - }, - "name": "cryptoscan", - "path": "cryptoscan", - "type": [ - "ui", - "binaryview" - ], - "url": "https://github.com/Rami114/cryptoscan", - "version": "1.0 alpha" - }, - { - "api": "python2", - "author": "extremecoders", - "description": "Python 2.7 architecture plugin.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2017 extremecoders\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This is a Python 2.7 architecture plugin for disassembling raw python bytecode.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "9999" - }, - "name": "bnpy", - "path": "bnpy", - "type": [ - "architecture" - ], - "url": "https://github.com/extremecoders-re/bnpy", - "version": "1.0 alpha" - }, - { - "api": "python2", - "author": "Mark Griffin", - "description": "Code coverage analysis and visualization.", - "license": { - "name": "MIT", - "text": "Copyright 2019 ForAllSecure, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" - }, - "longdescription": "Extensible and scriptable basic block coverage analysis. Import basic block coverage using the context menu (right-click or Tools menu), and optionally do additionally highlighting via context commands or scripting in the python console.", - "minimumBinaryNinjaVersion": { - "stable": "1.1.1470" - }, - "name": "bncov", - "path": "bncov", - "type": [ - "ui", - "coverage", - "analysis" - ], - "url": "https://github.com/ForAllSecure/bncov", - "version": "1.0" - }, - { - "api": "python2", - "author": "whitequark", - "description": "A plugin providing the 16-bit Intel architecture.", - "license": { - "name": "BSD-0-clause" - }, - "name": "Intel 8086 Architecture", - "path": "binja-i8086", - "type": [ - "arch" - ], - "url": "https://github.com/whitequark/binja-i8086", - "version": "0.1" - }, - { - "api": "python2", - "author": "Kevin Hamacher", - "description": "AVR architecture plugin + lifter.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 Kevin Hamacher.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin adds support for the AVR architecture to binaryninja.\nIt lifts most instructions and marks the interrupt vectors by default.\nSupported MCUs: Mega16, Tiny48, Tiny88, XMega256A4. *Please read README.md for more details*.", - "minimumBinaryNinjaVersion": { - "dev": "1.1.0", - "release": "1.1.0" - }, - "name": "AVR Architecture Plugin", - "path": "binaryninja_avr", - "type": [ - "architecture", - "binaryview" - ], - "url": "https://github.com/fluxchief/binaryninja_avr", - "version": "0.1" - }, - { - "api": "python3", - "author": "B.Kerler", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [] - }, - "description": "", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 B.Kerler\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "9999" - }, - "name": "Clipboard", - "path": "binja-clipboard", - "type": [ - "core", - "ui", - "architecture", - "binaryview" - ], - "url": "https://github.com/bkerler/binja-clipboard", - "version": "0.1" - }, - { - "api": "python2", - "author": "Patrick Biernat", - "description": "Package binary code as a Python class backed by Unicorn-Engine", - "license": { - "name": "MIT", - "text": "MIT License Copyright (c) 2017 Patrick Biernat Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "name": "ripr", - "path": "ripr", - "type": [ - "none" - ], - "url": "https://github.com/pbiernat/ripr", - "version": "v1.1" - }, - { - "api": "python2", - "author": "Bambu", - "description": "Creates symbols and renames functions in mach-o binaries", - "license": { - "name": "MIT", - "text": "Copyright (c) 2017 Bambu.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Creates symbols and renames functions in mach-o binaries in order to aid reversing. This is inteded only for x86_64 Mach-O binaries and has not been tested on x86. Also, \"Mach-O Bind Symbols\" requires `dyldinfo`\n\nBefore running:\n\n![Before Image](images/before.png?raw=true \"Before running plugins\")\n\nAfter running:\n\n![After Image](images/after.png?raw=true \"After running plugins\")\n\nTo install this plugin, navigate to your Binary Ninja plugins directory, and run\n\n```git clone https://github.com/bambu/binaryninja-machosymbols.git machosymbols```", - "minimumBinaryNinjaVersion": { - "dev (Commercial)": "1.0.dev-730", - "dev (Personal)": "1.0.dev-730" - }, - "name": "Mach-O Symbols Generator", - "path": "binaryninja-machosymbols", - "type": [ - "ui" - ], - "url": "https://github.com/bambu/binaryninja-machosymbols", - "version": "0.0.1" - }, - { - "api": "python2", - "author": "Simen Lybekk", - "description": "Binary Ninja plugin providing various niche utilities for working with PE binaries", - "license": { - "name": "MIT", - "text": "Copyright (c) 2017-2019 Simen Lybekk\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Utilities for fetching analysis details like function signatures and symbol names from one binaryview to another", - "name": "peutils", - "path": "peutils", - "type": [ - "ui" - ], - "url": "https://github.com/404d/peutils", - "version": "1.0" - }, - { - "api": "python2", - "author": "x64dbg", - "description": "Official x64dbg plugin for Binary Ninja.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2016 x64dbg\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Official x64dbg plugin for Binary Ninja.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-87" - }, - "name": "x64dbgbinja", - "path": "x64dbgbinja", - "type": [ - "binaryview" - ], - "url": "https://github.com/x64dbg/x64dbgbinja", - "version": "1.0" - }, - { - "api": "python2", - "author": "John Levy with help from @carstein", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [] - }, - "description": "A plugins that annotates Windows API function arguments.", - "license": { - "name": "MIT", - "text": "Copyright (c) \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Upon encountering a Windows API function call this plugins uses virtual stack to annotate previous instructions with comments annotating the parameters.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-175", - "release": "1.0.13" - }, - "name": "WinAPI-Annotator", - "path": "WinAPI-Annotator", - "type": [ - "binaryview" - ], - "url": "https://github.com/levyjm/WinAPI-Annotator", - "version": "0.2" - }, - { - "api": "python2", - "author": "B.Kerler with code from John Levy and @carstein", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [] - }, - "description": "A plugin that annotates function arguments.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 B. Kerler\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Upon encountering a function call this plugins uses virtual stack to annotate previous instructions with comments annotating the parameters.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-175", - "release": "1.0.13" - }, - "name": "Annotate Functions", - "path": "annotate", - "type": [ - "binaryview" - ], - "url": "https://github.com/bkerler/annotate", - "version": "1.0" - }, - { - "api": "python2", - "author": "Paolo Montesel (github.com/kenoph)", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [ - "future" - ] - }, - "description": "FLIRT for (binary) ninjas", - "license": { - "name": "LGPL v3" - }, - "longdescription": "Plugin for using FLIRT signatures inside of Binary Ninja. Most of the code is a port from radare's implementation.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "9999" - }, - "name": "Nampa", - "path": "nampa", - "type": [ - "core", - "binaryview" - ], - "url": "https://github.com/kenoph/nampa", - "version": "0.1 alpha" - }, - { - "api": "python2", - "author": "Chris Henry", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [] - }, - "description": "Dumps all MLIL functions, basic blocks, and instruction properties into a JSON file.", - "license": { - "name": "MIT", - "text": "Copyright (c) \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin iterates through the binary and extracts the MLIL instructions and properties, storing them in a JSON file.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "1.0.13" - }, - "name": "binja_JSON_plugin", - "path": "binja_JSON_Plugin", - "type": [ - "binaryview" - ], - "url": "https://github.com/mozark24/binja_JSON_Plugin", - "version": "1.0" - }, - { - "api": "python2", - "author": "verylazyguy", - "description": "A disassembler and lifter for the VMNDH-2k12 architecture.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2016 verylazyguy.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin disassembles VMNDH assembly code and generates LLIL.\n\nTo install this plugin, navigate to your Binary Ninja plugins directory, and run\n\n```git clone https://github.com/verylazyguy/binaryninja-vmndh.git vmndh```", - "minimumBinaryNinjaVersion": { - "release (Commercial)": "1.0.320", - "release (Personal)": "1.0.13" - }, - "name": "VMNDH-2k12 Architecture Plugin", - "path": "binaryninja-vmndh", - "type": [ - "architecture" - ], - "url": "https://github.com/verylazyguy/binaryninja-vmndh", - "version": "0.1" - }, - { - "api": "python2", - "author": "Michal Melewski ", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [] - }, - "description": "A plugins that annotates libc function arguments.", - "license": { - "name": "MIT", - "text": "Copyright (c) \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Upon encountering a libc function call this plugins uses virtual stack to annotate previous instructions with appropriate comment stating argument prototype.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-175", - "release": "1.0.13" - }, - "name": "Annotator", - "path": "Annotator", - "type": [ - "binaryview" - ], - "url": "https://github.com/carstein/Annotator", - "version": "0.2" - }, - { - "api": "python2", - "author": "Hugo Porcher (icecr4ck)", - "description": "Game Boy loader and architecture plugin.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2019 Hugo Porcher.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Game Boy loader and architecture plugin for analyzing and disassembling GB ROMs.", - "minimumBinaryNinjaVersion": { - "dev": "1.1.1470", - "release": "1.1.1470" - }, - "name": "bnGB", - "path": "bnGB", - "type": [ - "architecture", - "binaryview" - ], - "url": "https://github.com/icecr4ck/bnGB", - "version": "1.0" - }, - { - "api": "python2", - "author": "Giulio De Pasquale", - "description": "A disassembler for the Pasticciotto architecture.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2017 Giulio De Pasquale.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin disassembles Pasticciotto assembly code.", - "minimumBinaryNinjaVersion": { - "release (Commercial)": "1.0.776", - "release (Personal)": "1.0.776" - }, - "name": "Pasticciotto Architecture Plugin", - "path": "binaryninja-pasticciotto", - "type": [ - "architecture" - ], - "url": "https://github.com/peperunas/binaryninja-pasticciotto", - "version": "0.0.1" - }, - { - "api": "python2", - "author": "Walter Schell", - "dependencies": {}, - "description": "Right click to patch contents of memory operands", - "license": { - "name": "MIT", - "text": "Copyright (c) \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Allow patching of memor operands from right click menu", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-173", - "release": "1.0.13" - }, - "name": "easypatch", - "path": "easypatch", - "type": [ - "ui" - ], - "url": "https://github.com/walterschell/easypatch", - "version": "1.0 alpha" - }, - { - "api": "python2", - "author": "Josh Watson", - "description": "A disassembler and lifter for the MSP430 architecture.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2016 Josh Watson.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin disassembles MSP430 assembly code and generates LLIL.\n\nTo install this plugin, navigate to your Binary Ninja plugins directory, and run\n\n```git clone https://github.com/joshwatson/binaryninja-msp430.git msp430```\n\nThen create a python file called `msp430.py` with the contents\n\n```import msp430```", - "minimumBinaryNinjaVersion": { - "release": "1.1.922" - }, - "name": "MSP430 Architecture Plugin", - "path": "binaryninja-msp430", - "type": [ - "architecture" - ], - "url": "https://github.com/joshwatson/binaryninja-msp430", - "version": "0.3" - }, - { - "api": "python2", - "author": "snare", - "dependencies": { - "pip": [ - "voltron" - ] - }, - "description": "Synchronise the Binary Ninja binary view with a debugger via Voltron.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2016 snare\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Voltron is a debugger UI framework for LLDB, GDB, WinDbg and VDB. This plugin enables integration of Binary Ninja with Voltron by synchronising the binary view with the debugger's current instruction pointer, and marking breakpoints set in the debugger in the binary view.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "9999" - }, - "name": "Binjatron", - "path": "binjatron", - "type": [ - "ui" - ], - "url": "https://github.com/snare/binjatron", - "version": "0.1" - }, - { - "api": "python2", - "author": "Grant Orndorff", - "dependencies": { - "pip": [ - "filebytes" - ] - }, - "description": "Insert custom hooks", - "license": { - "name": "MIT", - "text": "Copyright (c) 2017 Grant Orndorff\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Currently supports x86 and x86_64 ELF executables.\nWrite a hook in assembly and have it execute as part of your binary. See your hook added to the binary and reflected in the disassembly graph. The code segment of the binary is extended to make room for the hook. After insertion, Save Contents As and run the binary with your inserted code!", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "1.0.13" - }, - "name": "BNHook", - "path": "bnhook", - "type": [ - "core", - "ui" - ], - "url": "https://github.com/orndorffgrant/bnhook", - "version": "1.0 alpha" - }, - { - "api": "python2", - "author": "Eric Hennenfent", - "dependencies": { - "apt": [ - "python-pyqt5" - ], - "installers": [], - "other": [], - "pip": [] - }, - "description": "Displays a window that explains in simple English what an assembly instruction does", - "license": { - "name": "Apache 2", - "text": "https://github.com/ehennenfent/binja_explain_instruction/blob/master/LICENSE" - }, - "longdescription": "Parses the Lifted IL for an instruction and uses it to generate an English description of what an instruction does. Works best on x86 and x86_64. See: https://github.com/ehennenfent/binja_explain_instruction/blob/master/README.md", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-783", - "release": "1" - }, - "name": "Explain Instruction", - "path": "binja_explain_instruction", - "type": [ - "ui", - "education" - ], - "url": "https://github.com/ehennenfent/binja_explain_instruction", - "version": "1.0 alpha" - }, - { - "api": "python2", - "author": "Michal Melewski ", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [] - }, - "description": "Report about functions in given binary.", - "license": { - "name": "MIT", - "text": "Copyright (c) \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Plugin iterates through all identified functions in a given binary counting instructions, basic blocks, function calls and code references. Gathered information are then printed out in a tabular form.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-175", - "release": "1.1.1038" - }, - "name": "Keyhole", - "path": "Keyhole", - "type": [ - "ui" - ], - "url": "https://github.com/carstein/Keyhole", - "version": "0.1" - }, - { - "api": [ - "python2", - "python3" - ], - "author": "jofra (@V_jofra)", - "description": "A plugin that eases fixing jump table branches.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2019 Vasco Franco\n\n\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\n\nof this software and associated documentation files (the \"Software\"), to deal\n\nin the Software without restriction, including without limitation the rights\n\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\ncopies of the Software, and to permit persons to whom the Software is\n\nfurnished to do so, subject to the following conditions:\n\n\n\nThe above copyright notice and this permission notice shall be included in all\n\ncopies or substantial portions of the Software.\n\n\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\nSOFTWARE." - }, - "longdescription": "This plugin allows you to easily edit the branches of an indirect jump. This is helpful in situations where binja fails to identify jump tables. To fix this, previously you would have to use the python console, but with this plugin you can do it from a simple UI.", - "name": "Jump table branch editor", - "path": "jump-table-branch-editor", - "type": [ - "core", - "ui" - ], - "url": "https://github.com/Vasco-jofra/jump-table-branch-editor", - "version": "1.0" - }, - { - "api": "python3", - "author": "toolchainz", - "description": "A naive auto-struct maker.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2019 toolchainz.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "To make a structure, go to MLIL view, right click on a line, and click `Create Auto Structure`.\n\n Structor will prompt you to choose a variable from the line you selected, and then it will do its level best to make a struct.", - "minimumBinaryNinjaVersion": { - "dev": "1.1.1616" - }, - "name": "structor", - "path": "structor", - "type": [ - "ui", - "analysis", - "structure" - ], - "url": "https://github.com/toolCHAINZ/structor", - "version": "0.1" - }, - { - "api": "python2", - "author": "David Manouchehri", - "dependencies": { - "apt": [ - "apt" - ], - "other": [ - "" - ], - "pip": [ - "r2pipe" - ] - }, - "description": "Uses radare to identify extra symbols", - "license": { - "name": "BSD4", - "text": "Copyright (c) 2016 David Manouchehri.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Uses radare to identify extra symbols", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576" - }, - "name": "Radare2 Linear Sweep Plugin", - "path": "binaryninja-radare2", - "type": [ - "core", - "ui", - "binaryview" - ], - "url": "https://github.com/Manouchehri/binaryninja-radare2", - "version": "0.1 alpha" - }, - { - "api": "python2", - "author": "butters", - "dependencies": {}, - "description": "Uses simplistic techniques to identify additional functions for x86 and x86_64 binaries.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2016 Leopold Stotch.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin aims to provide a temporary solution until a proper linear sweep is included. Millage will vary.", - "minimumBinaryNinjaVersion": { - "release (Commercial)": "1.0.dev-729", - "release (Personal)": "1.0.dev-729" - }, - "name": "Simple Linear Sweep", - "path": "linsweep", - "type": [ - "core", - "ui", - "architecture", - "binaryview" - ], - "url": "https://github.com/lstotch/linsweep", - "version": "1.0 alpha" - }, - { - "api": "python2", - "author": "6e726d", - "dependencies": { - "dev": "1.0.dev-175", - "release": "1.0.13" - }, - "description": "Search for the specific value in the instruction operands.", - "license": { - "name": "MIT", - "text": "Copyright (C) 2018 Andrés Blanco <6e726d@gmail.com>\n\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE." - }, - "longdescription": "Search for the specific value in the instruction operands.", - "minimumBinaryNinjaVersion": {}, - "name": "Search Immediate", - "path": "binaryninja-search", - "type": [ - "ui" - ], - "url": "https://github.com/6e726d/binaryninja-search", - "version": "0.1" - }, - { - "api": "python2", - "author": "Peter Bortas ", - "description": "A loader for Playstation 1 executables", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 Peter Bortas\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Loads Playstation 1 executables and also inserts the names and types of BIOS functions.", - "minimumBinaryNinjaVersion": { - "dev": "1.1.dev-1210", - "release": "9999" - }, - "name": "PSX EXE loader", - "path": "binja-psx", - "type": [ - "binaryview" - ], - "url": "https://github.com/PeterBortas/binja-psx", - "version": "0.2" - }, - { - "api": "python2", - "author": "toolCHAINZ", - "dependencies": {}, - "description": "(ALPHA) Autorename variables that are copies of other variables.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2017 toolCHAINZ\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "A lot of MLIL variables don't do anything, and just shuttle data from location to location.\n\nBy looking at MLIL var definitions and uses, it is possible to identify these trivial cases and automatically rename the variables involved.", - "minimumBinaryNinjaVersion": { - "dev": "1.1.1016-dev" - }, - "name": "Trickle-down Variables", - "path": "trickledown_vars", - "type": [ - "ui" - ], - "url": "https://github.com/toolCHAINZ/trickledown_vars", - "version": "0.1 alpha" - }, - { - "api": "python2", - "author": "Alex3434", - "dependencies": {}, - "description": "Generate Signatures", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 Alex3434\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Generate Signatures to use for pattern scanning in other applications", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "9999" - }, - "name": "SigMaker", - "path": "Binja-SigMaker", - "type": [ - "core", - "ui", - "architecture", - "binaryview" - ], - "url": "https://github.com/Alex3434/Binja-SigMaker", - "version": "1.0 alpha" - }, - { - "api": "python2", - "author": "Florian Magin", - "dependencies": { - "pip": [ - "jupyter", - "qtconsole" - ] - }, - "description": "Spawn an IPython Kernel inside binja .", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 Florian Magin\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin starts an IPython kernel when binja starts which can be attached to with e.g.'jupyter console --existing'\n\nTo get access to the variables like the current open binary view load the extension with '%load_ext binjamagic'\n\nThis extension can be installed via 'pip install ./' from the root of the plugin repo\n\nIf you want the qt console, you will have to install it", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "0" - }, - "name": "Binary Ninja IPython Kernel", - "path": "binja-ipython", - "type": [ - "core" - ], - "url": "https://github.com/ernw/binja-ipython", - "version": "1.0" - }, - { - "api": "python2", - "author": "zznop", - "description": "Binjago static analysis plugin suite.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2017 zznop\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "A suite of Binary Ninja plugins that aid in static analysis and exploitation", - "minimumBinaryNinjaVersion": { - "release": "1.1.922" - }, - "name": "binjago", - "path": "binjago", - "type": [ - "binaryview" - ], - "url": "https://github.com/zznop/binjago", - "version": "1.0" - }, - { - "api": "python2", - "author": "Ryan Stortz (@withzombies)", - "dependencies": { - "apt": [ - "graphviz" - ], - "pip": [] - }, - "description": "A BinaryNinja plugin to graph a BNIL instruction tree", - "license": { - "name": "Apache 2.0", - "text": "https://github.com/withzombies/bnil-graph/blob/master/LICENSE" - }, - "longdescription": "A BinaryNinja plugin to graph a BNIL instruction tree", - "minimumBinaryNinjaVersion": { - "dev": "1.0.776", - "release": "1.0.776" - }, - "name": "bnil-graph", - "path": "bnil-graph", - "type": [ - "ui" - ], - "url": "https://github.com/withzombies/bnil-graph", - "version": "1.0.0" - }, - { - "api": "python2", - "author": "whitequark", - "description": "A plugin providing an analysis for Itanium C++ ABI.", - "license": { - "name": "BSD-0-clause" - }, - "longdescription": "This plugin provides a custom demangler, an analysis that decodes mangled names and updates function signatures, and an analysis that decodes RTTI and vtables and discovers new procedures based on virtual function pointers.", - "name": "Itanium C++ ABI", - "path": "binja_itanium_cxx_abi", - "type": [ - "analysis" - ], - "url": "https://github.com/whitequark/binja_itanium_cxx_abi", - "version": "0.1" - }, - { - "api": "python2", - "author": "rick2600", - "dependencies": { - "graphviz": [ - "graphviz" - ] - }, - "description": "Plugin for Binary Ninja to centralize features useful in static analysis.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2016 rick2600\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Plugin for Binary Ninja to centralize features useful in static analysis.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.13", - "release": "9999" - }, - "name": "BINoculars", - "path": "binoculars", - "type": [ - "ui" - ], - "url": "https://github.com/rick2600/binoculars", - "version": "1.0.13" - }, - { - "api": "python2", - "author": "Benedikt Schmotzle", - "description": "Search MSDN api reference", - "license": { - "name": "MIT" - }, - "longdescription": "TODO", - "name": "msdn", - "path": "binja-msdn", - "type": [ - "ui" - ], - "url": "https://github.com/schmotzle/binja-msdn", - "version": "0.0.1" - }, - { - "api": "python2", - "author": "Eric Hennenfent", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [ - "Mako" - ] - }, - "description": "Binary Ninja plugin to display a cheat sheet with information about the current architecture", - "license": { - "name": "MIT", - "text": "MIT License\n\nCopyright (c) 2017 Eric Hennenfent\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the 'Software'), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE." - }, - "longdescription": "This plugin renders an HTML cheat sheet about the current architecture using the information available in `bv.arch` and `bv.platform`", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-794", - "release": "1.0.776" - }, - "name": "Binja Architecture Reference", - "path": "binja_arch_ref", - "type": [ - "ui" - ], - "url": "https://github.com/ehennenfent/binja_arch_ref", - "version": "0.1" - }, - { - "api": "python2", - "author": "Thomas Hebb", - "description": "Binary Ninja `BinaryView` to display a binary file with a nonzero base address.", - "license": { - "name": "GPLv2", - "text": "Copyright (C) 2018 Thomas Hebb\n\nThis program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." - }, - "longdescription": "Open a file of machine code for analysis in a BinaryView that has a given base address. This allows pieces of code such as bootloaders and ROMs to be analyzed correctly without writing a custom view.", - "name": "OffsetView", - "path": "binaryninja-offsetview", - "type": [ - "binaryview", - "ui" - ], - "url": "https://github.com/tchebb/binaryninja-offsetview", - "version": "0.1" - }, - { - "api": "python2", - "author": "made0x78", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [] - }, - "description": "A plugin that finds a given assembly pattern and replaces it with nops.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 made0x78\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Since challenges and binaries have sometimes basic anti-debugging features like random breakpoints, this plugin could help to find and replace such patterns.", - "name": "Find and Nop", - "path": "find_and_nop", - "type": [ - "none" - ], - "url": "https://github.com/made0x78/find_and_nop", - "version": "0.1" - }, - { - "api": "python2", - "author": "sheadovas", - "description": "A plugin that extracts symbols found inside binary with xrefs (like IDA subview imports/exports)", - "license": { - "name": "MIT", - "text": "Copyright (c) 2019 sheadovas.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "A plugin that extracts symbols found inside binary with xrefs (like IDA subview imports/exports)", - "minimumBinaryNinjaVersion": { - "release": "1.1.1470" - }, - "name": "List Symbols", - "path": "binja-list-symbols", - "type": [ - "ui" - ], - "url": "https://github.com/sheadovas/binja-list-symbols", - "version": "0.1b" - }, - { - "api": "python2", - "author": "Paw Petersen", - "description": "Disassembler for the LC-3 architecture.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2016 Paw Petersen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Plugin for disassembling code for the Little Computer 3 architecture:\n\n![scanf](test/scanf.png)\n\nLinux installation: `cd ~/.binaryninja/plugins && git clone https://github.com/kapaw/binaryninja-lc3.git lc3`.\n\nTested using code generated by `http://highered.mcgraw-hill.com/sites/0072467509/student_view0/c_to_lc-3_compiler.html`.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.320-dev", - "release": "1.0.320" - }, - "name": "LC-3 Architecture Plugin", - "path": "binaryninja-lc3", - "type": [ - "architecture" - ], - "url": "https://github.com/kapaw/binaryninja-lc3", - "version": "0.1" - }, - { - "api": "python2", - "author": "Eric Hennenfent", - "dependencies": { - "apt": [ - "python-pyqt5" - ], - "installers": [ - "https://raw.githubusercontent.com/ehennenfent/binja_dynamics/master/install.sh" - ], - "pip": [ - "psutil", - "six" - ] - }, - "description": "Adds a series of dynamic analysis tools aimed at beginners to Binary Ninja.", - "license": { - "name": "Apache 2", - "text": "https://github.com/ehennenfent/binja_dynamics/blob/master/LICENSE" - }, - "longdescription": "Uses Binjatron to add a live debugger, memory viewer, register viewer, and traceback viewer to Binary Ninja, complete with highlighting that should make it easier for beginners to identify what happens when a binary executes.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "1.0.776" - }, - "name": "Binary Ninja Dynamic Analysis Tools", - "path": "binja_dynamics", - "type": [ - "ui", - "dynamic", - "education" - ], - "url": "https://github.com/ehennenfent/binja_dynamics", - "version": "0.1 alpha" - }, - { - "api": "python2", - "author": "buherator", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [] - }, - "description": "Find similar functions with Binary Ninja", - "license": { - "name": "GPLv2", - "text": "" - }, - "longdescription": "", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "0" - }, - "name": "SimilarNinja Plugin", - "path": "similarninja", - "type": [ - "core", - "ui", - "architecture", - "binaryview" - ], - "url": "https://github.com/v-p-b/similarninja", - "version": "0.2 alpha" - }, - { - "api": "python2", - "author": "amtal", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [] - }, - "description": "Disassembler for the 8051 architecture family.", - "license": { - "name": "AGPLv3", - "text": " GNU AFFERO GENERAL PUBLIC LICENSE\n Version 3, 19 November 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. \n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n Preamble\n\n The GNU Affero General Public License is a free, copyleft license for\nsoftware and other kinds of works, specifically designed to ensure\ncooperation with the community in the case of network server software.\n\n The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works. By contrast,\nour General Public Licenses are intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.\n\n When we speak of free software, we are referring to freedom, not\nprice. Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n Developers that use our General Public Licenses protect your rights\nwith two steps: (1) assert copyright on the software, and (2) offer\nyou this License which gives you legal permission to copy, distribute\nand/or modify the software.\n\n A secondary benefit of defending all users' freedom is that\nimprovements made in alternate versions of the program, if they\nreceive widespread use, become available for other developers to\nincorporate. Many developers of free software are heartened and\nencouraged by the resulting cooperation. However, in the case of\nsoftware used on network servers, this result may fail to come about.\nThe GNU General Public License permits making a modified version and\nletting the public access it on a server without ever releasing its\nsource code to the public.\n\n The GNU Affero General Public License is designed specifically to\nensure that, in such cases, the modified source code becomes available\nto the community. It requires the operator of a network server to\nprovide the source code of the modified version running there to the\nusers of that server. Therefore, public use of a modified version, on\na publicly accessible server, gives the public access to the source\ncode of the modified version.\n\n An older license, called the Affero General Public License and\npublished by Affero, was designed to accomplish similar goals. This is\na different license, not a version of the Affero GPL, but Affero has\nreleased a new version of the Affero GPL which permits relicensing under\nthis license.\n\n The precise terms and conditions for copying, distribution and\nmodification follow.\n\n TERMS AND CONDITIONS\n\n 0. Definitions.\n\n \"This License\" refers to version 3 of the GNU Affero General Public License.\n\n \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n \"The Program\" refers to any copyrightable work licensed under this\nLicense. Each licensee is addressed as \"you\". \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy. The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy. Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies. Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License. If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n 1. Source Code.\n\n The \"source code\" for a work means the preferred form of the work\nfor making modifications to it. \"Object code\" means any non-source\nform of a work.\n\n A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form. A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities. However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work. For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n The Corresponding Source for a work in source code form is that\nsame work.\n\n 2. Basic Permissions.\n\n All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met. This License explicitly affirms your unlimited\npermission to run the unmodified Program. The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work. This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force. You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright. Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n Conveying under any other circumstances is permitted solely under\nthe conditions stated below. Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n 4. Conveying Verbatim Copies.\n\n You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n 5. Conveying Modified Source Versions.\n\n You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n a) The work must carry prominent notices stating that you modified\n it, and giving a relevant date.\n\n b) The work must carry prominent notices stating that it is\n released under this License and any conditions added under section\n 7. This requirement modifies the requirement in section 4 to\n \"keep intact all notices\".\n\n c) You must license the entire work, as a whole, under this\n License to anyone who comes into possession of a copy. This\n License will therefore apply, along with any applicable section 7\n additional terms, to the whole of the work, and all its parts,\n regardless of how they are packaged. This License gives no\n permission to license the work in any other way, but it does not\n invalidate such permission if you have separately received it.\n\n d) If the work has interactive user interfaces, each must display\n Appropriate Legal Notices; however, if the Program has interactive\n interfaces that do not display Appropriate Legal Notices, your\n work need not make them do so.\n\n A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit. Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n 6. Conveying Non-Source Forms.\n\n You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n a) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by the\n Corresponding Source fixed on a durable physical medium\n customarily used for software interchange.\n\n b) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by a\n written offer, valid for at least three years and valid for as\n long as you offer spare parts or customer support for that product\n model, to give anyone who possesses the object code either (1) a\n copy of the Corresponding Source for all the software in the\n product that is covered by this License, on a durable physical\n medium customarily used for software interchange, for a price no\n more than your reasonable cost of physically performing this\n conveying of source, or (2) access to copy the\n Corresponding Source from a network server at no charge.\n\n c) Convey individual copies of the object code with a copy of the\n written offer to provide the Corresponding Source. This\n alternative is allowed only occasionally and noncommercially, and\n only if you received the object code with such an offer, in accord\n with subsection 6b.\n\n d) Convey the object code by offering access from a designated\n place (gratis or for a charge), and offer equivalent access to the\n Corresponding Source in the same way through the same place at no\n further charge. You need not require recipients to copy the\n Corresponding Source along with the object code. If the place to\n copy the object code is a network server, the Corresponding Source\n may be on a different server (operated by you or a third party)\n that supports equivalent copying facilities, provided you maintain\n clear directions next to the object code saying where to find the\n Corresponding Source. Regardless of what server hosts the\n Corresponding Source, you remain obligated to ensure that it is\n available for as long as needed to satisfy these requirements.\n\n e) Convey the object code using peer-to-peer transmission, provided\n you inform other peers where the object code and Corresponding\n Source of the work are being offered to the general public at no\n charge under subsection 6d.\n\n A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling. In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage. For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product. A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source. The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information. But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed. Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n 7. Additional Terms.\n\n \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law. If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit. (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.) You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n a) Disclaiming warranty or limiting liability differently from the\n terms of sections 15 and 16 of this License; or\n\n b) Requiring preservation of specified reasonable legal notices or\n author attributions in that material or in the Appropriate Legal\n Notices displayed by works containing it; or\n\n c) Prohibiting misrepresentation of the origin of that material, or\n requiring that modified versions of such material be marked in\n reasonable ways as different from the original version; or\n\n d) Limiting the use for publicity purposes of names of licensors or\n authors of the material; or\n\n e) Declining to grant rights under trademark law for use of some\n trade names, trademarks, or service marks; or\n\n f) Requiring indemnification of licensors and authors of that\n material by anyone who conveys the material (or modified versions of\n it) with contractual assumptions of liability to the recipient, for\n any liability that these contractual assumptions directly impose on\n those licensors and authors.\n\n All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10. If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term. If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n 8. Termination.\n\n You may not propagate or modify a covered work except as expressly\nprovided under this License. Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License. If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n 9. Acceptance Not Required for Having Copies.\n\n You are not required to accept this License in order to receive or\nrun a copy of the Program. Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance. However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work. These actions infringe copyright if you do\nnot accept this License. Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n 10. Automatic Licensing of Downstream Recipients.\n\n Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License. You are not responsible\nfor enforcing compliance by third parties with this License.\n\n An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations. If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License. For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n 11. Patents.\n\n A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based. The\nwork thus licensed is called the contributor's \"contributor version\".\n\n A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version. For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement). To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients. \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License. You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n 12. No Surrender of Others' Freedom.\n\n If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all. For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n 13. Remote Network Interaction; Use with the GNU General Public License.\n\n Notwithstanding any other provision of this License, if you modify the\nProgram, your modified version must prominently offer all users\ninteracting with it remotely through a computer network (if your version\nsupports such interaction) an opportunity to receive the Corresponding\nSource of your version by providing access to the Corresponding Source\nfrom a network server at no charge, through some standard or customary\nmeans of facilitating copying of software. This Corresponding Source\nshall include the Corresponding Source for any work covered by version 3\nof the GNU General Public License that is incorporated pursuant to the\nfollowing paragraph.\n\n Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU General Public License into a single\ncombined work, and to convey the resulting work. The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the work with which it is combined will remain governed by version\n3 of the GNU General Public License.\n\n 14. Revised Versions of this License.\n\n The Free Software Foundation may publish revised and/or new versions of\nthe GNU Affero General Public License from time to time. Such new versions\nwill be similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n Each version is given a distinguishing version number. If the\nProgram specifies that a certain numbered version of the GNU Affero General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation. If the Program does not specify a version number of the\nGNU Affero General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n If the Program specifies that a proxy can decide which future\nversions of the GNU Affero General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n Later license versions may give you additional or different\npermissions. However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n 15. Disclaimer of Warranty.\n\n THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. Limitation of Liability.\n\n IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n 17. Interpretation of Sections 15 and 16.\n\n If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n END OF TERMS AND CONDITIONS\n\n How to Apply These Terms to Your New Programs\n\n If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n To do so, attach the following notices to the program. It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n Intel 8051 Family Architecture Plugin\n Copyright (C) 2017 amtal\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see .\n\nAlso add information on how to contact you by electronic and paper mail.\n\n If your software can interact with users remotely through a computer\nnetwork, you should also make sure that it provides a way for users to\nget its source. For example, if your program is a web application, its\ninterface could display a \"Source\" link that leads users to an archive\nof the code. There are many ways you could offer source, and different\nsolutions will be better for different programs; see section 13 for the\nspecific requirements.\n\n You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU AGPL, see\n." - }, - "longdescription": "Targeting improved RE efficiency over IDA by trading off powerful manual tweaking for one-time automation. This means a high-effort implementation exploring all available Binary Ninja features.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.757-dev", - "release": "1.0.757" - }, - "name": "Intel 8051 Family Architecture Plugin", - "path": "i8051", - "type": [ - "architecture" - ], - "url": "https://github.com/amtal/i8051", - "version": "0.0.0" - }, - { - "api": "python2", - "author": "Mitchell Johnson", - "description": "A disassembler and lifter for the PowerPC VLE ISA.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 Mitchell Johnson.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin disassembles ISA assembly code and generates LLIL.", - "minimumBinaryNinjaVersion": { - "release": "1.1.922" - }, - "name": "PPC VLE Architecture Extension", - "path": "binaryninja-vle", - "type": [ - "architecture" - ], - "url": "https://github.com/ehntoo/binaryninja-vle", - "version": "0.1" - }, - { - "api": "python2", - "author": "Paolo Montesel (github.com/kenoph)", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [ - "sibyl", - "miasm" - ] - }, - "description": "Sibyl plugin for Binja", - "license": { - "name": "BSD 2-Clause License" - }, - "longdescription": "Sibyl is a tool to recognize function names based on their side effects", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "9999" - }, - "name": "Binja Sibyl", - "path": "binja_sibyl", - "type": [ - "ui", - "binaryview" - ], - "url": "https://github.com/kenoph/binja_sibyl", - "version": "0.1 alpha" - }, - { - "api": "python2", - "author": "Bambu", - "description": "A disassembler for the SPU Cell architecture.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2016 Bambu.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin disassembles SPU assembly code. This plugin is based off of the SPU IDA plugin by Felix Domke.\n\nTo install this plugin, navigate to your Binary Ninja plugins directory, and run\n\n```git clone https://github.com/bambu/binaryninja-spu.git spu```", - "minimumBinaryNinjaVersion": { - "dev (Commercial)": "1.0.dev-614", - "dev (Personal)": "1.0.dev-614", - "release (Commercial)": "1.0.317", - "release (Personal)": "1.0.317" - }, - "name": "SPU Cell Architecture Plugin", - "path": "binaryninja-spu", - "type": [ - "core", - "ui", - "architecture" - ], - "url": "https://github.com/bambu/binaryninja-spu", - "version": "0.0.1" - }, - { - "api": "python2", - "author": "sheadovas, danigargu, sha0coder", - "description": "A plugin that exports binary with function names created inside Binja", - "license": { - "name": "GPL v3" - }, - "longdescription": "This plugin is useful for debugging stripped binaries, simply analyze binary, create some names for functions then use this plugin to create binary woth extra debugging symbols. Now you can refer functions via their newly created names!", - "minimumBinaryNinjaVersion": { - "release": "1.1.1470" - }, - "name": "syms2elf", - "path": "syms2elf", - "type": [ - "binaryview", - "core" - ], - "url": "https://github.com/sheadovas/syms2elf", - "version": "0.3" - }, - { - "api": "python2", - "author": "Carl Hurd", - "description": "A disassembler for the AVR architecture.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2016 Carl Hurd.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin disassembles AVR assembly code.\n\nTo install this plugin, navigate to your Binary Ninja plugins directory, and run\n\n```git clone https://github.com/cah011/binja-avr.git binja-avr```\n\nThen create a python file called `binja-avr.py`\n\nWith the contents ```import binja-avr```", - "minimumBinaryNinjaVersion": { - "dev (Commercial)": "1.0.dev-71", - "dev (Personal)": "1.0.dev-71", - "release (Commercial)": "1.0.7", - "release (Personal)": "1.0.7" - }, - "name": "AVR Architecture Plugin", - "path": "binja-avr", - "type": [ - "core", - "ui", - "architecture" - ], - "url": "https://github.com/cah011/binja-avr", - "version": "0.1c" - }, - { - "api": "python2", - "author": "Eric Hennenfent", - "dependencies": { - "apt": [ - "python-pip" - ], - "pip": [ - "Mako" - ] - }, - "description": "A wrapper around several plugins that may be of use to beginners", - "license": { - "name": "MIT", - "text": "Copyright (c) 2016 Eric Hennenfent\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin installs the following plugins: Annotator, Architecture Reference, Binja Dynamic Analysis Tools, Explain Instruction, Syscaller", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-794", - "release": "1.0.776" - }, - "name": "Sensei", - "path": "binja_sensei", - "type": [ - "ui" - ], - "url": "https://github.com/ehennenfent/binja_sensei", - "version": "0.1" - }, - { - "api": "python2", - "author": "Patrick Mackinlay", - "description": "A disassembler and lifter for the Intel MCS-48 architecture.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2018 Patrick Mackinlay.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin disassembles Intel MCS-48 assembly code and generates LLIL.\n\nTo install this plugin, navigate to your Binary Ninja plugins directory, and run\n\n```git clone https://github.com/pmackinlay/binaryninja-mcs48.git clipper```", - "minimumBinaryNinjaVersion": { - "release": "1.1.1221" - }, - "name": "Intel MCS-48 Architecture Plugin", - "path": "binaryninja-mcs48", - "type": [ - "architecture" - ], - "url": "https://github.com/pmackinlay/binaryninja-mcs48", - "version": "0.1" - }, - { - "api": "python2", - "author": "Chame1eon", - "dependencies": { - "apt": [], - "installers": [], - "other": [], - "pip": [ - "frida" - ] - }, - "description": "A plugin to integrate the Frida dynamic instrumentation toolkit into Binary Ninja.", - "license": { - "name": "MIT", - "text": "Copyright (c) 2017 Chame1eon\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin makes use of the Frida dynamic instrumentation framework to simplify dynamic analysis within Binary Ninja. The plugin uses function definitions and type information, either identified by Binary Ninja or user inputted, to define Frida native functions automatically. To intercept a function, all a user needs to do is select the intercept button from the option menu. Once a function is being intercepted, whenever that function is called, by default, the arguments and return value will be logged to the Binary Ninja log. The behaviour of the Frida hooks can also be modified by a user. A demonstration video of the plugin in use in the following video:\n\n[Binary Ninja - Frida Plugin](http://sendvid.com/vw7froy5)\n\n\n### Use Guide\n\n#### Start Plugin\n\nAfter installing the plugin, from either the tools menu or by right clicking on the binary view window, you can select the option \"Frida: Start Plugin\". Selecting this option will bring up a window asking you to select the device you want the plugin to use, any device supported by Frida should also be supported by this plugin. For example, Android and iOS devices should also appear listed here if they are plugged in via USB.\n\n#### Attach to Process\n\nOnce you have the process you want to analyse running, you can select the option \"Frida: Attach to Process\". Choosing this option will provide you with a list of currently running processes on the system you are targeting. Selecting one of those processes will trigger the plugin to use Frida to attach to that process.\n\n#### Select Module (Optional)\n\nBy default, this plugin will use the name of the binary you are analysing to select the target module. For example, if you currently have libssl.so loaded into Binary Ninja, then the plugin will look for that module in the process address. However, if the binary name cannot be found in the process' address space, then the module must be selected manually by running the \"Frida: Select Target Module\" menu option.\n\n#### Intercept Function\n\nNow that the plugin is running, you can start intercepting functions within the binary. To intercept a function all you need to do is right click within that function and select \"Frida: Intercept Function\". Providing there were no errors, that function will now be intercepted by Frida and any time that function is called a log message will be printed with the argument values and return value.\n\n#### Modify Intercept\n\nTo change the default behaviour for an intercepted function, you can use the option \"Frida: Modify Intercept\". Opening this window opens two Multiline input fields. Inside those fields you can enter JavaScript to be executed before and after the function has been run. Above each of the fields is a label to show what the existing hook looks like.\n\n#### Remove Intercept\n\nUsing \"Frida: Remove Intercept\" will safely remove the intercept from the Frida agent.\n\n#### Frida: Reload\n\nWhen modifying function information in Binary Ninja, such as parameter types, there is currently no way to be notified of these events. Therefore, to update the Frida intercepts, in these cases, you will need to manually call \"Frida: Reload\".\n\n#### Frida: Stop Plugin\n\nSafely removes all the hooks from the attached process, before disconnecting from the process.\n\n\n### Future:\n* Allow instruction level interception\n* Add support for using the Frida Stalker\n* Support process patching using Frida\n* Frida Spawn\n\n### Warnings:\n* The Binary Ninja interaction API is, currently, does not support injecting text into a Multiline Field. As a result, hook modification requires a user to retype what they had previously.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-576", - "release": "9999" - }, - "name": "Frida Plugin", - "path": "binaryninja-frida", - "type": [ - "core", - "ui", - "binaryview" - ], - "url": "https://github.com/chame1eon/binaryninja-frida", - "version": "1.0 alpha" - }, - { - "api": "python2", - "author": "Kevin Chung", - "description": "Linear IL view for Binary Ninja", - "license": { - "name": "MIT", - "text": "Copyright (c) 2017 Kevin Chung\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This is a super neat and nifty linear IL view for Binary Ninja. If you squint hard enough, it looks useful.", - "minimumBinaryNinjaVersion": { - "dev": "1.0.dev-173" - }, - "name": "LLIL", - "path": "liil", - "type": [ - "ui" - ], - "url": "https://github.com/ColdHeat/liil", - "version": "1.0 alpha" - }, - { - "api": "python3", - "author": "CySHell", - "dependencies": {}, - "description": "BinaryView MLIL to Neo4j DB", - "license": { - "name": "MIT", - "text": "Copyright (c) 2019 CySHell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "Extract any information from a BinaryView and export it into a Neo4j graph DB", - "minimumBinaryNinjaVersion": { - "dev": "1.1.1633", - "release": "1.1.1555" - }, - "name": "Bin4j", - "path": "Binja4J", - "type": [ - "core", - "binaryview" - ], - "url": "https://github.com/CySHell/Binja4J", - "version": "0.9" - }, - { - "api": "python3", - "author": "Mitchell Johnson", - "description": "A parser for the CMSIS System View Description format", - "license": { - "name": "MIT", - "text": "Copyright (c) 2019 Mitchell Johnson.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." - }, - "longdescription": "This plugin augments a binary view with new types and memory regions representing the peripherals of an ARM CMSIS-SVD file.", - "minimumBinaryNinjaVersion": { - "release": "1.1.922" - }, - "name": "SVD Memory Map Parser", - "path": "binaryninja-svd", - "type": [ - "core" - ], - "url": "https://github.com/ehntoo/binaryninja-svd/", - "version": "0.1" - } + { + "api": [ + "python3" + ], + "author": "Elykdeer", + "dependencies": "", + "description": "Instruction Slices, IL Hierarchy Slices, Dominance Slices, and other tools for devs. Requires Tant\u014d.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1765217765, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024-2025 Elykdeer\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Dev Tools for Tant\u014d\nAuthor: **ElykDeer**\n\n## Description:\nInstruction Slices, IL Hierarchy Slices, Dominance Slices, and other tools for devs. Requires [Tant\u014d](https://github.com/Vector35/tanto).\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 4.0.5336\n\n## License\n\nThis plugin has been released under the [MIT license](./license.txt).\n\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 5336, + "name": "Dev Tools for Tant\u014d", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/bb60f29d-afce-48d8-8634-21aa38bb6392/versions/3a05148b-2598-4082-b7ad-9cd1a9e31077/platforms/2905/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/bb60f29d-afce-48d8-8634-21aa38bb6392/versions/3a05148b-2598-4082-b7ad-9cd1a9e31077/platforms/2905/download?notrack=1", + "path": "ElykDeer_tantodevtools", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 4, + "updated_at": "2025-12-08 18:16:05+00:00" + }, + "projectUrl": "https://github.com/ElykDeer/tanto-devtools", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "1.0.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "austinzwile / azw", + "dependencies": "", + "description": "TypeOxidizer converts the C-Style types in your HLIL / decompilation to their Rust equivalents for easier reading / interpretation and shorter decompilation.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1740433505, + "license": { + "name": "MIT", + "text": "Copyright (c) \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# TypeOxidizer (v1.2.1)\nAuthor: **azw / austinzwile**\n\n_TypeOxidizer converts the C-Style types in your HLIL / decompilation to their Rust equivalents for easier reading / interpretation and shorter decompilation._\n\n## Description:\n\nTypeOxidizer is a Binary Ninja plugin that seamlessly transforms the C-Style types in your HLIL / decompilation to their Rust equivalents through automatic typedef declaration and retyping, making for a cleaner and more precise decompilation. With built-in support for standard integer and floating-point types as well as strings, TypeOxidizer enhances your analysis by \"oxidizing\" legacy type definitions into Rust's clean and precise syntax.\n\n## Demo\n\nHere's a nice before:\n\n\"image\"\n\nand after:\n\n\"image\"\n\n## Usage\n\nThe following registered commands are available via the Plugins dropdown menu as well as the command pallette with `CMD+P`:\n\n - Convert from C to Rust Types\n - Revert to C Types from Rust\n\n## Features\n\nThe conversion from and to following types are currently handled:\n\n| C Type | Rust Type |\n|-------------|-----------|\n| `uint8_t` | `u8` |\n| `uint16_t` | `u16` |\n| `uint32_t` | `u32` |\n| `uint64_t` | `u64` |\n| `uint128_t` | `u128` |\n| `int8_t` | `i8` |\n| `int16_t` | `i16` |\n| `int32_t` | `i32` |\n| `int64_t` | `i64` |\n| `int128_t` | `i128` |\n| `float` | `f32` |\n| `double` | `f64` |\n| `size_t` | `usize` |\n| `ssize_t` | `isize` |\n| `char*` | `str` |\n\n## Installation Instructions\n\n### Darwin\n\nInstall via the Plugin Manager or by cloning the repo at https://github.com/austinzwile/TypeOxidizer and dropping the folder into your plugins directory.\n\n### Linux\n\nInstall via the Plugin Manager or by cloning the repo at https://github.com/austinzwile/TypeOxidizer and dropping the folder into your plugins directory.\n\n### Windows\n\nInstall via the Plugin Manager or by cloning the repo at https://github.com/austinzwile/TypeOxidizer and dropping the folder into your plugins directory.\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 3164\n\n## Required Dependencies\n\nThe following dependencies are required for this plugin:\n\n## Todo\n\n- [ ] Add proper conversion of types when typecasting. The decompilation currently doesn't allow for the retyping of anything on the right side of an equals sign so I will have to figure that out.\n- [ ] Implement a drop-down/content menu to allow for selective conversion between C and Rust.\n- [ ] Handle structs and typedefs. The types within already defined type definitions don't get handled right.\n\n## Required Dependencies\n\nThe following dependencies are required for this plugin:\n\n## License\n\nThis plugin is released under a MIT license.\n\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 3164, + "name": "Type Oxidizer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/f07f73ac-243e-46a4-91c2-07521586b53d/versions/fb097928-6c35-4304-935d-672bbe151bc3/platforms/1208/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/f07f73ac-243e-46a4-91c2-07521586b53d/versions/fb097928-6c35-4304-935d-672bbe151bc3/platforms/1208/download?notrack=1", + "path": "austinzwile_TypeOxidizer", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 2, + "updated_at": "2025-02-24 21:45:05+00:00" + }, + "projectUrl": "https://github.com/austinzwile/TypeOxidizer", + "subdir": "", + "type": [ + "binaryview", + "helper", + "ui" + ], + "version": "1.2.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Erwan Grelet", + "dependencies": "miasm\nthemida-unmutate==0.2.0", + "description": "Static deobfuscator for Themida, WinLicense and Code Virtualizer 3.x's mutation-based obfuscation.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1722202857, + "license": { + "name": "GPL-3.0-or-later", + "text": "" + }, + "longdescription": "# themida-unmutate-bn (v0.3.0)\n\nAuthor: **Erwan Grelet**\n\n_A Binary Ninja plugin to deobfuscate Themida, WinLicense and Code Virtualizer 3.x's mutation-based obfuscation._\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n- 3164\n\n## Required Dependencies\n\nThe following dependencies are required for this plugin:\n\n- pip - miasm\n- pip - themida-unmutate\n\n## License\n\nThis plugin is released under a GPL-3.0 license.\n", + "minimumbinaryninjaversion": 3164, + "name": "themida-unmutate-bn", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/792de473-fa21-49e2-9701-16c97640d138/versions/fe6876eb-d15f-446e-8091-bd231ca65d43/platforms/1330/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/792de473-fa21-49e2-9701-16c97640d138/versions/fe6876eb-d15f-446e-8091-bd231ca65d43/platforms/1330/download?notrack=1", + "path": "ergrelet_themidaunmutatebn", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 38, + "updated_at": "2024-07-28 21:40:57+00:00" + }, + "projectUrl": "https://github.com/ergrelet/themida-unmutate-bn", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.3.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "OtterSec LLC", + "dependencies": "lief\nanthropic\nfastmcp\ntenacity\nrust_demangler \npygments \nanchorpy \nsolana \nsolders\nbase58\n", + "description": "An architecture/binaryview plugin for Solana EBPF.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1751383297, + "license": { + "name": "MIT", + "text": "Copyright (c) 2022 OtterSec LLC\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# bn-ebpf-solana (v1.0.14)\r\nAuthor: **OtterSec LLC**\r\n\r\n_An architecture/binaryview plugin for Solana EBPF._\r\n\r\n## Description:\r\n\r\n\r\n\r\n\r\n## Installation Instructions\r\n\r\n### Darwin\r\n\r\n\r\n\r\n### Windows\r\n\r\n\r\n\r\n### Linux\r\n\r\n\r\n\r\n## Minimum Version\r\n\r\nThis plugin requires the following minimum version of Binary Ninja:\r\n\r\n* 3164\r\n\r\n\r\n\r\n## Required Dependencies\r\n\r\nThe following dependencies are required for this plugin:\r\n\r\n * pip - lief, fastmcp, tenacity, rust_demangler, pygments, anchorpy, solana, solders, base58\r\n\r\n\r\n## License\r\n\r\nThis plugin is released under a MIT license.\r\n## Metadata Version\r\n\r\n2", + "minimumbinaryninjaversion": 3164, + "name": "bn-ebpf-solana", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/bc44863a-030d-49c3-9503-c71a5ee99adf/versions/e5bc58d3-653e-49b6-ab6b-de4be32b457b/platforms/2486/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/bc44863a-030d-49c3-9503-c71a5ee99adf/versions/e5bc58d3-653e-49b6-ab6b-de4be32b457b/platforms/2486/download?notrack=1", + "path": "ottersec_bnebpfsolana", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 241, + "updated_at": "2025-07-01 15:21:37+00:00" + }, + "projectUrl": "https://github.com/otter-sec/bn-ebpf-solana", + "subdir": "", + "type": [ + "architecture", + "binaryview" + ], + "version": "1.0.14", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "xorhex", + "dependencies": "", + "description": "Various features to make windows malware analysis easier.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1737133601, + "license": { + "name": "MIT", + "text": "Copyright 2024 xorhex\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# binjaextras (v0.0.4)\n\nAuthor: **xorhex**\nCopyright: **2025**\n\n_Various features to make windows malware analysis easier._\n\n## Description:\n\nVarious features to make windows malware analysis easier like adding function prototypes.\n\n### Features:\n\n#### Apply Type\n\n1. Rename the variable to the API name\n2. Right click on the variable and select `BinjaExtras` and click `Apply Type`\n\n![](bn_type_application.gif)\n\n#### Apply Type to Function\n\nSometimes a custom function will resolve an API and then jump to it. The function prototype of the function that contains this code that both resolves and calls/jumps to the API function matches the corrisponding API function prototype being resolved - simply rename the function and the type is auto applied.\n\n### Settings\n\nAll of the features can be controlled (enabled/disabled) via the settings.\n\n![](BinjaExtraSettings.png)\n\n\n## Installation Instructions\n\n### Darwin\n\nNothing special, just install through the Binary Ninja plugin manager.\n\n### Windows\n\nNothing special, just install through the Binary Ninja plugin manager.\n\n### Linux\n\nNothing special, just install through the Binary Ninja plugin manager.\n\n## Change Log\n\n### Version v0.0.4\n\n- move the Usage content into the readme so that it will render in BinaryNinja's plugin manager\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 6455\n\n\n## License\n\nThis plugin is released under a MIT license.\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 6455, + "name": "binjaextras", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/ca8a44b7-d388-4175-a0f3-a0814c0d1e9a/versions/f3d4d249-c782-4a5b-bd4a-61904541a94b/platforms/1220/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/ca8a44b7-d388-4175-a0f3-a0814c0d1e9a/versions/f3d4d249-c782-4a5b-bd4a-61904541a94b/platforms/1220/download?notrack=1", + "path": "xorhex_binjaextras", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 8, + "updated_at": "2025-01-17 17:06:41+00:00" + }, + "projectUrl": "https://github.com/xorhex/binjaextras", + "subdir": "", + "type": [ + "helper" + ], + "version": "v0.0.4", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Glenn Smith", + "dependencies": "", + "description": "Sidebar inspectors for debugging Binary Ninja itself", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1735857837, + "license": { + "name": "MIT", + "text": "Copyright (c) 2015-2024 Vector 35 Inc\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Binary Ninja Inspectors\n--\n\nThis is a big collection of inspectors and sidebars for Binary Ninja that I have made and regularly use.\nThey are not really polished or guaranteed to work for people other than myself, but you may get good use out of them.\nNote that many of them (looking at you, Linear Inspector) have abyssmal performance and turn your sidebar game into a bit of a minefield ;)\n\n## Analysis Progress\nSee where your analysis is running (or stalled, as often seems to be the use case)\n\n![alt text](img/analysis_progress_sidebar.png)\n\n## Type Inspector\nDebug the Type Parser api and find out why your types do/don't parse\n\n![alt text](img/type_inspector.png)\n\n## Graph Inspector\nSee what the tokens in the flow graph actually are\n\n![alt text](img/graph_inspector.png)\n\n## Linear Inspector\nShows you the contents of the tree structure of Linear View\n\n![alt text](img/linear_inspector.png)\n\n## IL Inspector\nSee all the details of all the IL expressions and instructions in a function.\n\n![alt text](img/il_inspector.png)\n\n## Register Inspector\nSee the values of all registers used in the function, and if they changed at the current address.\n\n![alt text](img/register_inspector.png)\n\n## License\n\nMIT License, Copyright Vector 35 since I wrote these on work time\n", + "minimumbinaryninjaversion": 6455, + "name": "BN Inspectors", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/8625e1f5-b022-4bd5-ab44-5c84a21aeac5/versions/16bdfbc6-cbdd-4793-86c1-334cc656726c/platforms/1225/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/8625e1f5-b022-4bd5-ab44-5c84a21aeac5/versions/16bdfbc6-cbdd-4793-86c1-334cc656726c/platforms/1225/download?notrack=1", + "path": "CouleeApps_bn_inspectors", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 10, + "updated_at": "2025-01-02 22:43:57+00:00" + }, + "projectUrl": "https://github.com/CouleeApps/bn_inspectors", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "0.1.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "jepson2k, dannyp303", + "dependencies": "", + "description": "Supports loading .per files into Binary Ninja.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1734543538, + "license": { + "name": "Apache-2.0", + "text": "Copyright 2024 permap\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\n\thttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + }, + "longdescription": "# Per Mapper (permap)\nAuthor: jepson2k, dannyp303\n\n_Supports loading .per files into Binary Ninja._\n\n## Description:\n\nSupports loading .per files into Binary Ninja. Very similar to [svdmap](https://github.com/Vector35/svdmap) as it was used as a template for implementing this plugin.\n\n## Usage\n\n1. Open binary in Binary Ninja\n2. Run `Import per info` command.\n3. Select Per file.\n4. New segments should now be automatically created for each peripheral along with the structure.\n\n### Disable Comments\n\nComments can be displayed poorly in some instances so if that is the case you can turn comments off.\n\nTo _disable_ comments set `PERMapper.enableComments` to **false**.\n\n## License\n\nThis plugin is released under a Apache-2.0 license.\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 4860, + "name": "permap", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/d8b62007-cf98-4b38-bf39-b2f7fb134278/versions/c1ba72cb-ef53-412b-a1d4-20bfe7b8d9db/platforms/1231/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/d8b62007-cf98-4b38-bf39-b2f7fb134278/versions/c1ba72cb-ef53-412b-a1d4-20bfe7b8d9db/platforms/1231/download?notrack=1", + "path": "redballoonsecurity_permap", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 2, + "updated_at": "2024-12-18 17:38:58+00:00" + }, + "projectUrl": "https://github.com/redballoonsecurity/permap", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.0.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "faith", + "dependencies": "", + "description": "Playstation 3 ELF loader", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1769942426, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024 Valters Tomsons\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# binja-ps3 (vv0.0.8)\nAuthor: **faith**\n\n_Playstation 3 ELF loader_\n\n## Description:\n\n\n\n\n## Installation Instructions\n\n### Darwin\n\n\n\n### Windows\n\n\n\n### Linux\n\n\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 4000\n\n\n## License\n\nThis plugin is released under a MIT license.\n## Metadata Version\n\n2\n\n\n### Changelog\n* Added script to assert value of `r2` register in functions to their `TOC_BASE`\r\n* Count of TOCs is now printed during analysis\r\n* OPD section now has a name\r\n* Misc python voodoo", + "minimumbinaryninjaversion": 4000, + "name": "binja-ps3", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/379d767f-86e9-414c-b725-947b7a009cf2/versions/621a1c82-1080-45e7-ba85-c1192a44fe19/platforms/3139/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/379d767f-86e9-414c-b725-947b7a009cf2/versions/621a1c82-1080-45e7-ba85-c1192a44fe19/platforms/3139/download?notrack=1", + "path": "valterstomsons_bninjaps3", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 10, + "updated_at": "2026-02-01 10:40:26+00:00" + }, + "projectUrl": "https://github.com/valters-tomsons/bninja-ps3", + "subdir": "", + "type": [ + "binaryview" + ], + "version": "v0.0.8", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Daniel Roethlisberger", + "dependencies": "", + "description": "Annotation of Apple libclosure blocks.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1756037846, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024 Daniel Roethlisberger\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Apple Blocks Plugin\nAuthor: Daniel Roethlisberger\n\nAnnotation of Apple [libclosure](https://github.com/apple-oss-distributions/libclosure) [blocks](https://clang.llvm.org/docs/BlockLanguageSpec.html).\n\n## Description\n\nType annotation of stack and global blocks, block descriptors, variables closed\nover and related function signatures in [Binary Ninja](https://binary.ninja/).\nBlocks are an implementation of closures often found in C, C++, ObjC and ObjC++\ncode for Apple platforms. Blocks are distinct from C++ lambdas.\n\n![Screenshot comparing before and after annotation](https://github.com/droe/binja-blocks/blob/0.4.0/.github/img/showcase.png?raw=true)\n\nCommands:\n\n- Annotate all blocks\n- Annotate all global blocks\n- Annotate all stack blocks\n- Annotate global block here\n- Annotate stack block here\n- Annotate stack byref here\n\nFeatures:\n\n- Find and annotate global and stack blocks\n- Annotate block imported variables based on inline or out-of-line\n generic helper info or extended layout\n- Annotate block invoke function type based on encoded block ObjC type\n signature\n- Annotate block descriptors, copy/dispose functions, generic helper info\n and out-of-line extended layout bytecode\n- Annotate stack byrefs (`__block` variables) based on non-extended\n layout or inline or out-of-line extended layout, including keep and\n destroy functions\n- Define per-block and per-byref named structs to allow for manual fixups\n- Define structs for fully manual annotation: `Block_literal`,\n `Block_descriptor_1`, `Block_descriptor_2`, `Block_descriptor_3`,\n `Block_byref_1`, `Block_byref_2`, `Block_byref_3`\n\nKnown limitations:\n\n- Automatic discovery of blocks and byrefs on the stack is unreliable by\n nature and depends on Binary Ninja's ability to lift into clean HLIL\n- The current implementation is very slow due to relying on re-analysis,\n operating on HLIL, and using a strictly serial algorithm\n- No support for 32-bit architectures\n- No support for \"small descriptors\", \"old GC layout\", older block layout before\n the introduction of block descriptors\n- Byrefs passed as function arguments are not automatically discovered\n\n## References\n\nBlocks language docs:\n\n- [Blocks Programming Topics](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Blocks/), Apple Documentation Archive\n- [LLVM Block Language Spec](https://clang.llvm.org/docs/BlockLanguageSpec.html)\n\nBlocks implementation details:\n\n- [libclosure](https://github.com/apple-oss-distributions/libclosure), source code and two spec documents\n- [LLVM Block ABI](https://clang.llvm.org/docs/Block-ABI-Apple.html)\n\nObjective-C Type Encodings:\n\n- [Type Encodings](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html), Objective-C Runtime Programming Guide, Apple Documentation Archive\n- [LLVM code emitting type encodings](https://github.com/llvm-mirror/clang/blob/master/lib/AST/ASTContext.cpp)\n\n## License\n\nThis plugin is released under an [MIT license](./license).\n\n\n### Changelog\nDocumentation-only release intended to fix display of the plugin in Binary Ninja's plugin manager.\r\n\r\n**Full Changelog**: https://github.com/droe/binja-blocks/compare/0.4.3...0.4.4", + "minimumbinaryninjaversion": 6455, + "name": "Apple Blocks", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/d7190647-a4b9-4dd7-8a3c-df35640991c8/versions/4e7690f8-a68b-4e68-85b5-ee9f5d21a0e8/platforms/2600/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/d7190647-a4b9-4dd7-8a3c-df35640991c8/versions/4e7690f8-a68b-4e68-85b5-ee9f5d21a0e8/platforms/2600/download?notrack=1", + "path": "droe_binjablocks", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 33, + "updated_at": "2025-08-24 12:17:26+00:00" + }, + "projectUrl": "https://github.com/droe/binja-blocks", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.4.4", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Leandro Froes", + "dependencies": "", + "description": "A small plugin that provides an user-friendly way to navigate between functions and their references.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1720549788, + "license": { + "name": "CC BY 3.0", + "text": "" + }, + "longdescription": "# Binary Ninja Interactive Functions List (IFL) Plugin\n\nLicense: CC-BY (https://creativecommons.org/licenses/by/3.0/)\n\nThis is a Binary Ninja version of the [IDA IFL](https://github.com/hasherezade/ida_ifl) plugin written by hasherezade.\n\nILF is a small plugin with the goal to provide user-friendly way to navigate between functions and their references.
\nAdditionally, it allows to import reports generated by i.e. [PE-sieve](https://github.com/hasherezade/pe-sieve/wiki/1.-FAQ) into Binary Ninja. Supports:\n+ [`.tag` format](https://github.com/hasherezade/tiny_tracer/wiki/Using-the-TAGs-with-disassemblers-and-debuggers) (generated by [PE-sieve](https://github.com/hasherezade/pe-sieve), [Tiny Tracer](https://github.com/hasherezade/tiny_tracer), [PE-bear](https://github.com/hasherezade/pe-bear-releases))\n+ [`.imports.txt` format](https://github.com/hasherezade/pe-sieve/wiki/4.3.-Import-table-reconstruction-(imp)) (generated by [PE-sieve](https://github.com/hasherezade/pe-sieve))\n\nExamples\n==\n\n![](https://github.com/leandrofroes/bn_ifl/blob/main/img/example1.png?raw=True)\n\n![](https://github.com/leandrofroes/bn_ifl/blob/main/img/example2.png?raw=True)\n", + "minimumbinaryninjaversion": 4958, + "name": "IFL", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/f55de0ff-df42-48f3-823a-3eb041d76e83/versions/c0d9cef5-3d00-400f-8081-218d7263d02c/platforms/1333/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/f55de0ff-df42-48f3-823a-3eb041d76e83/versions/c0d9cef5-3d00-400f-8081-218d7263d02c/platforms/1333/download?notrack=1", + "path": "leandrofroes_bn_ifl", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 25, + "updated_at": "2024-07-09 18:29:48+00:00" + }, + "projectUrl": "https://github.com/leandrofroes/bn_ifl", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "1.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "d0minik", + "dependencies": "", + "description": "Binary Ninja plugin to take and manage database snapshots", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1730262149, + "license": { + "name": "AGPL-3.0", + "text": "Copyright 2024 d0minik \n\nThis program is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\\n\\nYou should have received a copy of the GNU Affero General Public License along with this program; if not, see ." + }, + "longdescription": "# Snapshot Manager (v0.1)\n\nAuthor: **d0minik**\n\n_Binary Ninja plugin to manage database snapshots_\n\n## Description:\n\nA UI plugin to take, restore & manage database snapshots of your BNDBs, just like VM snapshots!\n\n![Snapshot Manager](images/demo.png)\n\n## Features\n\n- Take snapshots of BNDB state\n- Restore any previous state\n- Delete unused states\n\n![Options](images/options.png)\n\n## Installation\n\n`git clone` this repo into your Binary Ninja plugins directory.\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 4911\n\n## License\n\nThis plugin is released under a AGPL license.\n\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 4526, + "name": "Binja Snapshot Manager", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/473736fb-c874-427a-99cd-3e1cc9226041/versions/8605963c-c20f-4bc8-8a0e-cb6460d449e8/platforms/1251/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/473736fb-c874-427a-99cd-3e1cc9226041/versions/8605963c-c20f-4bc8-8a0e-cb6460d449e8/platforms/1251/download?notrack=1", + "path": "d0mnik_binja_snapshot_manager", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 5, + "updated_at": "2024-10-30 04:22:29+00:00" + }, + "projectUrl": "https://github.com/d0mnik/binja_snapshot_manager", + "subdir": "", + "type": [ + "helper" + ], + "version": "v0.1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Jordan Wiens", + "dependencies": "", + "description": "QSettings Viewer", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1729633426, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024 Jordan Wiens\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# QSettings Viewer (v1.0.1)\nAuthor: **Jordan Wiens**\n\n_QSettings Viewer_\n\n## Description:\n\n\nNone\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 3164\n\n\n## License\n\nThis plugin is released under a MIT license.\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 3164, + "name": "QSettings Viewer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/a5451d73-35e0-4915-ac71-c603ae973df2/versions/29ef3376-855e-4c0a-8547-bceedfc882a3/platforms/1257/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/a5451d73-35e0-4915-ac71-c603ae973df2/versions/29ef3376-855e-4c0a-8547-bceedfc882a3/platforms/1257/download?notrack=1", + "path": "psifertex_qsview", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 1, + "updated_at": "2024-10-22 21:43:46+00:00" + }, + "projectUrl": "https://github.com/psifertex/qsview", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "1.0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Adrian Herrera", + "dependencies": "gtirb\n", + "description": "Support the GrammaTech Intermediate Representation for Binaries (GTIRB) in Binary Ninja", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1728277373, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 GrammaTech Inc.\nCopyright (c) 2024 Adrian Herrera\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Binary Ninja GTIRB\nAuthor: **Adrian Herrera**\n\n_Support the GrammaTech Intermediate Representation for Binaries (GTIRB) in Binary Ninja_\n\n## Description:\n\nThe [GrammaTech Intermediate Representation for Binaries](https://grammatech.github.io/prj/gtirb/) (GTIRB) is a format for binary analysis and rewriting.\nThis plugin adds support for the GTIRB format to Binary Ninja.\nIt is based on GrammaTech's [GTIRB Ghidra plugin](https://github.com/GrammaTech/gtirb-ghidra-plugin).\nCurrently, it supports exporting a Binary Ninja database to GTIRB.\nImporting GTIRB is not (yet) supported.\nSimilarly, the plugin only support exporting a single module; exporting multiple (linked) modules could be supported via Binary Ninja's [external links](https://docs.binary.ninja/guide/projects.html#external-links) feature, but this is not (yet) supported.\n\n## Installation Instructions\n\nThis plugin is available in the Binary Ninja Plugin Manager.\nOtherwise:\n1. `git clone` this repository into your Binary Ninja plugins folder (see [here](https://docs.binary.ninja/guide/plugins.html) for more details).\n1. Install the requirements with `pip install -r requirements.txt`.\n\n## Usage\n\nOpen the GTIRB \u2192 Export dialog.\nSelect the location of the exported GTIRB IR file.\nSelect the [auxiliary tables](https://grammatech.github.io/gtirb/md__aux_data.html) you want to export.\nThe more auxiliary tables, the longer the export will take.\n![GTIRB export dialog](img/usage.png)\n\n## License\n\nThis plugin is released under a MIT license.\n", + "minimumbinaryninjaversion": 3164, + "name": "GTIRB", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/8193126d-ce17-4686-9aae-32d990049dd5/versions/6e75ed29-4ad7-4a47-b030-056d31ab2824/platforms/1261/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/8193126d-ce17-4686-9aae-32d990049dd5/versions/6e75ed29-4ad7-4a47-b030-056d31ab2824/platforms/1261/download?notrack=1", + "path": "adrianherrera_binaryninjagtirb", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 7, + "updated_at": "2024-10-07 05:02:53+00:00" + }, + "projectUrl": "https://github.com/adrianherrera/binaryninja-gtirb", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Lam Jun Rong", + "dependencies": "", + "description": "Automatically set enums for standard functions", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1737066203, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024 Lam Jun Rong\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Auto Enum\n\n![binja_demo](https://files.junron.dev/binja_demo.gif)\n\n## Overview\n\nDecompiled C code often contains \"magic\" constants that represent flags or options.\n```c\nint64_t buf = mmap(0, 0x1000, 7, 0x22, 0xffffffff, 0);\n```\n\nAuto Enum detects and demystifies these constants, converting them to human-readable symbols.\n\n```c\nint64_t buf = mmap(\n 0,\n 0x1000,\n PROT_WRITE | PROT_EXEC | PROT_READ,\n MAP_PRIVATE | MAP_ANON | MAP_FILE,\n 0xffffffff, 0\n);\n```\n\nCheck out the [README](https://github.com/junron/auto-enum) on GitHub for more info!", + "minimumbinaryninjaversion": 4526, + "name": "Auto Enum", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/aa2e03b9-5bd6-4d0d-a15b-c77766e695ee/versions/7394ac1a-0dc3-43c9-a164-4ebcd22f9dbb/platforms/1267/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/aa2e03b9-5bd6-4d0d-a15b-c77766e695ee/versions/7394ac1a-0dc3-43c9-a164-4ebcd22f9dbb/platforms/1267/download?notrack=1", + "path": "junron_autoenum", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 486, + "updated_at": "2025-01-16 22:23:23+00:00" + }, + "projectUrl": "https://github.com/junron/auto-enum", + "subdir": "binjastub", + "type": [ + "helper" + ], + "version": "0.1.1", + "view_only": false + }, + { + "api": [ + "cpp" + ], + "author": "Martin Petran", + "dependencies": "", + "description": "PowerPC VLE support via architecture extension.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1741039313, + "license": { + "name": "Apache-2.0", + "text": "Copyright 2024 Martin Petran\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\r\n\r\n\thttp://www.apache.org/licenses/LICENSE-2.0\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + }, + "longdescription": "Architecture extension for default PPC architecture to support VLE instructions. This includes dissassembly for vector and floating point instructions (some float operations are also lifted).", + "minimumbinaryninjaversion": 6135, + "name": "PowerPC VLE Extension", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/2a807c79-aea4-4eec-8f9f-218d995b49f4/versions/a5f9a77d-29e8-461d-8b73-ca434fd0c47b/platforms/1279/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/2a807c79-aea4-4eec-8f9f-218d995b49f4/versions/a5f9a77d-29e8-461d-8b73-ca434fd0c47b/platforms/1279/download?notrack=1", + "path": "Martyx00_PowerPCVLEExtension", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 3, + "updated_at": "2025-03-03 22:01:53+00:00" + }, + "projectUrl": "https://github.com/Martyx00/PowerPC-VLE-Extension", + "subdir": "", + "type": [ + "architecture" + ], + "version": "1.0", + "view_only": true + }, + { + "api": [ + "python3" + ], + "author": "computerman00", + "dependencies": "pyyaml\n", + "description": "PS Vita ELF/PRX2 loader plugin", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1726745762, + "license": { + "name": "MIT", + "text": "Copyright 2024 omo-computerman00\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# BinaryNinja-PSVitaLoader\nPS Vita ELF/PRX2 loader plugin for Binary Ninja\n\n## Table of Contents\n1. [Description](#description)\n2. [Plugin Usage](#plugin-usage)\n3. [Notes/Issues](#notesissues)\n4. [TODO](#todo)\n5. [Credits](#credits)\n6. [Use-case examples](#use-case-examples)\n7. [Legal](#legal)\n\n### Description:\nA Binary Ninja Plugin for PRX2 PS Vita eboot.bin ELFs. \n\nDynamic linking of modules on the PS Vita [is performed](https://wiki.henkaku.xyz/vita/NID#Usage) by NID(**N**umeric **Id**entifier) of a function or variable instead of names. The primary purpose of this plugin is to resolve all import/export function/variable names, create symbols for them, and load them back into the default ELF BinaryView at their respective position. This plugin will also add PS Vita(PRX2) specific datatypes with locations in the binary resolved(if applicable). Additionally, this plugin attempts to do some cleanup resulting from the decompilation of the mixed ARMv7/thumb2 instruction sets, removing some misaligned/junk instructions in places where there should have been in-line data. \n\n\n### Plugin Usage:\nLoading the plugin will prompt for a NID database yaml file\n![Selecting NID DB](/images/nid-db-select.png)\n\nThe included NID database was obtained from the vitasdk [vita-headers](https://github.com/vitasdk/vita-headers) and combined with the following:\n```bash\n\u2514\u2500$ yq ea '. as $item ireduce ({}; . * $item )' vita-headers/db/360/*.yml > merged-vita-nid-db.yml\n```\n\nAfterwards, the plugin will prompt for a header file, this is not necessary, however **highly recommended**. With the header file we are able to resolve every single imported functions argument count, argument name, argument type, and function type/return. If this is not used, imported functions default to void and `variable_arguments` is set on the `binaryninja.types.FunctionType` object.\n\n![Selecting NID DB](/images/header-select.png)\n\nThe header file included is a compilation of all header files from [vitasdk/vita-headers](https://github.com/vitasdk/vita-headers/), all credit for the headers and NID DB goes to the vitasdk team. This header file was generated using the vitasdk toolchain([LICENSE](https://github.com/vitasdk/vita-headers/blob/master/LICENSE.md) added after) like so:\n```\n\u2514\u2500$ /usr/local/vitasdk/bin/arm-vita-eabi-gcc -P -E $VITASDK/arm-vita-eabi/include/vitasdk.h -D\"__attribute__(x)=\" -D\"__extension__(x)=\" -Drestrict= -D__restrict__= > vita_headers.hpp\n```\n\nThe plugin will first run linear sweep analysis until no new functions are created. Symbols with their respective function names are then resolved almost instantly and injected/added into the default ELF BinaryView. \n\n\nAt this point, any sce* function call should be resolved and a few datatypes will be added. If the header file was supplied, all datatypes will be imported along with the sce* functions proper return type, argument names, and argument types. \n![Plugin Sample](/images/plugin-sample.png)\n\n\n### Notes/Issues:\n- Tested to be working on Binary Ninja `4.1.5902-Stable` and `4.2.6075-dev`\n- Binary Ninja appears to trip in ARMv7/thumb2 mixed instruction sets binaries. An issue was encountered where if the binary is detected as ARMv7(All were while testing) and the first instruction is a Thumb2 instruction, it will mangle the entire dis-assembled binary. To fix this, right click initial function/instruction->Make Function at This Address->thumb2->linux-thumb2. Next run Linear Sweep again, this will fix the binary and later instruction set switches(typically `blx`) are sometimes accounted for properly.\n\nA painful but much better solution to thumb2 start: After ensuring the very first function(@base_addr) is set to thumb2 manually, I have had great luck doing the following in the BN console:\n```python\n>>> thumb2 = binaryninja.Architecture['thumb2']\n... \n>>> for func in bv.functions:\n... \tif func.arch != thumb2:\n... \t\tbv.remove_function(func)\n```\nAfter all non-thumb2 functions are removed, either (re)load the Vita Loader plugin(recommended) or run a few linear sweeps, this will correctly identify instruction set switches and give you a clean binary view(for the most part). If anyone knows how to resolve this globally, please do share - I have tried forcing the platform but because the binary is technically `armv7` the platform switches back to `linux-armv7`.\n\n\n### TODO:\n- Split functions and utility across multiple imports to maintain readability.\n- Move examples to wiki\n- Extend support to `scelibstub_psp`, `scelibent_psp` and other PRX1 primitives to support the OG PSP.\n- Extend to full custom BinaryView plugin with support for relocations\n- ~~Potentially extending un-implenented instructions commonly used within Vita/PRX2 elfs(Such as: vcvt, vdiv, vmov, vmrs and other fp related instructions)~~ - The binaryninja team is [already hard at work on these](https://github.com/Vector35/binaryninja-api/commits/dev/arch/armv7).\n\n\n### Credits:\n\n- The HENkaku [Vita Development Wiki](https://wiki.henkaku.xyz/vita/Main_Page) and specifically the [PRX page](https://wiki.henkaku.xyz/vita/PRX) for the detailed breakdown of the `SceModuleInfo` structure and its location within the ELF. Also for the breakdown of the `scelibent_prx2arm` and `scelibstub_prx2arm` function export/import structures.\n\n- VitaSDK for the [NID db](https://github.com/vitasdk/vita-headers/tree/master/db) and all [header files](https://github.com/vitasdk/vita-headers/tree/master/include)(Also the wonderful vita [toolchain](https://github.com/vitasdk/vdpm) and module [documentation](https://docs.vitasdk.org/modules.html))\n\n- The [VitaLoader Redux](https://github.com/CreepNT/VitaLoaderRedux) project, a Vita loader plugin for Ghidra with way more than just symbol mapping support - although not a Ghidra or Java fan, I studied portions of the project and its amazingly clarifying inline comments when stuck. \n\n\n### Use-case examples:\nThere are many great use-cases to learning more about reverse engineering binaries, a good example is to leverage this to patch binaries to unlock the FPS or allow them to run at full PS Vita resolution. \n\nThanks to the talented contributors of [VitaGrafix](https://github.com/Electry/VitaGrafix), we can patch binaries directly on the Vita at loadtime. The VitaGrafix [wiki](https://github.com/Electry/VitaGrafix/wiki/The-VG-Language%E2%84%A2) serves as a great educational resource to get started on this.\n\nEXAMPLE:\n\nPatching FPS limits:\nSearching for cross references on vBlank(vSync) related calls is usually a good start. In a lot of cases, the frame limit is introduced by setting a vblank interval greater than `1`. Typically this would be done with a value moved into `r0` just before `sceDisplayWaitVblankStartMulti` is called. This value(`vcount`) will typically be `1`, `2`, or `3`. This likely indicates the wait for the next vblank start, which will occur after the last scanline and before the next VSync interval. A `vcount` of `2` will wait for `2` vBlank intervals before a VSync, this effectively limits the framerate to half of the displays refresh rate(30fps). A `vcount` of `3` would be refresh-rate/3, effectively limiting to 20fps.\n\nLooking at the popular [nzportable](https://github.com/nzp-team/nzportable) homebrew game running at 60fps natively.\n\n![nzp fps](/images/example2-fps.png)\n\nThe variable here wasn't resolved, however looking at the data at that address, we see its just a `1`, this indicates the game is capped to the screens refresh rate(60Hz), as 1 vBlank interval will occur for every vSync interval. \n\n![nzp fps var](/images/example2-fps-data.png)\n\nNOTE: This isn't always straightforward as many binaries will rely on VSync and modifying anything directly related will usually cause them to run at double speed. Further research is needed on a binary-to-binary basis. \n\n\nPatching resolution:\nThis is much simpler and typically you'd want to load up the binary on a PS Vita with a tool that can poll the frame buffer to determine resolution. Knowing the resolution, you can simply search for that value within Binary Ninja. Looking at the nzp homebrew again, knowing it runs at full Vita resolution of `960x544`, we can search for `0x3c0`(960), this results in only one find and thankfully its a bit more obvious, as `0x3c0`(960) is set just before `0x220` (544)\n\n![nzp res](/images/nzp-find-res.png)\n\n\n\nAnother potential method to patch resolution is to cross reference the `sceDisplaySetFrameBuf` symbol and figure out where the framebuffer is updated/set, this takes in a pointer to the `SceDisplayFrameBuf` struct which contains the framebuffer width and height. These values are sometimes set just before the function call. According to the [vitasdk documentation](https://docs.vitasdk.org/group__SceDisplayKernel.html#structSceDisplayFrameBuf) the following resolutions can be set: `480x272`, `640x368`, `720x408`, `960x544`. \n\nTo show an example of this and practice our reverse engineering, we use the vitasdk toolchain to compile a homebrew app with a resolution of 640(`0x280`) x 368(`0x170`).\n\n\nSearching for `0x280`, there is only one with `0x170` next to it, making it the obvious choice:\n```\n8103d040 int32_t var_44 = 0x280;\n8103d044 int32_t var_40 = 0x170;\n8103d048 sceDisplaySetFrameBuf(&var_54, SCE_DISPLAY_SETBUF_NEXTFRAME);\n```\n\nLooking at the disassembly we see that `0x280` is moved into r1 at addr `0x8103d036` and `0x170` is moved into `r2` at addr `0x8103d03c` before they are both stored on the stack.\n```\n8103d036 5ff42071 movs r1, #0x280\n8103d03a 0192 str r2, [sp, #4] {var_48} {0x0}\n8103d03c 5ff4b872 movs r2, #0x170\n8103d040 0291 str r1, [sp, #8] {var_44} {0x280}\n8103d042 00a8 add r0, sp, #0 {var_54}\n8103d044 0392 str r2, [sp, #0xc] {var_40} {0x170}\n8103d046 0121 movs r1, #1\n8103d048 e4f14eeb blx #sceDisplaySetFrameBuf\n```\n\nWe could use this information to patch the binary by changing the values in the `mov` instructions, or we can patch this directly on the Vita with VitaGrafix. Instead of patching with a set value, VitaGrafix allows us to use a dynamic variable that can be configured before starting the binary, allowing it to patch the binary at load-time. This patch would look like:\n\n```\n[CUSTHOMBRW, eboot.bin]\n@FB\n0:0x3d036 t2_mov(1, 1, fb_w)\n0:0x3d03c t2_mov(1, 2, fb_h)\n```\n\n\n### Legal\n\n\u201cPlayStation\u201d and \"PlayStation Vita\" are registered trademarks of Sony Computer Entertainment Inc. This tool is **NOT** affiliated with, endorsed by, related to, or derived from confidential materials belonging to Sony Computer Entertainment Inc.\n\nThis tool was created for educational, security research purposes. Anything mentioned in this repository, any examples shown, and the plugin itself will **NOT** and can **NOT** break any encryption or circumvent protections in a binary.\n", + "minimumbinaryninjaversion": 5902, + "name": "PSVitaLoader", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/b53e5c99-f2db-4f1c-97fc-0d67c2fe79f0/versions/87dc8585-4a56-4b2e-8c86-3ae81cb47f6d/platforms/1286/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/b53e5c99-f2db-4f1c-97fc-0d67c2fe79f0/versions/87dc8585-4a56-4b2e-8c86-3ae81cb47f6d/platforms/1286/download?notrack=1", + "path": "computerman00_BinaryNinjaPSVitaLoader", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 17, + "updated_at": "2024-09-19 11:36:02+00:00" + }, + "projectUrl": "https://github.com/computerman00/BinaryNinja-PSVitaLoader", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "LRQA Nettitude", + "dependencies": "", + "description": "Recover the imports from a stomped PE header by pasting in an IAT dump from dynamic analysis.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1726733019, + "license": { + "name": "MIT", + "text": "Copyright (c) LRQA Nettitude 2024 \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" + }, + "longdescription": "Recover the imports from a stomped PE header by pasting in an IAT dump from dynamic analysis.\n\nSimply copy the IAT during dynamic analysis using e.g. x64dbg and paste it into the plugin dialog.\n\nSee the blog post for more details: https://labs.nettitude.com/blog/binary-ninja-plugin-fix-stomped-imports\n\n**Live malware** example sample: [acf361296c9e1cf5b4ceff11e1790c57e6e1d753df9bef087aadad256dc5a123](https://www.unpac.me/results/c097c055-4cfd-44e7-b493-c692a1a61027?hash=acf361296c9e1cf5b4ceff11e1790c57e6e1d753df9bef087aadad256dc5a123)", + "minimumbinaryninjaversion": 5529, + "name": "Fix stomped imports", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/9e107176-051f-4902-b13b-b69f16f79643/versions/adbb362c-6bca-474c-8f2e-7fb2e0afe3eb/platforms/1297/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/9e107176-051f-4902-b13b-b69f16f79643/versions/adbb362c-6bca-474c-8f2e-7fb2e0afe3eb/platforms/1297/download?notrack=1", + "path": "nettitude_binjafixstompedimports", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 9, + "updated_at": "2024-09-19 08:03:39+00:00" + }, + "projectUrl": "https://github.com/nettitude/binja-fix-stomped-imports", + "subdir": "", + "type": [ + "architecture", + "binaryview", + "core", + "helper", + "ui" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Jason Tang", + "dependencies": "openai\nanthropic\npysqlite3\nmarkdown\nhttpx\nanyio>=4.6\nmcp==1.23.3\nwhoosh\naiohttp", + "description": "A plugin that provides LLM helpers to explain code and assist in RE.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1769960534, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024 Jason Tang\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# BinAssist\nAuthor: **Jason Tang**\n\n_A comprehensive LLM-powered Binary Ninja plugin for intelligent binary analysis and reverse engineering._\n\n## Description\n\nBinAssist is an advanced LLM plugin designed to enhance binary analysis and reverse engineering workflows through intelligent automation. It leverages local and remote LLM capabilities to provide context-aware assistance throughout the binary analysis process. It supports fully agentic reverse engineering through its MCP client and MCP servers like [BinAssistMCP](https://github.com/jtang613/BinAssistMCP)\n\nThe plugin supports any OpenAI v1-compatible or Anthropic API, making it compatible with popular LLM providers including Ollama, LM Studio, Open-WebUI, OpenAI, Anthropic, AWS Bedrock (via LiteLLM), and others.\n\n**Recommended models:**\n- **With Reasoning Support**: Claude Sonnet 4+, OpenAI GPT-5+, GPT-OSS (supports extended thinking for complex analysis)\n- **General Purpose**: DeepSeek, LLaMA-based coder models, Claude Sonnet 3.5, GPT-4\n\n## Core Features\n\n### Explain Tab\n- **Function Analysis**: Comprehensive analysis of functions at all IL levels (LLIL, MLIL, HLIL)\n- **Instruction Analysis**: Detailed explanations of individual instructions and their purpose\n- **Context-Aware**: Stores responses at a function level, allowing you to easily keep track\n- **Edit Responses**: Tweak the response as needed and save it for later\n\n### Query Tab\n- **Interactive LLM Chat**: Direct conversation interface with the LLM\n- **ReAct Agent**: Autonomous multi-step reasoning and analysis using the ReAct (Reasoning + Acting) framework\n - Iterative problem-solving with reflection and self-correction\n - Automatic tool selection and execution via MCP\n - Step-by-step reasoning traces for transparency\n - Up to 15 iterations with intelligent termination\n- **Extended Thinking**: Support for reasoning effort control on compatible models\n - Configurable thinking depth (None, Low, Medium, High)\n - Compatible with Claude Sonnet 4+, OpenAI o1/o3/gpt-5, and gpt-oss\n - Increases analysis quality for complex reverse engineering tasks\n- **Binary Context**: Automatically includes relevant binary information in queries\n- **Flexible Prompting**: Support for custom queries and analysis requests\n- **Streaming Responses**: Real-time response generation with cancellation support\n\n### Actions Tab\n- **Intelligent Suggestions**: LLM-powered recommendations for improving binary analysis\n- **Four Action Types**:\n - **Rename Function**: Suggest semantically meaningful function names\n - **Rename Variable**: Propose descriptive variable names based on usage\n - **Retype Variable**: Recommend appropriate data types for variables\n - **Auto Create Struct**: Generate structure definitions from data patterns\n- **Confidence Scoring**: Each suggestion includes confidence metrics (0.0-1.0)\n- **Selective Application**: Choose which suggestions to apply via interactive UI\n- **Status Tracking**: Real-time feedback on action application success/failure\n- **Tool-Based Architecture**: Uses native LLM tool calling for precise suggestions\n\n### Semantic Graph Tab\n- **GraphRAG Architecture**: Graph-based Retrieval-Augmented Generation for binary analysis\n- **ReIndex Binary**: Build a semantic graph of all functions with call relationships\n- **Semantic Analysis**: LLM-powered function summarization and categorization\n - Automatic purpose inference from function names and behavior\n - Security flag detection (network, file I/O, crypto, etc.)\n - Activity profiling and risk assessment\n- **Security Analysis**: Taint analysis for vulnerability detection\n - Source-to-sink path finding (e.g., `recv` \u2192 `strcpy`)\n - Automatic detection of dangerous API usage patterns\n - TAINT_FLOWS_TO and VULNERABLE_VIA edge creation\n- **Community Detection**: Function clustering using Label Propagation algorithm\n - Groups related functions based on call relationships\n - Automatic module/purpose inference (Network I/O, Crypto, File Operations, etc.)\n - Runs automatically after ReIndex completes\n- **Visual Graph View**: Interactive visualization of function relationships\n- **Full-Text Search**: FTS5-powered search across function names and summaries\n- **Query Tools**: MCP-exposed tools for LLM to query the semantic graph\n\n### Advanced Capabilities\n- **ReAct Autonomous Agent**: Full implementation of the ReAct framework for multi-step analysis\n- **Extended Thinking/Reasoning Effort**: Provider-agnostic reasoning control for deeper analysis\n - Anthropic: Extended thinking with configurable token budgets (2K-25K tokens)\n - OpenAI: Reasoning effort levels for o1/o3/gpt-5 models\n - Ollama: Native thinking parameter support for compatible models (gpt-oss)\n- **Function Calling**: LLM can directly interact with Binary Ninja API to navigate and modify analysis\n- **MCP Integration**: Model Context Protocol support for extensible tool integration\n- **RLHF Dataset Generation**: Collect interaction data to enable model fine-tuning\n- **RAG Augmentation**: Enhance queries with relevant documentation and context\n- **Async Processing**: Non-blocking UI with background LLM processing\n- **Streaming Support**: Real-time response generation with proper cancellation\n\n### Configuration & Settings\n- **Flexible API Configuration**: Support for multiple LLM providers and endpoints\n- **Model Selection**: Choose from available models for different analysis tasks\n- **Reasoning Effort Control**: Session-specific thinking depth configuration\n - Adjustable per-query or globally in Settings tab\n - Four levels: None (standard), Low (~2K tokens), Medium (~10K), High (~25K)\n - Cost and latency warnings for higher levels\n- **Token Limits**: Configurable maximum tokens for cost and performance optimization\n- **Database Management**: Built-in RLHF and RAG database configuration\n- **Thread Safety**: Proper async handling for Binary Ninja's threading requirements\n\n## Future Roadmap\n\n### Planned Features\n- **Model Fine-tuning**: Leverage collected RLHF data for specialized model training\n- **Collaborative Features**: Share analysis insights and suggestions across teams\n- **Hierarchical Communities**: Multi-level community detection for large binaries\n\n### Research Areas\n- **Domain-Specific Models**: Fine-tuned models for specific binary types\n- **Code Generation**: Automated exploit development and patching suggestions\n- **Enhanced Vulnerability Detection**: Expanded taint analysis with data flow tracking\n- **Performance Optimization**: Enhanced suggestion accuracy and speed\n\n## Quick Start Guide\n\n### 1. Installation\n\nWindows users should start with: [BinAssist on Windows](docs/binassist-on-windows.md)\n```bash\n# Install dependencies from the plugin directory\npip install -r requirements.txt\n```\n\n### 2. Configuration\n1. Open **Settings \u2192 BinAssist** in Binary Ninja\n2. Configure your LLM provider:\n - **API Host**: Point to your preferred API endpoint (e.g., `http://localhost:11434` for Ollama)\n - **API Key**: Set authentication key if required\n - **Model**: Choose your preferred model (e.g., `gpt-oss:20b`, `claude-sonnet-4-5`, `gpt-5.2-codex`)\n3. Set database paths for RLHF and RAG features\n4. Adjust token limits based on your needs\n5. Configure **Reasoning Effort** in the Settings tab for models that support extended thinking\n\n### 3. Usage\n1. Load a binary in Binary Ninja\n2. Click the **\ud83e\udd16 robot icon** in the sidebar to open BinAssist\n3. Navigate between tabs based on your analysis needs:\n - **Explain**: Analyze functions and instructions\n - **Query**: Interactive chat with the LLM\n - **Actions**: Get intelligent improvement suggestions\n - **Semantic Graph**: Build and explore the binary's semantic graph\n - **RAG**: Manage external documentation for context\n\n### 4. Workflow Examples\n\n**Function Analysis:**\n1. Navigate to a function in Binary Ninja\n2. Switch to the **Explain** tab\n3. Click **\"Explain Function\"** for comprehensive analysis\n\n**Getting Suggestions:** \n1. Go to the **Actions** tab\n2. Select desired action types (Rename Function, etc.)\n3. Click **\"Analyse\"** to get LLM-powered suggestions\n4. Review confidence scores and apply selected actions\n\n**Interactive Queries:**\n1. Use the **Query** tab for free-form questions\n2. Ask about specific functions, algorithms, or analysis techniques\n3. The LLM has full context of your current binary\n\n**Agentic Analysis (ReAct):**\n1. Enable **Agentic** mode in the Query tab\n2. Enable **MCP** to provide tools for autonomous exploration\n3. Ask complex questions like \"What does this binary do?\" or \"Find security vulnerabilities\"\n4. Watch as the agent autonomously:\n - Decompiles and analyzes functions\n - Follows cross-references\n - Builds understanding through iterative reasoning\n - Provides comprehensive analysis with step-by-step traces\n\n**Semantic Graph Analysis:**\n1. Go to the **Semantic Graph** tab\n2. Click **\"ReIndex Binary\"** to build the function graph\n - Community detection runs automatically after indexing\n3. Use **\"Semantic Analysis\"** for LLM-powered function summaries\n4. Run **\"Security Analysis\"** to find vulnerable source\u2192sink paths\n5. Explore the **Visual Graph** to see function relationships\n6. Use **Search** to find functions by name or summary content\n\n## Screenshot\n![Screenshot](https://raw.githubusercontent.com/jtang613/BinAssist/refs/heads/master/res/screenshot1.png)\n![Screenshots](/res/screenshots.gif)\n\n## Homepage\nhttps://github.com/jtang613/BinAssist\n\n\n## Technical Architecture\n\n### Design Patterns\n- **Model-View-Controller (MVC)**: Clean separation of concerns across all tabs\n- **Service-Oriented Architecture**: Modular services for different analysis tasks \n- **Observer Pattern**: Qt signal-slot communication for responsive UI\n- **Async/Await**: Non-blocking operations with proper thread management\n\n### Key Components\n\n**Controllers:**\n- `ExplainController`: Manages function and instruction analysis\n- `QueryController`: Handles interactive LLM conversations\n- `ActionsController`: Coordinates intelligent suggestion generation\n- `SemanticGraphController`: Orchestrates GraphRAG indexing and analysis\n\n**Services:**\n- `BinaryContextService`: Extracts and formats binary information\n- `ActionsService`: Validates and applies code improvements\n- `RLHFService`: Manages training data collection\n- `RAGService`: Handles document retrieval and context enhancement\n- `GraphRAGService`: Manages semantic graph indexing and queries\n- `GraphStore`: SQLite-backed graph node and edge storage\n- `CommunityDetector`: Label Propagation algorithm for function clustering\n- `TaintAnalyzer`: Source-to-sink vulnerability path detection\n\n**Threading:**\n- `ExplainLLMThread`: Background processing for explanations\n- `QueryLLMThread`: Async chat processing with streaming\n- `ActionsLLMThread`: LLM tool calling for suggestion generation\n- `ReActOrchestratorThread`: Autonomous multi-step agent execution\n\n**Tools & Integration:**\n- **MCP Tools**: Native LLM tool calling for precise actions\n- **Binary Ninja API**: Direct integration with analysis engine\n- **OpenAI Compatibility**: Works with any OpenAI v1-compatible endpoint\n\n## Installation & Compatibility\n\n### System Requirements\n- **Binary Ninja**: Version 4000 or higher\n- **Python**: 3.8+ with Binary Ninja's Python environment\n- **Memory**: 4GB+ recommended for local LLM usage\n- **Storage**: ~100MB for plugin + model-dependent storage\n\n### Platform Support\n\n**Linux** (Primary Development Platform)\n- Fully tested and supported\n- Recommended for production use\n\n**Windows** \n- Should work but less tested\n- Submit issues for Windows-specific problems\n\n**macOS**\n- Should work but less tested \n- Submit issues for macOS-specific problems\n\n### LLM Provider Setup\n\n**Local LLMs (Recommended):**\n```bash\n# Ollama setup\ncurl -fsSL https://ollama.ai/install.sh | sh\n\n# Pull a general-purpose model\nollama pull llama3.1:8b\n\n# Or pull a reasoning model (recommended for complex analysis)\nollama pull gpt-oss:20b\n\nollama serve # Runs on http://localhost:11434\n```\n\n**Other Compatible Providers:**\n- **LM Studio**: Desktop GUI for local models\n- **Ollama**: Advanced local LLM interface CLI\n- **Open-WebUI**: Advanced local LLM interface GUI\n- **OpenAI API**: Cloud-based (requires API key)\n- **Anthropic API**: Cloud-based (requires API key)\n- **LiteLLM Proxy**: Access AWS Bedrock, Azure, and 100+ providers\n- **OpenRouter**: Access to multiple models via API\n\n### Installation Steps\n\n1. **Install Dependencies**:\n ```bash\n cd /path/to/BinAssist\n pip install -r requirements.txt\n ```\n\n2. **Configure Binary Ninja**:\n - Install as a plugin in Binary Ninja's plugin directory\n - Or run directly from development directory\n\n3. **Set up LLM Provider**:\n - Configure your preferred provider (see LLM Provider Setup above)\n - Update BinAssist settings with correct API endpoints\n\n## Dependencies\n\n**Required Python Packages:**\n```\nopenai # OpenAI and LiteLLM provider API\nanthropic # Anthropic Claude API\npysqlite3 # Database operations\nmarkdown # Documentation formatting\nhttpx # HTTP client for API calls\nanyio>=4.6 # Async I/O support\nmcp # Model Context Protocol client\nwhoosh # Full-text search for RAG documents\naiohttp # OAuth clients\n```\n\n## Contributing\n\nWe welcome contributions! Please see our contributing guidelines:\n\n- **Bug Reports**: Submit detailed issues with reproduction steps\n- **Feature Requests**: Propose new functionality with clear use cases \n- **Code Contributions**: Follow existing patterns\n\n## Support & Community\n\n- **GitHub Issues**: Primary support channel for bugs and features\n\n## License\n\nThis plugin is released under the **MIT License** - see LICENSE file for details.\n\n**Minimum Binary Ninja Version**: 5000\n\n**Metadata Version**: 2\n", + "minimumbinaryninjaversion": 5000, + "name": "BinAssist", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/0da1c6d5-b8a5-4367-b552-94439b3e1d1d/versions/fe36e257-b499-46ef-8f26-dc2041e3d592/platforms/3145/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/0da1c6d5-b8a5-4367-b552-94439b3e1d1d/versions/fe36e257-b499-46ef-8f26-dc2041e3d592/platforms/3145/download?notrack=1", + "path": "jtang613_BinAssist", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 46, + "updated_at": "2026-02-01 15:42:14+00:00" + }, + "projectUrl": "https://github.com/jtang613/BinAssist", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "1.10.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "vrzh", + "dependencies": "", + "description": "Loader for MobiCore trustlets and secure drivers.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1721404531, + "license": { + "name": "MIT", + "text": "Copyright 2024 vrzh\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "MCLF is a format for MobiCore trustlets and drivers. This plugin will map the trustlet/secure driver and resolve known calls to `mcLib`.", + "minimumbinaryninjaversion": 3233, + "name": "MobiCore Loader Format", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/ef88ffb4-cdbd-4963-9514-4d5440140037/versions/12dd073a-c35b-4c48-a8a0-844e2da84461/platforms/1309/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/ef88ffb4-cdbd-4963-9514-4d5440140037/versions/12dd073a-c35b-4c48-a8a0-844e2da84461/platforms/1309/download?notrack=1", + "path": "vrzh_mclfbinjaloader", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 0, + "updated_at": "2024-07-19 15:55:31+00:00" + }, + "projectUrl": "https://github.com/v-rzh/mclf-binja-loader", + "subdir": "", + "type": [ + "binaryview", + "helper" + ], + "version": "0.0.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "434b", + "dependencies": "", + "description": "Interactive shellcode disassembler/assembler", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1732775887, + "license": { + "name": "Apache 2.0", + "text": "Copyright 2024 0x434b Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + }, + "longdescription": "# BinaryNinja Shellcoder Plugin\n\n## Overview\n\nShellcoder is a lightweight plugin for Binary Ninja that enhances shellcode development and analysis.\nIt provides a versatile interface for assembling, disassembling, and formatting shellcode, supporting multiple architectures and output formats akin to the online ShellStorm Assembler/Disassembler.\n\n## Features\n\n- **Multi-architecture Support**: Compatible with all architectures supported by Binary Ninja.\n- **Flexible Input Formats**:\n - Assembly instructions\n - Inline hex format (e.g., \"\\x90\\x90\")\n - Space-separated hex format (e.g., 90 90)\n- **Multiple Output Formats**:\n - Inline hex\n - Space-separated hex\n - Python byte string\n - C-style array\n - Disassembled mnemonics (for disassembling)\n- **Customizable Mnemonic Display**:\n - Optional address display\n - Optional bytecode display\n - Adjustable base address for relative operations\n- **Comment usage**:\n - You can annotate your assembly/shellcode with comments (`#`, `//`, or `;`)\n- **Bad Character Identification**: Quickly identify and highlight problematic bytes in your shellcode.\n- **No External Dependencies**: Utilizes only Binary Ninja's built-in functionalities, ensuring a lightweight and easily deployable solution.\n\n## Installation\n\n1. Clone this repository or download the source code.\n2. Copy the plugin file to your Binary Ninja plugins folder:\n - Windows: `%APPDATA%\\Binary Ninja\\plugins\\`\n - Linux: `~/.binaryninja/plugins/`\n - macOS: `~/Library/Application Support/Binary Ninja/plugins/`\n3. Restart Binary Ninja or reload plugins.\n\n## Usage\n\n1. Open Binary Ninja and navigate to the \"Plugins\" menu.\n2. Select \"Shellcoder\" to open the plugin interface.\n3. Enter your assembly code or hex-formatted shellcode in the input area.\n4. Choose your desired output format and options.\n5. Click \"Assemble\" to process your input.\n6. View the results in the output area.\n\n_Note_: Alternatively you can use `CTRL+p` to open the command palette and search for the plugin.\n\n## Showcase\n\n![interface](img/interface.png)\n\n## Contributing\n\nContributions to the plugin are more than welcome! Here's how you can contribute:\n\n1. Fork the repository.\n2. Create a new branch for your feature or bug fix.\n3. Commit your changes with clear, descriptive commit messages.\n4. Push your branch and submit a pull request.\n\nPlease ensure your code adheres to the existing style and includes appropriate tests and documentation whenever necessary.\n\n## License\n\nThis project is licensed under the Apache 2.0 License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- The Binary Ninja team for their excellent reverse engineering platform.\n- The ShellStorm online assembler/disassembler for giving me the idea.\n\n## Contact\n\nFor bug reports, feature requests, or general inquiries, please open an issue on the GitHub repository.\n\n---\n\nHappy shellcoding!\n", + "minimumbinaryninjaversion": 4526, + "name": "Shellcoder", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/eeb7bdd3-ab93-419b-b0b2-963c66db9542/versions/16d01741-d57d-448a-958c-b1bf363fc638/platforms/1316/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/eeb7bdd3-ab93-419b-b0b2-963c66db9542/versions/16d01741-d57d-448a-958c-b1bf363fc638/platforms/1316/download?notrack=1", + "path": "0xricksanchez_Shellcoder", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 17, + "updated_at": "2024-11-28 06:38:07+00:00" + }, + "projectUrl": "https://github.com/0xricksanchez/Shellcoder", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Austin Haggard", + "dependencies": "ollama\nnetworkx>=3.2.1\n", + "description": "Binary Ninja Ollama integrates with your own locally hosted ollama server to rename functions and variables with AI", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1728484893, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024 ahaggard2013 \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Ollama is a free, open source tool that allows you to host locally run AI models. Binary Ninja Ollama allows you to utilize your locally hosted ollama server to preform reverse engineering tasks such as renaming functions and variables with AI FOR FREE. See https://github.com/ahaggard2013/binaryninja-ollama for full description.", + "minimumbinaryninjaversion": 4, + "name": "Binary Ninja Ollama", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/f88f116d-82db-48d3-84b9-66e93ae1ee61/versions/f758bc8e-508c-40d0-8a19-4066a4277990/platforms/1322/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/f88f116d-82db-48d3-84b9-66e93ae1ee61/versions/f758bc8e-508c-40d0-8a19-4066a4277990/platforms/1322/download?notrack=1", + "path": "ahaggard2013_binaryninjaollama", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 84, + "updated_at": "2024-10-09 14:41:33+00:00" + }, + "projectUrl": "https://github.com/ahaggard2013/binaryninja-ollama", + "subdir": "", + "type": [ + "architecture", + "binaryview", + "core", + "helper", + "ui" + ], + "version": "1.0.7", + "view_only": false + }, + { + "api": [ + "rust" + ], + "author": "unknowntrojan", + "dependencies": "", + "description": "SigMaker style plugin", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1740808382, + "license": { + "name": "AGPLv3", + "text": "GNU AFFERO GENERAL PUBLIC LICENSE\r\n Version 3, 19 November 2007\r\n\r\n Copyright (C) 2007 Free Software Foundation, Inc. \r\n Everyone is permitted to copy and distribute verbatim copies\r\n of this license document, but changing it is not allowed.\r\n\r\n Preamble\r\n\r\n The GNU Affero General Public License is a free, copyleft license for\r\nsoftware and other kinds of works, specifically designed to ensure\r\ncooperation with the community in the case of network server software.\r\n\r\n The licenses for most software and other practical works are designed\r\nto take away your freedom to share and change the works. By contrast,\r\nour General Public Licenses are intended to guarantee your freedom to\r\nshare and change all versions of a program--to make sure it remains free\r\nsoftware for all its users.\r\n\r\n When we speak of free software, we are referring to freedom, not\r\nprice. Our General Public Licenses are designed to make sure that you\r\nhave the freedom to distribute copies of free software (and charge for\r\nthem if you wish), that you receive source code or can get it if you\r\nwant it, that you can change the software or use pieces of it in new\r\nfree programs, and that you know you can do these things.\r\n\r\n Developers that use our General Public Licenses protect your rights\r\nwith two steps: (1) assert copyright on the software, and (2) offer\r\nyou this License which gives you legal permission to copy, distribute\r\nand/or modify the software.\r\n\r\n A secondary benefit of defending all users' freedom is that\r\nimprovements made in alternate versions of the program, if they\r\nreceive widespread use, become available for other developers to\r\nincorporate. Many developers of free software are heartened and\r\nencouraged by the resulting cooperation. However, in the case of\r\nsoftware used on network servers, this result may fail to come about.\r\nThe GNU General Public License permits making a modified version and\r\nletting the public access it on a server without ever releasing its\r\nsource code to the public.\r\n\r\n The GNU Affero General Public License is designed specifically to\r\nensure that, in such cases, the modified source code becomes available\r\nto the community. It requires the operator of a network server to\r\nprovide the source code of the modified version running there to the\r\nusers of that server. Therefore, public use of a modified version, on\r\na publicly accessible server, gives the public access to the source\r\ncode of the modified version.\r\n\r\n An older license, called the Affero General Public License and\r\npublished by Affero, was designed to accomplish similar goals. This is\r\na different license, not a version of the Affero GPL, but Affero has\r\nreleased a new version of the Affero GPL which permits relicensing under\r\nthis license.\r\n\r\n The precise terms and conditions for copying, distribution and\r\nmodification follow.\r\n\r\n TERMS AND CONDITIONS\r\n\r\n 0. Definitions.\r\n\r\n \"This License\" refers to version 3 of the GNU Affero General Public License.\r\n\r\n \"Copyright\" also means copyright-like laws that apply to other kinds of\r\nworks, such as semiconductor masks.\r\n\r\n \"The Program\" refers to any copyrightable work licensed under this\r\nLicense. Each licensee is addressed as \"you\". \"Licensees\" and\r\n\"recipients\" may be individuals or organizations.\r\n\r\n To \"modify\" a work means to copy from or adapt all or part of the work\r\nin a fashion requiring copyright permission, other than the making of an\r\nexact copy. The resulting work is called a \"modified version\" of the\r\nearlier work or a work \"based on\" the earlier work.\r\n\r\n A \"covered work\" means either the unmodified Program or a work based\r\non the Program.\r\n\r\n To \"propagate\" a work means to do anything with it that, without\r\npermission, would make you directly or secondarily liable for\r\ninfringement under applicable copyright law, except executing it on a\r\ncomputer or modifying a private copy. Propagation includes copying,\r\ndistribution (with or without modification), making available to the\r\npublic, and in some countries other activities as well.\r\n\r\n To \"convey\" a work means any kind of propagation that enables other\r\nparties to make or receive copies. Mere interaction with a user through\r\na computer network, with no transfer of a copy, is not conveying.\r\n\r\n An interactive user interface displays \"Appropriate Legal Notices\"\r\nto the extent that it includes a convenient and prominently visible\r\nfeature that (1) displays an appropriate copyright notice, and (2)\r\ntells the user that there is no warranty for the work (except to the\r\nextent that warranties are provided), that licensees may convey the\r\nwork under this License, and how to view a copy of this License. If\r\nthe interface presents a list of user commands or options, such as a\r\nmenu, a prominent item in the list meets this criterion.\r\n\r\n 1. Source Code.\r\n\r\n The \"source code\" for a work means the preferred form of the work\r\nfor making modifications to it. \"Object code\" means any non-source\r\nform of a work.\r\n\r\n A \"Standard Interface\" means an interface that either is an official\r\nstandard defined by a recognized standards body, or, in the case of\r\ninterfaces specified for a particular programming language, one that\r\nis widely used among developers working in that language.\r\n\r\n The \"System Libraries\" of an executable work include anything, other\r\nthan the work as a whole, that (a) is included in the normal form of\r\npackaging a Major Component, but which is not part of that Major\r\nComponent, and (b) serves only to enable use of the work with that\r\nMajor Component, or to implement a Standard Interface for which an\r\nimplementation is available to the public in source code form. A\r\n\"Major Component\", in this context, means a major essential component\r\n(kernel, window system, and so on) of the specific operating system\r\n(if any) on which the executable work runs, or a compiler used to\r\nproduce the work, or an object code interpreter used to run it.\r\n\r\n The \"Corresponding Source\" for a work in object code form means all\r\nthe source code needed to generate, install, and (for an executable\r\nwork) run the object code and to modify the work, including scripts to\r\ncontrol those activities. However, it does not include the work's\r\nSystem Libraries, or general-purpose tools or generally available free\r\nprograms which are used unmodified in performing those activities but\r\nwhich are not part of the work. For example, Corresponding Source\r\nincludes interface definition files associated with source files for\r\nthe work, and the source code for shared libraries and dynamically\r\nlinked subprograms that the work is specifically designed to require,\r\nsuch as by intimate data communication or control flow between those\r\nsubprograms and other parts of the work.\r\n\r\n The Corresponding Source need not include anything that users\r\ncan regenerate automatically from other parts of the Corresponding\r\nSource.\r\n\r\n The Corresponding Source for a work in source code form is that\r\nsame work.\r\n\r\n 2. Basic Permissions.\r\n\r\n All rights granted under this License are granted for the term of\r\ncopyright on the Program, and are irrevocable provided the stated\r\nconditions are met. This License explicitly affirms your unlimited\r\npermission to run the unmodified Program. The output from running a\r\ncovered work is covered by this License only if the output, given its\r\ncontent, constitutes a covered work. This License acknowledges your\r\nrights of fair use or other equivalent, as provided by copyright law.\r\n\r\n You may make, run and propagate covered works that you do not\r\nconvey, without conditions so long as your license otherwise remains\r\nin force. You may convey covered works to others for the sole purpose\r\nof having them make modifications exclusively for you, or provide you\r\nwith facilities for running those works, provided that you comply with\r\nthe terms of this License in conveying all material for which you do\r\nnot control copyright. Those thus making or running the covered works\r\nfor you must do so exclusively on your behalf, under your direction\r\nand control, on terms that prohibit them from making any copies of\r\nyour copyrighted material outside their relationship with you.\r\n\r\n Conveying under any other circumstances is permitted solely under\r\nthe conditions stated below. Sublicensing is not allowed; section 10\r\nmakes it unnecessary.\r\n\r\n 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\r\n\r\n No covered work shall be deemed part of an effective technological\r\nmeasure under any applicable law fulfilling obligations under article\r\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\r\nsimilar laws prohibiting or restricting circumvention of such\r\nmeasures.\r\n\r\n When you convey a covered work, you waive any legal power to forbid\r\ncircumvention of technological measures to the extent such circumvention\r\nis effected by exercising rights under this License with respect to\r\nthe covered work, and you disclaim any intention to limit operation or\r\nmodification of the work as a means of enforcing, against the work's\r\nusers, your or third parties' legal rights to forbid circumvention of\r\ntechnological measures.\r\n\r\n 4. Conveying Verbatim Copies.\r\n\r\n You may convey verbatim copies of the Program's source code as you\r\nreceive it, in any medium, provided that you conspicuously and\r\nappropriately publish on each copy an appropriate copyright notice;\r\nkeep intact all notices stating that this License and any\r\nnon-permissive terms added in accord with section 7 apply to the code;\r\nkeep intact all notices of the absence of any warranty; and give all\r\nrecipients a copy of this License along with the Program.\r\n\r\n You may charge any price or no price for each copy that you convey,\r\nand you may offer support or warranty protection for a fee.\r\n\r\n 5. Conveying Modified Source Versions.\r\n\r\n You may convey a work based on the Program, or the modifications to\r\nproduce it from the Program, in the form of source code under the\r\nterms of section 4, provided that you also meet all of these conditions:\r\n\r\n a) The work must carry prominent notices stating that you modified\r\n it, and giving a relevant date.\r\n\r\n b) The work must carry prominent notices stating that it is\r\n released under this License and any conditions added under section\r\n 7. This requirement modifies the requirement in section 4 to\r\n \"keep intact all notices\".\r\n\r\n c) You must license the entire work, as a whole, under this\r\n License to anyone who comes into possession of a copy. This\r\n License will therefore apply, along with any applicable section 7\r\n additional terms, to the whole of the work, and all its parts,\r\n regardless of how they are packaged. This License gives no\r\n permission to license the work in any other way, but it does not\r\n invalidate such permission if you have separately received it.\r\n\r\n d) If the work has interactive user interfaces, each must display\r\n Appropriate Legal Notices; however, if the Program has interactive\r\n interfaces that do not display Appropriate Legal Notices, your\r\n work need not make them do so.\r\n\r\n A compilation of a covered work with other separate and independent\r\nworks, which are not by their nature extensions of the covered work,\r\nand which are not combined with it such as to form a larger program,\r\nin or on a volume of a storage or distribution medium, is called an\r\n\"aggregate\" if the compilation and its resulting copyright are not\r\nused to limit the access or legal rights of the compilation's users\r\nbeyond what the individual works permit. Inclusion of a covered work\r\nin an aggregate does not cause this License to apply to the other\r\nparts of the aggregate.\r\n\r\n 6. Conveying Non-Source Forms.\r\n\r\n You may convey a covered work in object code form under the terms\r\nof sections 4 and 5, provided that you also convey the\r\nmachine-readable Corresponding Source under the terms of this License,\r\nin one of these ways:\r\n\r\n a) Convey the object code in, or embodied in, a physical product\r\n (including a physical distribution medium), accompanied by the\r\n Corresponding Source fixed on a durable physical medium\r\n customarily used for software interchange.\r\n\r\n b) Convey the object code in, or embodied in, a physical product\r\n (including a physical distribution medium), accompanied by a\r\n written offer, valid for at least three years and valid for as\r\n long as you offer spare parts or customer support for that product\r\n model, to give anyone who possesses the object code either (1) a\r\n copy of the Corresponding Source for all the software in the\r\n product that is covered by this License, on a durable physical\r\n medium customarily used for software interchange, for a price no\r\n more than your reasonable cost of physically performing this\r\n conveying of source, or (2) access to copy the\r\n Corresponding Source from a network server at no charge.\r\n\r\n c) Convey individual copies of the object code with a copy of the\r\n written offer to provide the Corresponding Source. This\r\n alternative is allowed only occasionally and noncommercially, and\r\n only if you received the object code with such an offer, in accord\r\n with subsection 6b.\r\n\r\n d) Convey the object code by offering access from a designated\r\n place (gratis or for a charge), and offer equivalent access to the\r\n Corresponding Source in the same way through the same place at no\r\n further charge. You need not require recipients to copy the\r\n Corresponding Source along with the object code. If the place to\r\n copy the object code is a network server, the Corresponding Source\r\n may be on a different server (operated by you or a third party)\r\n that supports equivalent copying facilities, provided you maintain\r\n clear directions next to the object code saying where to find the\r\n Corresponding Source. Regardless of what server hosts the\r\n Corresponding Source, you remain obligated to ensure that it is\r\n available for as long as needed to satisfy these requirements.\r\n\r\n e) Convey the object code using peer-to-peer transmission, provided\r\n you inform other peers where the object code and Corresponding\r\n Source of the work are being offered to the general public at no\r\n charge under subsection 6d.\r\n\r\n A separable portion of the object code, whose source code is excluded\r\nfrom the Corresponding Source as a System Library, need not be\r\nincluded in conveying the object code work.\r\n\r\n A \"User Product\" is either (1) a \"consumer product\", which means any\r\ntangible personal property which is normally used for personal, family,\r\nor household purposes, or (2) anything designed or sold for incorporation\r\ninto a dwelling. In determining whether a product is a consumer product,\r\ndoubtful cases shall be resolved in favor of coverage. For a particular\r\nproduct received by a particular user, \"normally used\" refers to a\r\ntypical or common use of that class of product, regardless of the status\r\nof the particular user or of the way in which the particular user\r\nactually uses, or expects or is expected to use, the product. A product\r\nis a consumer product regardless of whether the product has substantial\r\ncommercial, industrial or non-consumer uses, unless such uses represent\r\nthe only significant mode of use of the product.\r\n\r\n \"Installation Information\" for a User Product means any methods,\r\nprocedures, authorization keys, or other information required to install\r\nand execute modified versions of a covered work in that User Product from\r\na modified version of its Corresponding Source. The information must\r\nsuffice to ensure that the continued functioning of the modified object\r\ncode is in no case prevented or interfered with solely because\r\nmodification has been made.\r\n\r\n If you convey an object code work under this section in, or with, or\r\nspecifically for use in, a User Product, and the conveying occurs as\r\npart of a transaction in which the right of possession and use of the\r\nUser Product is transferred to the recipient in perpetuity or for a\r\nfixed term (regardless of how the transaction is characterized), the\r\nCorresponding Source conveyed under this section must be accompanied\r\nby the Installation Information. But this requirement does not apply\r\nif neither you nor any third party retains the ability to install\r\nmodified object code on the User Product (for example, the work has\r\nbeen installed in ROM).\r\n\r\n The requirement to provide Installation Information does not include a\r\nrequirement to continue to provide support service, warranty, or updates\r\nfor a work that has been modified or installed by the recipient, or for\r\nthe User Product in which it has been modified or installed. Access to a\r\nnetwork may be denied when the modification itself materially and\r\nadversely affects the operation of the network or violates the rules and\r\nprotocols for communication across the network.\r\n\r\n Corresponding Source conveyed, and Installation Information provided,\r\nin accord with this section must be in a format that is publicly\r\ndocumented (and with an implementation available to the public in\r\nsource code form), and must require no special password or key for\r\nunpacking, reading or copying.\r\n\r\n 7. Additional Terms.\r\n\r\n \"Additional permissions\" are terms that supplement the terms of this\r\nLicense by making exceptions from one or more of its conditions.\r\nAdditional permissions that are applicable to the entire Program shall\r\nbe treated as though they were included in this License, to the extent\r\nthat they are valid under applicable law. If additional permissions\r\napply only to part of the Program, that part may be used separately\r\nunder those permissions, but the entire Program remains governed by\r\nthis License without regard to the additional permissions.\r\n\r\n When you convey a copy of a covered work, you may at your option\r\nremove any additional permissions from that copy, or from any part of\r\nit. (Additional permissions may be written to require their own\r\nremoval in certain cases when you modify the work.) You may place\r\nadditional permissions on material, added by you to a covered work,\r\nfor which you have or can give appropriate copyright permission.\r\n\r\n Notwithstanding any other provision of this License, for material you\r\nadd to a covered work, you may (if authorized by the copyright holders of\r\nthat material) supplement the terms of this License with terms:\r\n\r\n a) Disclaiming warranty or limiting liability differently from the\r\n terms of sections 15 and 16 of this License; or\r\n\r\n b) Requiring preservation of specified reasonable legal notices or\r\n author attributions in that material or in the Appropriate Legal\r\n Notices displayed by works containing it; or\r\n\r\n c) Prohibiting misrepresentation of the origin of that material, or\r\n requiring that modified versions of such material be marked in\r\n reasonable ways as different from the original version; or\r\n\r\n d) Limiting the use for publicity purposes of names of licensors or\r\n authors of the material; or\r\n\r\n e) Declining to grant rights under trademark law for use of some\r\n trade names, trademarks, or service marks; or\r\n\r\n f) Requiring indemnification of licensors and authors of that\r\n material by anyone who conveys the material (or modified versions of\r\n it) with contractual assumptions of liability to the recipient, for\r\n any liability that these contractual assumptions directly impose on\r\n those licensors and authors.\r\n\r\n All other non-permissive additional terms are considered \"further\r\nrestrictions\" within the meaning of section 10. If the Program as you\r\nreceived it, or any part of it, contains a notice stating that it is\r\ngoverned by this License along with a term that is a further\r\nrestriction, you may remove that term. If a license document contains\r\na further restriction but permits relicensing or conveying under this\r\nLicense, you may add to a covered work material governed by the terms\r\nof that license document, provided that the further restriction does\r\nnot survive such relicensing or conveying.\r\n\r\n If you add terms to a covered work in accord with this section, you\r\nmust place, in the relevant source files, a statement of the\r\nadditional terms that apply to those files, or a notice indicating\r\nwhere to find the applicable terms.\r\n\r\n Additional terms, permissive or non-permissive, may be stated in the\r\nform of a separately written license, or stated as exceptions;\r\nthe above requirements apply either way.\r\n\r\n 8. Termination.\r\n\r\n You may not propagate or modify a covered work except as expressly\r\nprovided under this License. Any attempt otherwise to propagate or\r\nmodify it is void, and will automatically terminate your rights under\r\nthis License (including any patent licenses granted under the third\r\nparagraph of section 11).\r\n\r\n However, if you cease all violation of this License, then your\r\nlicense from a particular copyright holder is reinstated (a)\r\nprovisionally, unless and until the copyright holder explicitly and\r\nfinally terminates your license, and (b) permanently, if the copyright\r\nholder fails to notify you of the violation by some reasonable means\r\nprior to 60 days after the cessation.\r\n\r\n Moreover, your license from a particular copyright holder is\r\nreinstated permanently if the copyright holder notifies you of the\r\nviolation by some reasonable means, this is the first time you have\r\nreceived notice of violation of this License (for any work) from that\r\ncopyright holder, and you cure the violation prior to 30 days after\r\nyour receipt of the notice.\r\n\r\n Termination of your rights under this section does not terminate the\r\nlicenses of parties who have received copies or rights from you under\r\nthis License. If your rights have been terminated and not permanently\r\nreinstated, you do not qualify to receive new licenses for the same\r\nmaterial under section 10.\r\n\r\n 9. Acceptance Not Required for Having Copies.\r\n\r\n You are not required to accept this License in order to receive or\r\nrun a copy of the Program. Ancillary propagation of a covered work\r\noccurring solely as a consequence of using peer-to-peer transmission\r\nto receive a copy likewise does not require acceptance. However,\r\nnothing other than this License grants you permission to propagate or\r\nmodify any covered work. These actions infringe copyright if you do\r\nnot accept this License. Therefore, by modifying or propagating a\r\ncovered work, you indicate your acceptance of this License to do so.\r\n\r\n 10. Automatic Licensing of Downstream Recipients.\r\n\r\n Each time you convey a covered work, the recipient automatically\r\nreceives a license from the original licensors, to run, modify and\r\npropagate that work, subject to this License. You are not responsible\r\nfor enforcing compliance by third parties with this License.\r\n\r\n An \"entity transaction\" is a transaction transferring control of an\r\norganization, or substantially all assets of one, or subdividing an\r\norganization, or merging organizations. If propagation of a covered\r\nwork results from an entity transaction, each party to that\r\ntransaction who receives a copy of the work also receives whatever\r\nlicenses to the work the party's predecessor in interest had or could\r\ngive under the previous paragraph, plus a right to possession of the\r\nCorresponding Source of the work from the predecessor in interest, if\r\nthe predecessor has it or can get it with reasonable efforts.\r\n\r\n You may not impose any further restrictions on the exercise of the\r\nrights granted or affirmed under this License. For example, you may\r\nnot impose a license fee, royalty, or other charge for exercise of\r\nrights granted under this License, and you may not initiate litigation\r\n(including a cross-claim or counterclaim in a lawsuit) alleging that\r\nany patent claim is infringed by making, using, selling, offering for\r\nsale, or importing the Program or any portion of it.\r\n\r\n 11. Patents.\r\n\r\n A \"contributor\" is a copyright holder who authorizes use under this\r\nLicense of the Program or a work on which the Program is based. The\r\nwork thus licensed is called the contributor's \"contributor version\".\r\n\r\n A contributor's \"essential patent claims\" are all patent claims\r\nowned or controlled by the contributor, whether already acquired or\r\nhereafter acquired, that would be infringed by some manner, permitted\r\nby this License, of making, using, or selling its contributor version,\r\nbut do not include claims that would be infringed only as a\r\nconsequence of further modification of the contributor version. For\r\npurposes of this definition, \"control\" includes the right to grant\r\npatent sublicenses in a manner consistent with the requirements of\r\nthis License.\r\n\r\n Each contributor grants you a non-exclusive, worldwide, royalty-free\r\npatent license under the contributor's essential patent claims, to\r\nmake, use, sell, offer for sale, import and otherwise run, modify and\r\npropagate the contents of its contributor version.\r\n\r\n In the following three paragraphs, a \"patent license\" is any express\r\nagreement or commitment, however denominated, not to enforce a patent\r\n(such as an express permission to practice a patent or covenant not to\r\nsue for patent infringement). To \"grant\" such a patent license to a\r\nparty means to make such an agreement or commitment not to enforce a\r\npatent against the party.\r\n\r\n If you convey a covered work, knowingly relying on a patent license,\r\nand the Corresponding Source of the work is not available for anyone\r\nto copy, free of charge and under the terms of this License, through a\r\npublicly available network server or other readily accessible means,\r\nthen you must either (1) cause the Corresponding Source to be so\r\navailable, or (2) arrange to deprive yourself of the benefit of the\r\npatent license for this particular work, or (3) arrange, in a manner\r\nconsistent with the requirements of this License, to extend the patent\r\nlicense to downstream recipients. \"Knowingly relying\" means you have\r\nactual knowledge that, but for the patent license, your conveying the\r\ncovered work in a country, or your recipient's use of the covered work\r\nin a country, would infringe one or more identifiable patents in that\r\ncountry that you have reason to believe are valid.\r\n\r\n If, pursuant to or in connection with a single transaction or\r\narrangement, you convey, or propagate by procuring conveyance of, a\r\ncovered work, and grant a patent license to some of the parties\r\nreceiving the covered work authorizing them to use, propagate, modify\r\nor convey a specific copy of the covered work, then the patent license\r\nyou grant is automatically extended to all recipients of the covered\r\nwork and works based on it.\r\n\r\n A patent license is \"discriminatory\" if it does not include within\r\nthe scope of its coverage, prohibits the exercise of, or is\r\nconditioned on the non-exercise of one or more of the rights that are\r\nspecifically granted under this License. You may not convey a covered\r\nwork if you are a party to an arrangement with a third party that is\r\nin the business of distributing software, under which you make payment\r\nto the third party based on the extent of your activity of conveying\r\nthe work, and under which the third party grants, to any of the\r\nparties who would receive the covered work from you, a discriminatory\r\npatent license (a) in connection with copies of the covered work\r\nconveyed by you (or copies made from those copies), or (b) primarily\r\nfor and in connection with specific products or compilations that\r\ncontain the covered work, unless you entered into that arrangement,\r\nor that patent license was granted, prior to 28 March 2007.\r\n\r\n Nothing in this License shall be construed as excluding or limiting\r\nany implied license or other defenses to infringement that may\r\notherwise be available to you under applicable patent law.\r\n\r\n 12. No Surrender of Others' Freedom.\r\n\r\n If conditions are imposed on you (whether by court order, agreement or\r\notherwise) that contradict the conditions of this License, they do not\r\nexcuse you from the conditions of this License. If you cannot convey a\r\ncovered work so as to satisfy simultaneously your obligations under this\r\nLicense and any other pertinent obligations, then as a consequence you may\r\nnot convey it at all. For example, if you agree to terms that obligate you\r\nto collect a royalty for further conveying from those to whom you convey\r\nthe Program, the only way you could satisfy both those terms and this\r\nLicense would be to refrain entirely from conveying the Program.\r\n\r\n 13. Remote Network Interaction; Use with the GNU General Public License.\r\n\r\n Notwithstanding any other provision of this License, if you modify the\r\nProgram, your modified version must prominently offer all users\r\ninteracting with it remotely through a computer network (if your version\r\nsupports such interaction) an opportunity to receive the Corresponding\r\nSource of your version by providing access to the Corresponding Source\r\nfrom a network server at no charge, through some standard or customary\r\nmeans of facilitating copying of software. This Corresponding Source\r\nshall include the Corresponding Source for any work covered by version 3\r\nof the GNU General Public License that is incorporated pursuant to the\r\nfollowing paragraph.\r\n\r\n Notwithstanding any other provision of this License, you have\r\npermission to link or combine any covered work with a work licensed\r\nunder version 3 of the GNU General Public License into a single\r\ncombined work, and to convey the resulting work. The terms of this\r\nLicense will continue to apply to the part which is the covered work,\r\nbut the work with which it is combined will remain governed by version\r\n3 of the GNU General Public License.\r\n\r\n 14. Revised Versions of this License.\r\n\r\n The Free Software Foundation may publish revised and/or new versions of\r\nthe GNU Affero General Public License from time to time. Such new versions\r\nwill be similar in spirit to the present version, but may differ in detail to\r\naddress new problems or concerns.\r\n\r\n Each version is given a distinguishing version number. If the\r\nProgram specifies that a certain numbered version of the GNU Affero General\r\nPublic License \"or any later version\" applies to it, you have the\r\noption of following the terms and conditions either of that numbered\r\nversion or of any later version published by the Free Software\r\nFoundation. If the Program does not specify a version number of the\r\nGNU Affero General Public License, you may choose any version ever published\r\nby the Free Software Foundation.\r\n\r\n If the Program specifies that a proxy can decide which future\r\nversions of the GNU Affero General Public License can be used, that proxy's\r\npublic statement of acceptance of a version permanently authorizes you\r\nto choose that version for the Program.\r\n\r\n Later license versions may give you additional or different\r\npermissions. However, no additional obligations are imposed on any\r\nauthor or copyright holder as a result of your choosing to follow a\r\nlater version.\r\n\r\n 15. Disclaimer of Warranty.\r\n\r\n THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\r\nAPPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\r\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\r\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\r\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\r\nIS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\r\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\r\n\r\n 16. Limitation of Liability.\r\n\r\n IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\r\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\r\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\r\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\r\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\r\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\r\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\r\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\r\nSUCH DAMAGES.\r\n\r\n 17. Interpretation of Sections 15 and 16.\r\n\r\n If the disclaimer of warranty and limitation of liability provided\r\nabove cannot be given local legal effect according to their terms,\r\nreviewing courts shall apply local law that most closely approximates\r\nan absolute waiver of all civil liability in connection with the\r\nProgram, unless a warranty or assumption of liability accompanies a\r\ncopy of the Program in return for a fee.\r\n\r\n END OF TERMS AND CONDITIONS\r\n\r\n How to Apply These Terms to Your New Programs\r\n\r\n If you develop a new program, and you want it to be of the greatest\r\npossible use to the public, the best way to achieve this is to make it\r\nfree software which everyone can redistribute and change under these terms.\r\n\r\n To do so, attach the following notices to the program. It is safest\r\nto attach them to the start of each source file to most effectively\r\nstate the exclusion of warranty; and each file should have at least\r\nthe \"copyright\" line and a pointer to where the full notice is found.\r\n\r\n \r\n Copyright (C) \r\n\r\n This program is free software: you can redistribute it and/or modify\r\n it under the terms of the GNU Affero General Public License as published\r\n by the Free Software Foundation, either version 3 of the License, or\r\n (at your option) any later version.\r\n\r\n This program is distributed in the hope that it will be useful,\r\n but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n GNU Affero General Public License for more details.\r\n\r\n You should have received a copy of the GNU Affero General Public License\r\n along with this program. If not, see .\r\n\r\nAlso add information on how to contact you by electronic and paper mail.\r\n\r\n If your software can interact with users remotely through a computer\r\nnetwork, you should also make sure that it provides a way for users to\r\nget its source. For example, if your program is a web application, its\r\ninterface could display a \"Source\" link that leads users to an archive\r\nof the code. There are many ways you could offer source, and different\r\nsolutions will be better for different programs; see section 13 for the\r\nspecific requirements.\r\n\r\n You should also get your employer (if you work as a programmer) or school,\r\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\r\nFor more information on this, and how to apply and follow the GNU AGPL, see\r\n." + }, + "longdescription": "# binja_coolsigmaker (stable channel)\n\n(**The dev branch now contains the version of the plugin for the binja development update channel.**)\n\n(**master/main will target stable.**)\n\nWe all know signature scanning can be extremely useful. Sadly, the two public offerings for Binja are either very slow, or crash extremely often.\n\nThis is why I wrote this plugin. It's a signature scanning and creating plugin for x86 (more archs are planned!), written in Rust. It's extremely fast, supports multiple signature styles, and works like a charm.\n\n[Blog Post](https://binary.ninja/2024/10/01/plugin-spotlight-coolsigmaker.html)\n\nIt supports 3 styles of signatures. Or 4, if you want to be specific.\n\nTo create a signature, select the instruction you want the signature to point to, then go to `Plugins->CSM - Create Signature`.\n\nThe signature is checked for uniqueness within all executable segments of the binary. `.data` is not considered, so make sure your signature scanning implementation also ignores non-code sections.\n\nTo find a signature, copy the signature to your clipboard in the format you selected in the configuration, and go to `Plugins->CSM - Find Signature`. All occurrences will be in your log.\n\nThese are the settings:\n\n![settings](settings.png)\n\nThis is how it looks to create a signature, then scan for it:\n\n![pattern creation and scanning](sig.png)\n\n## How to install\n\n1. Download the platform-appropriate binary from release section\n2. Place the binary in your Binary Ninja installation's plugin folder\n\nOnce GitHub Actions are set up and a loader plugin has been written, you will be able to install the plugin via the official plugin manager.\n\n## Compiling yourself\n\nThis project requires the nightly channel of Rust.\n\nCheck the blog post above for a step-by-step.\n\nCheckout the branch of the repository matching the channel of binja you are building for.\n\nYou are now one `cargo b` away from greatness.\n", + "minimumbinaryninjaversion": 6135, + "name": "CoolSigMaker", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/36296d57-62ef-4367-9fb8-10211cb8b366/versions/594c318c-1b88-4f55-849c-cc08c78c9c3f/platforms/1292/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/36296d57-62ef-4367-9fb8-10211cb8b366/versions/594c318c-1b88-4f55-849c-cc08c78c9c3f/platforms/1292/download?notrack=1", + "path": "unknowntrojan_binja_coolsigmaker", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 77, + "updated_at": "2025-03-01 05:53:02+00:00" + }, + "projectUrl": "https://github.com/unknowntrojan/binja_coolsigmaker", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.00", + "view_only": true + }, + { + "api": [ + "python3" + ], + "author": "Jordan Whitehead", + "dependencies": "", + "description": "Export types definitions as ctypes structures", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1719243764, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024 Jordan Whitehead\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# ctypes Export\nAuthor: **Jordan Whitehead**\n\n_This plugin exports ctypes definitions for given structures and other types._\n\n## Description:\nAttempts to export specified types to python ctypes definitions, along with enums. It can gather and define all the dependent types as well.\nSupports wildcards (`*`, `?`) in type names.\n\nShould support most data types, please submit an issue for errors or incorrect generation.\n\n## License\n\nThis plugin is released under an [MIT license](./LICENSE).\n", + "minimumbinaryninjaversion": 3164, + "name": "ctypes Export", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/05f08387-b5c2-4ae2-a3f7-15dec8442d59/versions/e465014c-affd-4bfe-84aa-1893ae011f80/platforms/1339/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/05f08387-b5c2-4ae2-a3f7-15dec8442d59/versions/e465014c-affd-4bfe-84aa-1893ae011f80/platforms/1339/download?notrack=1", + "path": "jordan9001_ctypes_export", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 0, + "updated_at": "2024-06-24 15:42:44+00:00" + }, + "projectUrl": "https://github.com/jordan9001/ctypes_export", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.81", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "amtal", + "dependencies": "pymupdf>=1.19.0\n\n", + "description": "PDF Reference Opcodes Or reGisters. Like IDA's FRIEND/AMIE or Ghidra's \"Processor Manual...\" right-click menu.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1719239477, + "license": { + "name": "AGPL-3.0", + "text": "Copyright 2024 amtal\n\n GNU AFFERO GENERAL PUBLIC LICENSE\n Version 3, 19 November 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. \n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n Preamble\n\n The GNU Affero General Public License is a free, copyleft license for\nsoftware and other kinds of works, specifically designed to ensure\ncooperation with the community in the case of network server software.\n\n The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works. By contrast,\nour General Public Licenses are intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.\n\n When we speak of free software, we are referring to freedom, not\nprice. Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n Developers that use our General Public Licenses protect your rights\nwith two steps: (1) assert copyright on the software, and (2) offer\nyou this License which gives you legal permission to copy, distribute\nand/or modify the software.\n\n A secondary benefit of defending all users' freedom is that\nimprovements made in alternate versions of the program, if they\nreceive widespread use, become available for other developers to\nincorporate. Many developers of free software are heartened and\nencouraged by the resulting cooperation. However, in the case of\nsoftware used on network servers, this result may fail to come about.\nThe GNU General Public License permits making a modified version and\nletting the public access it on a server without ever releasing its\nsource code to the public.\n\n The GNU Affero General Public License is designed specifically to\nensure that, in such cases, the modified source code becomes available\nto the community. It requires the operator of a network server to\nprovide the source code of the modified version running there to the\nusers of that server. Therefore, public use of a modified version, on\na publicly accessible server, gives the public access to the source\ncode of the modified version.\n\n An older license, called the Affero General Public License and\npublished by Affero, was designed to accomplish similar goals. This is\na different license, not a version of the Affero GPL, but Affero has\nreleased a new version of the Affero GPL which permits relicensing under\nthis license.\n\n The precise terms and conditions for copying, distribution and\nmodification follow.\n\n TERMS AND CONDITIONS\n\n 0. Definitions.\n\n \"This License\" refers to version 3 of the GNU Affero General Public License.\n\n \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n \"The Program\" refers to any copyrightable work licensed under this\nLicense. Each licensee is addressed as \"you\". \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy. The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy. Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies. Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License. If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n 1. Source Code.\n\n The \"source code\" for a work means the preferred form of the work\nfor making modifications to it. \"Object code\" means any non-source\nform of a work.\n\n A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form. A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities. However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work. For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n The Corresponding Source for a work in source code form is that\nsame work.\n\n 2. Basic Permissions.\n\n All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met. This License explicitly affirms your unlimited\npermission to run the unmodified Program. The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work. This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force. You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright. Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n Conveying under any other circumstances is permitted solely under\nthe conditions stated below. Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n 4. Conveying Verbatim Copies.\n\n You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n 5. Conveying Modified Source Versions.\n\n You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n a) The work must carry prominent notices stating that you modified\n it, and giving a relevant date.\n\n b) The work must carry prominent notices stating that it is\n released under this License and any conditions added under section\n 7. This requirement modifies the requirement in section 4 to\n \"keep intact all notices\".\n\n c) You must license the entire work, as a whole, under this\n License to anyone who comes into possession of a copy. This\n License will therefore apply, along with any applicable section 7\n additional terms, to the whole of the work, and all its parts,\n regardless of how they are packaged. This License gives no\n permission to license the work in any other way, but it does not\n invalidate such permission if you have separately received it.\n\n d) If the work has interactive user interfaces, each must display\n Appropriate Legal Notices; however, if the Program has interactive\n interfaces that do not display Appropriate Legal Notices, your\n work need not make them do so.\n\n A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit. Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n 6. Conveying Non-Source Forms.\n\n You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n a) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by the\n Corresponding Source fixed on a durable physical medium\n customarily used for software interchange.\n\n b) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by a\n written offer, valid for at least three years and valid for as\n long as you offer spare parts or customer support for that product\n model, to give anyone who possesses the object code either (1) a\n copy of the Corresponding Source for all the software in the\n product that is covered by this License, on a durable physical\n medium customarily used for software interchange, for a price no\n more than your reasonable cost of physically performing this\n conveying of source, or (2) access to copy the\n Corresponding Source from a network server at no charge.\n\n c) Convey individual copies of the object code with a copy of the\n written offer to provide the Corresponding Source. This\n alternative is allowed only occasionally and noncommercially, and\n only if you received the object code with such an offer, in accord\n with subsection 6b.\n\n d) Convey the object code by offering access from a designated\n place (gratis or for a charge), and offer equivalent access to the\n Corresponding Source in the same way through the same place at no\n further charge. You need not require recipients to copy the\n Corresponding Source along with the object code. If the place to\n copy the object code is a network server, the Corresponding Source\n may be on a different server (operated by you or a third party)\n that supports equivalent copying facilities, provided you maintain\n clear directions next to the object code saying where to find the\n Corresponding Source. Regardless of what server hosts the\n Corresponding Source, you remain obligated to ensure that it is\n available for as long as needed to satisfy these requirements.\n\n e) Convey the object code using peer-to-peer transmission, provided\n you inform other peers where the object code and Corresponding\n Source of the work are being offered to the general public at no\n charge under subsection 6d.\n\n A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling. In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage. For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product. A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source. The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information. But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed. Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n 7. Additional Terms.\n\n \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law. If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit. (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.) You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n a) Disclaiming warranty or limiting liability differently from the\n terms of sections 15 and 16 of this License; or\n\n b) Requiring preservation of specified reasonable legal notices or\n author attributions in that material or in the Appropriate Legal\n Notices displayed by works containing it; or\n\n c) Prohibiting misrepresentation of the origin of that material, or\n requiring that modified versions of such material be marked in\n reasonable ways as different from the original version; or\n\n d) Limiting the use for publicity purposes of names of licensors or\n authors of the material; or\n\n e) Declining to grant rights under trademark law for use of some\n trade names, trademarks, or service marks; or\n\n f) Requiring indemnification of licensors and authors of that\n material by anyone who conveys the material (or modified versions of\n it) with contractual assumptions of liability to the recipient, for\n any liability that these contractual assumptions directly impose on\n those licensors and authors.\n\n All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10. If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term. If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n 8. Termination.\n\n You may not propagate or modify a covered work except as expressly\nprovided under this License. Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License. If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n 9. Acceptance Not Required for Having Copies.\n\n You are not required to accept this License in order to receive or\nrun a copy of the Program. Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance. However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work. These actions infringe copyright if you do\nnot accept this License. Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n 10. Automatic Licensing of Downstream Recipients.\n\n Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License. You are not responsible\nfor enforcing compliance by third parties with this License.\n\n An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations. If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License. For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n 11. Patents.\n\n A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based. The\nwork thus licensed is called the contributor's \"contributor version\".\n\n A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version. For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement). To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients. \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License. You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n 12. No Surrender of Others' Freedom.\n\n If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all. For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n 13. Remote Network Interaction; Use with the GNU General Public License.\n\n Notwithstanding any other provision of this License, if you modify the\nProgram, your modified version must prominently offer all users\ninteracting with it remotely through a computer network (if your version\nsupports such interaction) an opportunity to receive the Corresponding\nSource of your version by providing access to the Corresponding Source\nfrom a network server at no charge, through some standard or customary\nmeans of facilitating copying of software. This Corresponding Source\nshall include the Corresponding Source for any work covered by version 3\nof the GNU General Public License that is incorporated pursuant to the\nfollowing paragraph.\n\n Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU General Public License into a single\ncombined work, and to convey the resulting work. The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the work with which it is combined will remain governed by version\n3 of the GNU General Public License.\n\n 14. Revised Versions of this License.\n\n The Free Software Foundation may publish revised and/or new versions of\nthe GNU Affero General Public License from time to time. Such new versions\nwill be similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n Each version is given a distinguishing version number. If the\nProgram specifies that a certain numbered version of the GNU Affero General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation. If the Program does not specify a version number of the\nGNU Affero General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n If the Program specifies that a proxy can decide which future\nversions of the GNU Affero General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n Later license versions may give you additional or different\npermissions. However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n 15. Disclaimer of Warranty.\n\n THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. Limitation of Liability.\n\n IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n 17. Interpretation of Sections 15 and 16.\n\n If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n END OF TERMS AND CONDITIONS\n\n How to Apply These Terms to Your New Programs\n\n If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n To do so, attach the following notices to the program. It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see .\n\nAlso add information on how to contact you by electronic and paper mail.\n\n If your software can interact with users remotely through a computer\nnetwork, you should also make sure that it provides a way for users to\nget its source. For example, if your program is a web application, its\ninterface could display a \"Source\" link that leads users to an archive\nof the code. There are many ways you could offer source, and different\nsolutions will be better for different programs; see section 13 for the\nspecific requirements.\n\n You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU AGPL, see\n." + }, + "longdescription": "P**D**F **R**eference **O**pcodes **O**r re**G**isters. Like IDA's [FRIEND](https://github.com/alexhude/FRIEND#readme)/[AMIE](https://github.com/NeatMonster/AMIE) or Ghidra's \"Processor Manual...\" right-click menu. \n\n![](https://raw.githubusercontent.com/amtal/droog/master/img/option-B.droog.jpg)\n\n# Usage\n\nThis is a glorified PDF search for tokens that show up in tables of contents.\n\nSelect a token like an instruction or a register, and \"Plugins\" -> \"DROOG\" -> \"Search Reference Headings...\" will show pages from PDFs available for the current architecture. Click an image to open the PDF at that page in your browser.\n\nFor unfamiliar architectures, bind the search to a hotkey. There's also a command to peek at table of contents headings in the status bar for quickly reviewing mnemonics.\n\n![](https://raw.githubusercontent.com/amtal/droog/master/img/usage.png)\n\nIf you're dealing with raw coprocessor operand values or unnamed MMIO offsets, you'll need to:\n\n1. Dig up the *right* PDFs for your SoC or peripheral. Rip relevant tables into a Python `dict`.\n2. Bulk-name relevant values or instructions with a script. (You can use comments as a single \"token\".)\n\n# Setup\n\nInstead of hardcoding documentation, local reference manuals are indexed with [MuPDF](https://mupdf.com/) (hence AGPLv3 licensing) and opened directly.\n\nYou can dump your PDF collection in `droog/manuals/{arch}/*.pdf`, or include them anywhere in your plugin's directory structure if it's installed to the same plugin folder as DROOG and predictably named. Endianness and 32/64-bit indicators on `arch` are stripped off with a regex, so `aarch64` is in `manuals/aarch/*.pdf` and `x86_64` lives in `manuals/x86/*.pdf`. It's weird but simplifies dealing with MIPS/ARMv7/etc.\n\nIf you're reversing ancient fauna based on scans with beautiful typesetting but terrible OCR and no table of contents, you can edit in your own ToC with MuPDF's [Document.set_toc()](https://pymupdf.readthedocs.io/en/latest/document.html#Document.set_toc). Check the `*.idx` files in the [Ghidra repo](https://github.com/NationalSecurityAgency/ghidra) in case American taxpayers already indexed one for you!", + "minimumbinaryninjaversion": 2800, + "name": "droog", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/64404e6b-b296-4c48-ba37-6dbdaa9a78ec/versions/4f56de4d-285c-4335-8bca-593dee1de431/platforms/1346/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/64404e6b-b296-4c48-ba37-6dbdaa9a78ec/versions/4f56de4d-285c-4335-8bca-593dee1de431/platforms/1346/download?notrack=1", + "path": "amtal_droog", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 2, + "updated_at": "2024-06-24 14:31:17+00:00" + }, + "projectUrl": "https://github.com/amtal/droog", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.5", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "matteyeux", + "dependencies": "requests\nbs4\n", + "description": "Binary Ninja plugin to display the documentation of a Windows function in a sidebar widget.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1712819538, + "license": { + "name": "Apache-2.0", + "text": "Copyright 2023 matteyeux\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\n\thttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + }, + "longdescription": "\n\n![Screenshot from 2023-01-01 12-40-15](https://user-images.githubusercontent.com/8758978/210169502-ceafcb37-53b0-403b-88e7-d018e3932acd.png)\n\n## Description\n\nThis plugin adds a sidebar widget to Binary Ninja. If the cursor is set to a `call` instruction the plugin detects the function's name a requests MSDN documentation.\n\nThe requested documentation is then displayed in the sidebar widget.\n\nEach documented function is also saved to a cache file named `cache.json` in the current plugin directory, meaning the plugin doesn't requests the doc for the same function everytime.\n\n## Credits\n\n- [Eric Hennenfent](https://github.com/ehennenfent) for [binja_explain_instruction](https://github.com/ehennenfent/binja_explain_instruction) which I used as templated for this plugin.\n- [Hacking Things](https://github.com/HackingThings) for the [URL I needed to make this work](https://github.com/HackingThings/binja_MSDN_Helper/blob/main/__init__.py#L17)", + "minimumbinaryninjaversion": 3053, + "name": "binja-win-docs", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/6157b142-23c4-4273-a7c3-890c987c2a98/versions/48be45b7-044f-40e6-b27d-3c37baa3ca07/platforms/1352/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/6157b142-23c4-4273-a7c3-890c987c2a98/versions/48be45b7-044f-40e6-b27d-3c37baa3ca07/platforms/1352/download?notrack=1", + "path": "matteyeux_binjawindocs", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 14, + "updated_at": "2024-04-11 07:12:18+00:00" + }, + "projectUrl": "https://github.com/matteyeux/binja-win-docs", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "0.1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "riskydissonance", + "dependencies": "requests>=2.32.3\nlxml>=5.2.2\n", + "description": "Lookup documentation for the selected token", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1718900317, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024 \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" + }, + "longdescription": "Lookup a documentation summary for the selected token using `Ctrl-q`, or open the full online documentation in the browser with `Ctrl-Q`.", + "minimumbinaryninjaversion": 5529, + "name": "binja-doc-lookup", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/21dc9781-46cd-4dc3-93d4-c597d4e1e2bc/versions/c241354c-8291-4114-9cf3-c05cf330744f/platforms/1358/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/21dc9781-46cd-4dc3-93d4-c597d4e1e2bc/versions/c241354c-8291-4114-9cf3-c05cf330744f/platforms/1358/download?notrack=1", + "path": "riskydissonance_binjadoclookup", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2024-06-20 16:18:37+00:00" + }, + "projectUrl": "https://github.com/riskydissonance/binja-doc-lookup", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "elbee", + "dependencies": "capstone==5.0.1\npandas==2.2.2\nunicorn==2.0.1.post1\nlief==0.16.2\n", + "description": "RopView is a gadget analysis framework for BinaryNinja capable of granular per-instruction based analysis and complex logical queries.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1740516647, + "license": { + "name": "MIT", + "text": "Copyright (c) 2023 Dylan Knoff\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "\n\n### Changelog\nRefactoring and requirements fixes from devx00", + "minimumbinaryninjaversion": 3164, + "name": "RopView", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/388f2a38-e0a9-4f89-8bca-581a3a528971/versions/f01b2ffe-495b-46ce-9c73-efe12c78465f/platforms/2257/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/388f2a38-e0a9-4f89-8bca-581a3a528971/versions/f01b2ffe-495b-46ce-9c73-efe12c78465f/platforms/2257/download?notrack=1", + "path": "elbeecyber_RopView", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 67, + "updated_at": "2025-02-25 20:50:47+00:00" + }, + "projectUrl": "https://github.com/elbee-cyber/RopView", + "subdir": "", + "type": [ + "binaryview", + "helper", + "ui" + ], + "version": "2.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Austin Ralls", + "dependencies": "", + "description": "Adds support for Android Dex files", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1714157052, + "license": { + "name": "MIT", + "text": "Copyright 2024 Austin Ralls\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Banjo\n\n![logo](doc/banjo_small.png)\n\n_Android Dex disassembler and Binary Ninja plugin_\n\n## Description\n\nBanjo parses Dex files and disassembles them into a smali syntax that is close to [baksmali](https://github.com/JesusFreke/smali)'s.\n\nThere are three parts to this project:\n\n- Core disassembler library in [android/](android)\n- Binary Ninja plugin in [architecture.py](architecture.py) and [binaryview.py](binaryview.py)\n- Standalone disassembler script in [disas_to_files.py](disas_to_files.py)\n\nFor more documentation, see the [doc/](doc) directory.\n\nThere are still some rough edges. See [GitHub issues](https://github.com/CarveSystems/banjo/issues) for more details.\n\nThis project was released at a [ShmooCon 2020 talk](https://github.com/CarveSystems/presentations/tree/master/2020/banjo).\n\n![screenshot](doc/banjo_screenshot.png)\n\n## Installation Instructions\n\nMake sure Binary Ninja is using Python 3.8 or higher and copy banjo to `BN_USER_DIRECTORY/plugins/`. On Linux:\n\n```\ncd ~/.binaryninja/plugins/ && git clone https://github.com/carvesystems/banjo.git\n```\n", + "minimumbinaryninjaversion": 3112, + "name": "Banjo", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/47d65507-98dc-4c50-a6de-68370e4e1b2c/versions/104d9201-d0e6-4c73-b1d3-a39cf985fdab/platforms/1369/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/47d65507-98dc-4c50-a6de-68370e4e1b2c/versions/104d9201-d0e6-4c73-b1d3-a39cf985fdab/platforms/1369/download?notrack=1", + "path": "ivisionresearch_banjo", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 67, + "updated_at": "2024-04-26 18:44:12+00:00" + }, + "projectUrl": "https://github.com/ivision-research/banjo", + "subdir": "", + "type": [ + "architecture", + "binaryview" + ], + "version": "3.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Samman Palihapitiya", + "dependencies": "emoji\ntree-sitter==0.23.2\ntree-sitter-c==0.23.4\nsemgrep\n", + "description": "Search code with Semgrep", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1738636459, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024 Interrupt Labs\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# `semgrep_bn`\n\n`semgrep_bn` is a Binary Ninja plugin designed to automate the process of generating pseudo-C code from binary files, running Semgrep over this pseudo-C, and presenting the results - all without having to leave the Binary Ninja environment.\n\n![Semgrep Demo GIF](gifs/semgrep_bn_short_demo.gif)\n\n\n## Installation\n\n1. Clone the `semgrep_bn` repo into the Binary Ninja plugins directory (see [here](https://docs.binary.ninja/guide/plugins.html) for the location of your plugin folder).\n\n```shell\ngit clone https://github.com/interruptlabs/semgrep_bn\n```\n\n2. Install the Python dependencies.\n\n```shell\npip install -r semgrep_bn/requirements.txt\n```\n\n3. Follow the installation instructions [here](https://semgrep.dev/docs/getting-started/) to install Semgrep.\n\n## Usage\n\n1. Open a binary file with Binary Ninja.\n2. Navigate to the `Plugins` menu and select `Semgrep analysis`.\n3. Select your Semgrep ruleset.\n To write your own semgrep rules, follow the instructions found [here](https://semgrep.dev/docs/writing-rules/rule-ideas/)!\n Some examples of rules are available [here](https://github.com/semgrep/semgrep-rules/tree/develop/c/lang/security) and [here](https://github.com/0xdea/semgrep-rules).\n4. The plugin will analyse the binary, run Semgrep, and display the findings in an HTML report.\n\n## Contributing\n\nContributions to `semgrep_bn` are welcome.\nPlease feel free to submit issues, fork the repository, and send pull requests!\n", + "minimumbinaryninjaversion": 3500, + "name": "semgrep-bn", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/86f851e6-5040-46ed-b505-5293726a0ee1/versions/11f6943b-2873-4089-8b95-b9bee0b99eaa/platforms/1375/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/86f851e6-5040-46ed-b505-5293726a0ee1/versions/11f6943b-2873-4089-8b95-b9bee0b99eaa/platforms/1375/download?notrack=1", + "path": "interruptlabs_semgrep_bn", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 34, + "updated_at": "2025-02-04 02:34:19+00:00" + }, + "projectUrl": "https://github.com/interruptlabs/semgrep_bn", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Tim Blazytko", + "dependencies": "huggingface_hub>=0.21.4\nllama-cpp-python>=0.2.56\nnetworkx>=3.2.1\ntoml>=0.10.2\ntyper>=0.11\n", + "description": "Provides automated reverse engineering assistance through the use of local large language models (LLMs) on consumer hardware.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1718942220, + "license": { + "name": "GPL-2.0", + "text": "Copyright 2024 Tim Blazytko\n\nThis program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program; if not, see ." + }, + "longdescription": "# ReverserAI (v1.1)\nAuthor: **Tim Blazytko**\n\n_Provides automated reverse engineering assistance through the use of local large language models (LLMs) on consumer hardware._\n\n## Description:\n\n_ReverserAI_ is a research project designed to automate and enhance reverse engineering tasks through the use of locally-hosted large language models (LLMs). Operating entirely offline, this initial release features the automatic suggestion of high-level, semantically meaningful function names derived from decompiler output. _ReverserAI_ is provided as a Binary Ninja plugin; however, its architecture is designed to be extended to other reverse engineering platforms such as IDA and Ghidra.\n\nWhile local LLMs do not match the performance and capabilities of their cloud-based counterparts like ChatGPT4 and require substantial computing resources, they represent a significant step forward in balancing performance with confidentiality requirements.\n\n_ReverserAI_ serves as an initial exploration into the potential of local LLMs as aids in reverse engineering on consumer-grade hardware. It showcases what is currently achievable and plans to be a playground for future developments in the realm of AI-assisted reverse engineering. Additionally, the project explores the benefits of combining static analysis techniques with modern AI capabilities to improve the accuracy of AI-assisted reverse engineering.\n\n\nSome example use cases can be found in [examples](./examples).\n\n> [!NOTE]\n> Disclaimer: My expertise in machine learning and LLMs is limited. There may exist more efficient models or methods to achieve similar tasks with greater performance. This project represents a culmination of research into viable configurations, offering a stable foundation with acceptable performance. Feedback and contributions to improve _ReverserAI_ are highly encouraged.\n\n\n## Core Features\n\n- **Offline Operation**: Runs LLMs entirely on local CPU/GPU, ensuring data privacy and security.\n\n- **Automatic Function Naming**: Automatically suggests semantically meaningful function names from decompiler output.\n\n- **Binary Ninja Integration**: Seamlessly integrates as a plugin with Binary Ninja.\n\n- **Modular Architecture**: Designed for easy extension to support other reverse engineering tools like IDA and Ghidra.\n\n- **Consumer Hardware Compatibility**: Optimized to run on consumer-grade hardware, such as Apple silicon architectures.\n\n- **Enhanced AI with Static Analysis**: Improves AI-based analysis and suggestions by incorporating insights from static analysis, providing a richer context and more accurate results.\n\n\n## Installation\n\n_ReverserAI_ can be easily integrated via Binary Ninja's plugin manager. Alternatively, for those preferring command line installation, execute in Binary Ninja's `plugins` folder:\n\n```bash\ngit clone https://github.com/mrphrazer/reverser_ai.git\ncd reverser_ai\n\n# install requirements\npip3 install -r requirements.txt\n\n# install ReverserAI\npip3 install .\n```\n\nUpon initial launch, the tool will automatically download the (default `mistral-7b-instruct-v0.2.Q4_K_M.gguf` large language model file (~5GB). The download time varies based on internet connection speed. To manually initiate the download or download other models, execute the [`model_download.py`](scripts/model_download.py) script.\n\n\n## Hardware Requirements\n\nFor optimal LLM performance on consumer-grade hardware, a setup with multiple CPU threads or a powerful GPU is advised. _ReverserAI_ runs efficiently on systems with at least 16 GB of RAM and 12 CPU threads, with queries taking about 20 to 30 seconds. GPU optimizations, especially on Apple silicon devices, can reduce this to 2 to 5 seconds per query.\n\n\n## Usage\n\n_ReverserAI_ is accessible through Binary Ninja's user interface and via command line.\n\n### User Interface\n\nTo invoke the plugin within Binary Ninja, navigate to `Plugins -> ReverserAI` and, for example, run \"Rename All Functions\":\n\n

\n\"Plugin\n

\n\nDepending on the total number of functions in the binary, this may take a while. The AI-assisted function name suggestions will appear in the Log window:\n\n

\n\"Binary\n

\n\n\n### Configuration\n\nConfiguring _ReverserAI_ to match your hardware setup optimizes its performance. Key configuration parameters include CPU and GPU utilization preferences: For powerful GPUs, configure _ReverserAI_ to primarily use GPU, reducing CPU threads to minimize overhead. Without a strong GPU, increase CPU thread usage to maximize processing power. For systems with balanced resources, allocate tasks between CPU and GPU for efficient operation. Another dimension is the selection of the underlying model which greatly influences _ReverserAI_'s functionality, performance, and resource consumption. Below, key configuration parameters are outlined along with guidance on model selection based on your computational resources and requirements.\n\n\n* `model_identifier`: Choose between `mistral-7b-instruct` and `mixtral-8x7b-instruct` to best suit your analysis needs and hardware capabilities. \n - `mistral-7b-instruct` is a smaller, faster model requiring approximately 5GB of RAM, ideal for quick processing tasks. It is best suited for environments with limited computational resources or when high throughput is required, albeit with a trade-off in the quality of outputs compared to larger models.\n - `mixtral-8x7b-instruct` is a larger model designed, ideal for more complex code analysis tasks, requiring approximately 25GB of RAM. This model is recommended for users with access to high-end hardware and who need enhanced reasoning capabilities and accuracy. It may necessitate disabling memory mapping on machines that cannot support the required RAM level.\n\n* `use_mmap`: Enables memory mapping of the model files when set to `true`. This allows the model to load parts of the data on-demand, which can improve performance and reduce memory usage, especially for very large models.\n\n* `n_threads`: Specifies the number of CPU threads to utilize. Maximize CPU thread count to the number of available CPU threads for full utilization, or set to 0 to disable.\n\n* `n_gpu_layers`: Determines GPU layer usage. Enter values up to 99 for powerful GPUs, or 0 to disable GPU processing.\n\n* `seed`: A fixed seed ensures deterministic behavior for debugging (consistent output for identical inputs). Modify the seed for varied responses.\n\n* `verbose`: Enabling `verbose` mode provides detailed logs about the model and configuration settings.\n\nThe default configuration is designed to strike a balance between performance and resource usage, with a preference for GPU acceleration where feasible. Adjust these settings based on your specific hardware capabilities and the requirements of your reverse engineering tasks to achieve optimal performance.\n\n\n#### Binary Ninja\n\nTo adjust settings in Binary Ninja, open `Settings` and search for `reverser_ai`. Changes require Binary Ninja to be restarted.\n\n

\n\"Plugin\n

\n\nEach change requires a restart of Binary Ninja.\n\n\n#### Parameter Tuning\n\nFor detailed parameter adjustment, utilize the [`gpt_function_namer.py`](scripts/gpt_function_namer.py) script with a configuration file, starting with the provided [`example_config.toml`](example_config.toml):\n\n```\n$ time python3 scripts/gpt_function_namer.py example_config.toml\nSuggested name: xor_two_numbers\n\nreal\t0m1.550s\nuser\t0m0.268s\nsys\t0m0.223s\n```\n\n\n## Static Analysis to Improve AI-based Analysis\n\n_ReverserAI_ explores how to enrich AI-related reverse engineering tasks by providing more context through static analysis. Initially, Context-Aware Function Renaming is the only implemented feature.\n\n\n### Context-Aware Function Renaming\n\nExperiments have shown that function renaming is especially effective for functions with contextual information, such as external API functions or strings that provide context for the AI. The goal is to narrow the analysis scope and focus on functions where context from strings, symbols, and other static analysis data can be leveraged.\n\n\n## Code Organization\n\n_ReverserAI_'s codebase maintains a clear separation between generic LLM functionalities and tool-specific integration, ensuring modularity and ease of extension. Below is an overview of the primary components:\n\n- **`gpt` Folder**: Contains code for interacting with large language models (LLMs). This includes:\n - A generic agent (`agent.py`) for model-agnostic operations.\n - A specialized module (`function_name_gpt.py`) for generating function name suggestions.\n\n- **`binary_ninja` Folder**: Hosts wrapper instances that:\n - Utilize Binary Ninja features to produce decompiler outputs.\n - Interface with the `gpt` folder's agents, enabling LLM-powered function naming within Binary Ninja.\n \n\n## Limitations and Future Work\n\n_ReverserAI_ serves as a proof of concept that demonstrates the potential of leveraging local LLMs for reverse engineering tasks on consumer-grade hardware. Currently, its primary functionality is to offer function name suggestions, but there exists significant scope for enhancement and expansion. Future directions could include:\n\n* Investigating additional interaction methods and parameters with LLMs to enhance quality and processing speed.\n\n* Adding network communication for hosting the _ReverserAI_ agent on a powerful server, circumventing local hardware constraints.\n\n* Fine-tuning existing models or developing specialized models tailored to reverse engineering needs.\n\n* Expanding functionality to include code explanations, analysis, and bug detection, subject to scalability and feasibility.\n\n* Extending support to other reverse engineering platforms such as IDA and Ghidra.\n\nThis project welcomes further contributions, suggestions, and enhancements, including pull requests.\n\n\n## Contact\n\nFor more information, contact [@mr_phrazer](https://twitter.com/mr_phrazer).\n", + "minimumbinaryninjaversion": 2487, + "name": "ReverserAI", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/f7c5ae8e-1f61-4f76-9620-6ebd36370927/versions/f0d063cc-8d53-4a94-9ff0-22896f174f0a/platforms/1389/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/f7c5ae8e-1f61-4f76-9620-6ebd36370927/versions/f0d063cc-8d53-4a94-9ff0-22896f174f0a/platforms/1389/download?notrack=1", + "path": "mrphrazer_reverser_ai", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 1027, + "updated_at": "2024-06-21 03:57:00+00:00" + }, + "projectUrl": "https://github.com/mrphrazer/reverser_ai", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Brandon Miller", + "dependencies": "", + "description": "Binary Ninja plugin for inspecting UEFI firmware images", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1709153707, + "license": { + "name": "MIT", + "text": "Copyright 2024 Brandon Miller\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# efi-inspector\n\nAuthor: **Brandon Miller (zznop)**\n\n_Binary Ninja plugin for inspecting UEFI firmware images_\n\n## Description\n\nEFI Inspector is a Binary Ninja plugin for inspecting UEFI firmware flash images. It is capable\nof loading UEFI flash dumps and identifying flash regions, Firmware File System (FFS) volumes,\nand FFS files. EFI Inspector facilitates multiple operations to include generating a markdown\nreport on the FFS layout, searching the file system for EFI files by GUID, and extracting EFI files\nto disk.\n\n**Load UEFI Flash Image**\n\n![demo load](img/loader.png)\n\n**Generate Markdown Report on Firmware File System Layout**\n\n![demo report](img/ffs-layout.png)\n\n**Extract a EFI File from Firmware File System**\n\n![demo extract](img/extract-file.png)\n\n**Search EFI Firmware File System for Blob by GUID**\n\n![demo search](img/guid-search.png)\n\n## Installation Instructions\n\n### Darwin\n\nno special instructions, package manager is recommended\n\n### Windows\n\nno special instructions, package manager is recommended\n\n### Linux\n\nno special instructions, package manager is recommended\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 4333\n\n## License\n\nThis plugin is released under a MIT license.\n\n## Metadata Version\n\n2\n\n## Related Projects\n\n* [UEFITool](https://github.com/LongSoft/UEFITool)\n* [uefi-firmware-parser](https://github.com/theopolis/uefi-firmware-parser)\n", + "minimumbinaryninjaversion": 4333, + "name": "EFI Inspector", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/71f91b0b-83b5-4dd7-9f81-2fb4c467d037/versions/673a9e2c-8155-406a-9820-b77b9f4fde47/platforms/1395/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/71f91b0b-83b5-4dd7-9f81-2fb4c467d037/versions/673a9e2c-8155-406a-9820-b77b9f4fde47/platforms/1395/download?notrack=1", + "path": "zznop_efiinspector", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 10, + "updated_at": "2024-02-28 20:55:07+00:00" + }, + "projectUrl": "https://github.com/zznop/efi-inspector", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Brandon Miller", + "dependencies": "", + "description": "Binary Ninja plugin for loading EFI Terse Executable files", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1709153687, + "license": { + "name": "MIT", + "text": "Copyright 2024 Brandon Miller\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# te-loader\n\nAuthor: **Brandon Miller (zznop)**\n\n_Binary Ninja loader for EFI Terse Executables_\n\n## Description\n\nTE Loader is a Binary Ninja plugin for loading Terse Executables (TE). It parses the TE image\nheader and section headers to load the TE file into Binary Ninja and facilitate analysis. TE files\nare found in UEFI firmware images. See the [efi-inspector](https://github.com/zznop/efi-inspector)\nplugin to analyze and extract TE files from UEFI flash dumps.\n\n![demo load](screenshot.png)\n\n## Installation Instructions\n\n### Darwin\n\nno special instructions, package manager is recommended\n\n### Windows\n\nno special instructions, package manager is recommended\n\n### Linux\n\nno special instructions, package manager is recommended\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 4333\n\n## License\n\nThis plugin is released under a MIT license.\n\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 4333, + "name": "TE Loader", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/9b2ea8df-9a10-4fa8-b60f-affd07cb6067/versions/e2d38877-6920-4156-94e1-500e7019a870/platforms/1400/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/9b2ea8df-9a10-4fa8-b60f-affd07cb6067/versions/e2d38877-6920-4156-94e1-500e7019a870/platforms/1400/download?notrack=1", + "path": "zznop_teloader", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 3, + "updated_at": "2024-02-28 20:54:47+00:00" + }, + "projectUrl": "https://github.com/zznop/te-loader", + "subdir": "", + "type": [ + "architecture" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "x64dbg", + "dependencies": "", + "description": "Official x64dbg plugin for Binary Ninja.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1767407915, + "license": { + "name": "MIT", + "text": "MIT License\n\nCopyright (c) 2025 x64dbg\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" + }, + "longdescription": "# x64dbgbinja\r\n\r\nOfficial x64dbg plugin for [Binary Ninja](https://binary.ninja).\r\n\r\n## Installation\r\n\r\nFrom the Plugins Menu, select \"Manage Plugins\". Search for \"x64dbgbinja\" and click the \"Install\" button.\r\n\r\n## Menu options\r\n\r\n### Import database\r\n\r\nImport comments/labels from an uncompressed x64dbg JSON database in Binary Ninja.\r\n\r\nSymbols for imported functions and or library functions can be overwritten via the \"Overwrite X\" entries in Settings.\r\n\r\n### Export database\r\n\r\nExport comments/labels to a JSON database that can be loaded by x64dbg.\r\n\r\nTo export labels only: uncheck \"Export Comments\" under \"x64dbg Database Export\" in Settings.\n\n### Changelog\n**Full Changelog**: https://github.com/x64dbg/x64dbgbinja/compare/v2.0.8...v2.0.9", + "minimumbinaryninjaversion": 6455, + "name": "x64dbgbinja", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/b5aa0d52-916e-4e85-8f87-6a2742367f77/versions/d3ef8fd4-af30-49c5-a445-9390c87eabfd/platforms/3031/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/b5aa0d52-916e-4e85-8f87-6a2742367f77/versions/d3ef8fd4-af30-49c5-a445-9390c87eabfd/platforms/3031/download?notrack=1", + "path": "x64dbg_x64dbgbinja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 85, + "updated_at": "2026-01-03 02:38:35+00:00" + }, + "projectUrl": "https://github.com/x64dbg/x64dbgbinja", + "subdir": "", + "type": [ + "sync" + ], + "version": "2.0.9", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "Claudio Teixeira", + "dependencies": "", + "description": "A plugin that renames Delphi functions according to a .map file produced by IDR.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1704987146, + "license": { + "name": "MIT", + "text": "Copyright 2024 Claudio Teixeira\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Delphi Mapper (v0.1)\nAuthor: **Claudio Teixeira**\n\n_A plugin that renames Delphi functions according to a .map file produced by IDR._\n\n## Description:\n\nParses a .map file produced by IDR (Interactive Delphi Reconstructor) and replaces the names of functions at their corresponding adresses.\n\nTo acquire a MAP file:\n![MAP generator in IDR](IDR_example.png)\n\n\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 2784\n\n## License\n\nThis plugin is released under a MIT license.\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 2784, + "name": "Delphi Mapper", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/1c4c75ee-e65c-457d-b4d9-de5c00ed52f7/versions/9a0a3998-64ba-44de-ac40-fbde5debb4c1/platforms/1411/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/1c4c75ee-e65c-457d-b4d9-de5c00ed52f7/versions/9a0a3998-64ba-44de-ac40-fbde5debb4c1/platforms/1411/download?notrack=1", + "path": "CTM1_BinjaDelphiMapper", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 1, + "updated_at": "2024-01-11 15:32:26+00:00" + }, + "projectUrl": "https://github.com/CTM1/BinjaDelphiMapper", + "subdir": "", + "type": [ + "binaryview" + ], + "version": "0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "psifertex", + "dependencies": "pypresence", + "description": "Enables Discord Rich Presence Integration for Binary Ninja", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1748019645, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 xitan, 2022 LittleDyingDuck, 2024 psifertex\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Enables Discord Rich Presence Integration for Binary Ninja", + "minimumbinaryninjaversion": 1200, + "name": "Discord Integration", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/93cf7bb4-ead8-4289-916f-f2cf845d423d/versions/c29c4c48-a8b0-469b-abc7-765d1b981516/platforms/2402/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/93cf7bb4-ead8-4289-916f-f2cf845d423d/versions/c29c4c48-a8b0-469b-abc7-765d1b981516/platforms/2402/download?notrack=1", + "path": "psifertex_discordpresence", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2025-05-23 17:00:45+00:00" + }, + "projectUrl": "https://github.com/psifertex/discordpresence", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Dimitris Zervas", + "dependencies": "frida\nJinja2\n", + "description": "Frida plugin for Binary Ninja - continuation of BinRida by @c3r34lk1ll3r", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1712760197, + "license": { + "name": "MIT", + "text": "Copyright 2019 Andrea Ferraris\nCopyright 2024 Dimitris Zervas\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Frinja\n\nAuthor: **Dimitris Zervas**\n\nFrida plugin for binary ninja.\n\nA set of jinja-enabled frida scripts using the context of binary ninja's static analysis.\n\nThis is a continuation of the [BinRida](https://github.com/c3r34lk1ll3r/BinRida) plugin by @[c3r34lk1ll3r](https://github.com/c3r34lk1ll3r).\n\n## Usage\n\nFirst of all you'll need to go to `Plugins > Frinja > Settings` to set up the frida\nconnection and the application to be instrumented.\n\nAfterwards you can use any available commands - the `Hook Function` and `Run Hooker`\ncommands are explained [below](#hooker)\n\n### Dump Function Context\n\nIt hooks and gathers all calls and returns of the focused function and generates\na markdown report with the following information:\n\n- Callee address\n- Thread ID\n- Arguments (tries to dereference pointers, read strings and numbers)\n- Return value\n- Register values\n\n### Inspect Function Paths\n\nA code coverage tracer for the focused function that highlights the executed basic blocks\n\n## Hooker\n\nThe main show of this plugin is the `Run Hooker` command. It allows you to trace\nand tamper with the execution of the application.\n\nAfter a function is marked with the `Hook Function` command (or any function with\nthe `Frinja Hooked` tag) all its calls and returns will get logged in the log pane.\n\nThere's also the ability to add pre and post hooks to the function as well as altering\nthe return value.\n\nTo do so a function comment should be added in the following format:\n\n```text\n@prehook: \n@posthook: \n@ret: \n@replace: \n```\n\nThe return value can be any kind of valid javascript expression\n\n## License\n\nThis plugin is released under a MIT license.", + "minimumbinaryninjaversion": 3164, + "name": "Frinja", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/3e410e71-48ce-4305-a04e-479567af5c1d/versions/7bbc6762-f630-4b7e-80a4-af63c90df93d/platforms/1424/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/3e410e71-48ce-4305-a04e-479567af5c1d/versions/7bbc6762-f630-4b7e-80a4-af63c90df93d/platforms/1424/download?notrack=1", + "path": "dzervas_frinja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 21, + "updated_at": "2024-04-10 14:43:17+00:00" + }, + "projectUrl": "https://github.com/dzervas/frinja", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.2.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "moval0x1", + "dependencies": "", + "description": "Show comments and symbols renamed during the analysis process.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1708468409, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024 \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" + }, + "longdescription": "# Comments And Symbols (v1.0.2)\nAuthor: **moval0x1**\n\n_Show comments and symbols renamed during the analysis process._\n\n## Description:\n\nYou can use this plugin to show comments and symbols renamed during the analysis process.\n\n![Comments and Symbols](img/bn-commentsAndSymbols.png)\n\nWhen you need to find a comment that you did, you can filter the text to find it and refresh it when you rename a function or add a new comment.\n\n![Filter](img/bn-filter.png)\n\n## Installation\n\nClone this repo into your Binary Ninja plugin directory.\n\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 4526\n\n## License\n\nThis plugin is released under a MIT license.\n## Metadata Version\n\n2\n\n## Credits\nInspired by [Comments Viewer](https://github.com/matteyeux/comments-viewer)\n", + "minimumbinaryninjaversion": 4526, + "name": "CommentsAndSymbols", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/1d9c965d-8e36-46f4-b4d8-2693698b8854/versions/68e907f1-452b-496f-9e1f-25a08567affc/platforms/1432/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/1d9c965d-8e36-46f4-b4d8-2693698b8854/versions/68e907f1-452b-496f-9e1f-25a08567affc/platforms/1432/download?notrack=1", + "path": "moval0x1_CommentsAndSymbols", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 3, + "updated_at": "2024-02-20 22:33:29+00:00" + }, + "projectUrl": "https://github.com/moval0x1/CommentsAndSymbols", + "subdir": "", + "type": [ + "ui", + "binaryview" + ], + "version": "1.0.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "moval0x1", + "dependencies": "", + "description": "Export notations from Binja to x64dbg", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1708468430, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024 \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" + }, + "longdescription": "# BinjaExportTox64dbg (v1.0.2)\nAuthor: **moval0x1**\n\n_Export notations from Binja to x64dbg_\n\n## Description:\n\nExport notations from Binja to x64dbg.\n\nBinja disassembly with renamed/added functions and comments\n![Binja Comments](img/binja-comments.png)\n\nx64dbg disassembly with imported functions and comments\n![x64dbg Comments](img/x64dbg-comments.png)\n\n## Installation Instructions\n\nClone this repo into your Binary Ninja plugin directory.\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 4526\n\n## License\n\nThis plugin is released under an [MIT license](./LICENSE).\n\n## Metadata Version\n\n2\n\n## Credits\n\nInspired by [ghidra_ExportToX64dbg](https://github.com/schlafwandler/ghidra_ExportToX64dbg)", + "minimumbinaryninjaversion": 4526, + "name": "BinjaExportTox64dbg", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/756c1a88-ec46-44ba-a261-1b81c57d50fc/versions/e3fa1231-2692-46e4-8675-f9c8ef241aff/platforms/1436/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/756c1a88-ec46-44ba-a261-1b81c57d50fc/versions/e3fa1231-2692-46e4-8675-f9c8ef241aff/platforms/1436/download?notrack=1", + "path": "moval0x1_BinjaExportTox64dbg", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 7, + "updated_at": "2024-02-20 22:33:50+00:00" + }, + "projectUrl": "https://github.com/moval0x1/BinjaExportTox64dbg", + "subdir": "", + "type": [ + "binaryview" + ], + "version": "1.0.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Linus S. (aka PistonMiner)", + "dependencies": "", + "description": "Adds the \"gocall\" calling convention", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1702576093, + "license": { + "name": "MIT", + "text": "Copyright (c) 2023 Linus S. (aka PistonMiner)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Adds support for the calling convention used by the Go Programming Language. Use *Go > Set Go calling convention* after loading the binary (ideally with analysis hold enabled and ensuring that all functions are created either automatically or by running another plugin to recover the symbols).\n\n**Before**\n![](https://github.com/PistonMiner/binaryninja-go-callconv/blob/main/media/before.png?raw=true)\n\n**After**\n![](https://github.com/PistonMiner/binaryninja-go-callconv/blob/main/media/after.png?raw=true)", + "minimumbinaryninjaversion": 2846, + "name": "Go Calling Convention", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/f8562534-a0be-4769-b7b4-80afd7d8c4fe/versions/d82371de-e2e7-470f-8c53-d396c1079a60/platforms/1443/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/f8562534-a0be-4769-b7b4-80afd7d8c4fe/versions/d82371de-e2e7-470f-8c53-d396c1079a60/platforms/1443/download?notrack=1", + "path": "PistonMiner_binaryninjagocallconv", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 5, + "updated_at": "2023-12-14 17:48:13+00:00" + }, + "projectUrl": "https://github.com/PistonMiner/binaryninja-go-callconv", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "xclusivor", + "dependencies": "", + "description": "Loader for Original Xbox Executables", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1699893372, + "license": { + "name": "MIT", + "text": "Copyright 2023 xclusivor\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# binaryninja-xbe\nAuthor: **xclusivor**\n\nOriginal Xbox Executable (XBE) Loader plugin for [Binary Ninja](https://binary.ninja/)\n\n## Description:\nBinary Ninja Binary View plugin for analyzing Original Xbox Executables.\n\nThis will download and execute the [XbSymbolDatabase](https://github.com/Cxbx-Reloaded/XbSymbolDatabase) analyzer for library symbol recovery.\n\n## Installation\nClone this repo into your Binary Ninja plugin directory.\n\nYou can manually install the symbol analyzer by extracting it the into root of the plugins directory.\ne.g. `$XBE_PLUGIN_DIR/XbSymbolDatabase/linux_x64/bin/XbSymbolDatabaseCLI`\n\n## Credits\nInspired by [ghidra-xbe](https://github.com/XboxDev/ghidra-xbe/tree/master)\n\n## License\nThis plugin is released under an [MIT license](./LICENSE).", + "minimumbinaryninjaversion": 4526, + "name": "Original Xbox Executable Loader", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/43c2d6b1-ae09-4d08-a234-80a2089f547d/versions/3db85962-e71a-4d46-b342-43ffdf70b233/platforms/1447/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/43c2d6b1-ae09-4d08-a234-80a2089f547d/versions/3db85962-e71a-4d46-b342-43ffdf70b233/platforms/1447/download?notrack=1", + "path": "xclusivor_binaryninjaxbe", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 4, + "updated_at": "2023-11-13 16:36:12+00:00" + }, + "projectUrl": "https://github.com/xclusivor/binaryninja-xbe", + "subdir": "", + "type": [ + "binaryview" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Cindy Xiao", + "dependencies": "", + "description": "Rust binary string recovery plugin", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1768171583, + "license": { + "name": "MIT", + "text": "Copyright (c) 2023 Cindy Xiao\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Rust String Slicer\n\nA Binary Ninja plugin to help find the addresses and lengths of strings in Rust binaries.\n\n![A screenshot of Binary Ninja with several structs of type \"&str\" defined, each of which contains the address and length of a string.](images/sliced-string-screenshot-border.png)\n\n## Usage\n\nThis plugin provides two new commands:\n\n- _Plugins_ > _Rust String Slicer_ > _Recover String Slices from Readonly Data_\n- _Plugins_ > _Rust String Slicer_ > _Recover String Slices from Code_ \n\n![A screenshot of two entries in the Binary Ninja menu, both under Plugins > Rust String Slicer: Recover String Slices from Readonly Data, and Recover String Slices from Code](images/plugin-actions-border.png)\n\nYou can view the list of recovered strings and their addresses in the Log window.\n\n![The Binary Ninja log window, showing log messages under the \"rust_string_slicer.binja_plugin.actions\" log category. The messages include both new definitions of the string slice type at certain locations ('Defined new `&str` at 0x1401c6b38\" )and the addresses and lengths of the recovered strings themselves ('Recovered string at addr 0x1401c6a09, len 0xb: 'src\\main.rs')](images/recovered-strings-log-border.png)\n\nThe plugin will also create a new `&str` type, for any strings defined in read-only data sections that are made up of a pointer to string data + the length of that string data. `&str` is a Rust primitive type called a \"string slice\", and is the type used in Rust for string literals ([docs](https://doc.rust-lang.org/std/primitive.str.html)).\n\nYou can view all created strings of this type by examining cross-references to the `&str` type.\n\n![The Binary Ninja Types and Cross References window, showing references to the &str type, which has fields char* _address and int64_t _length. Cross references include variables with names like str_\"C:\\Users\\User\\.cargo\\registry\\src\" and str_\"Impossible: must only have 0 to 8 input bytes in last chunk, with no invalid lengths\"](images/cross-references-rust-string-slice-type-border.png)\n\n## How does this work?\n\nThe original motivation for this plugin was to recreate the string slicing functionality in the tech preview of the [official IDA Rust Analysis Plugin from Hex-Rays](https://hex-rays.com/blog/rust-analysis-plugin-tech-preview/). That plugin is able to find the lengths of Rust strings, which are not null terminated, via some heuristics for finding the string length data.\n\nThe heuristics we use are the following:\n\n- Enumerate all addresses in the binary's read-only data section which have cross-references.\n- Treating each of those addresses as the beginning of a potential string literal.\n- Follow those cross references to see if there is some information around the site of that cross reference about string length.\n\nThe _Recover String Slices from Readonly Data_ command uses cross references which point to a data section. For each of these cross references, try to interpret the cross referenced address as a structure like the following, with some heuristics to determine whether the found length_of_string_literal is reasonable:\n\n```\nQWORD address_of_candidate_string_literal\nQWORD length_of_string_literal\n```\n\n![](images/readonly-data-string-slices-border.png)\n\n\nThe _Recover String Slices from Code_ command uses cross references which point to a code section. For each of these cross references, check to see if the subsequent instructions contain a move of an immediate value to a memory location; the immediate value is then taken as the string length. For example, for x64 binaries, look for instructions like this:\n\n```\nlea rax, \nmov [rsp+.], rax\nmov [rsp+.], 15\n```\n\n![](images/code-string-slices-border.png)\n\n\n## Development\n\n### Setting up a development environment\n\nTo set up a development environment, including setting up a Python virtual environment:\n\n```\npython -m venv .venv && . .venv/bin/activate\npython -m pip install -r requirements.txt\npython -m pip install -r dev-requirements.txt\npython $PATH_TO_BINARY_NINJA_INSTALLATION/scripts/install_api.py\n```\n\nFor formatting, linting, and running unit tests locally, install [Nox](https://nox.thea.codes/en/stable/tutorial.html), then:\n\n```\nnox\n```\n\nYou can also invoke each task separately; see [noxfile.py](noxfile.py) for more details on available tasks:\n\n```\nnox -s format\nnox -s lint\nnox -s test\n```\n\nLinting and unit testing (both against multiple Python versions) are also set up in CI on [GitHub Actions](.github/workflows/ci.yml).\n\n### Testing local versions of the plugin\n\nTo test the plugin locally in your own Binary Ninja installation during development, create a symbolic link between your development folder, and the [Binary Ninja user plugins folder](https://docs.binary.ninja/guide/index.html#user-folder), so that your development folder is loaded by Binary Ninja on startup as a plugin.\n\n- MacOS:\n\n ```sh\n ln -s `pwd` ~/Library/Application\\ Support/Binary\\ Ninja/plugins/rust_string_slicer\n ```\n\n- Linux:\n\n ```sh\n ln -s --relative . ~/.binaryninja/plugins/rust_string_slicer\n ```\n\n- Windows (Powershell):\n ```powershell\n New-Item -ItemType Junction -Value $(Get-Location) -Path \"$env:APPDATA\\Binary Ninja\\plugins\\rust_string_slicer\n ```\n\nYou should then change the values of the following Python settings in Binary Ninja to point to inside your development folder's virtual environment:\n\n- `python.binaryOverride`: Set this to the path of the Python interpreter inside your development virtual environment, e.g. `$DEVELOPMENT_FOLDER/rust_string_slicer/.venv/bin/python/`\n- `python.virtualenv`: Set this to the path of the `site-packages` directory inside your development virtual environment, e.g. `$DEVELOPMENT_FOLDER/rust_string_slicer/.venv/lib/python3.11/site-packages`\n\n### Changelog\n## [1.1.1](https://github.com/cxiao/rust_string_slicer/compare/v1.1.0...v1.1.1) (2026-01-11)\n\n\n### Bug Fixes\n\n* Fix broken type existence check after rename of RustStringSlice to &str ([28fec02](https://github.com/cxiao/rust_string_slicer/commit/28fec020f1d27aa44ac264950c61cfa8239713bd))", + "minimumbinaryninjaversion": 3814, + "name": "Rust String Slicer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/17a000f0-1dc0-49d2-bf1c-6cf118f786b9/versions/dbd73ba2-e6b7-43a4-ba6b-8065ab7d5296/platforms/3073/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/17a000f0-1dc0-49d2-bf1c-6cf118f786b9/versions/dbd73ba2-e6b7-43a4-ba6b-8065ab7d5296/platforms/3073/download?notrack=1", + "path": "cxiao_rust_string_slicer", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 24, + "updated_at": "2026-01-11 22:46:23+00:00" + }, + "projectUrl": "https://github.com/cxiao/rust_string_slicer", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.1.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Saagar Jha", + "dependencies": "", + "description": "Demangles Swift functions.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1748819047, + "license": { + "name": "MIT", + "text": "Copyright (c) 2023 Saagar Jha\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "\n\n### Changelog\n1.2\r\nAdd comments only if function name changes\r\nRemove irrelevant types in plugin metadata\r\nFormat code\r\nUse binaryninja.log to access log_info\r\nWrap function name getter in a try/except", + "minimumbinaryninjaversion": 3164, + "name": "Swift Demangler", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/5b2d1a34-04c8-4f12-b3b2-d7debc78765b/versions/fcdcc129-b1c4-422e-9840-48a27231b898/platforms/2440/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/5b2d1a34-04c8-4f12-b3b2-d7debc78765b/versions/fcdcc129-b1c4-422e-9840-48a27231b898/platforms/2440/download?notrack=1", + "path": "saagarjha_binjaswiftdemangler", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 16, + "updated_at": "2025-06-01 23:04:07+00:00" + }, + "projectUrl": "https://github.com/saagarjha/binja-swift-demangler", + "subdir": "", + "type": [ + "architecture", + "binaryview", + "core", + "helper", + "ui" + ], + "version": "1.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Xusheng", + "dependencies": "", + "description": "Add information recovered by tool GoReSym into the binary view", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1721287720, + "license": { + "name": "MIT", + "text": "Copyright (c) \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# binja-GoReSym\n\nBinary Ninja plugin to load the json result generated by the [GoReSym](https://github.com/mandiant/GoReSym) project\n\n## Usage\n\n- Download the `GoReSym` tool from https://github.com/mandiant/GoReSym/releases\n- Run `GoReSym` on a Golang binary and save the json result into a file\n- In Binary Ninja, open the Golang binary\n- Right click, select `Plugins` -> `Apply GoReSym Info`\n- In the dialog that pops up, select the json file generated above\n- Observe function names are applied\n", + "minimumbinaryninjaversion": 3164, + "name": "Add GoReSym Info", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/7f9d1a62-d061-4f6e-b111-b7083ddea81f/versions/335853e0-fa05-4371-a8e7-cee12fe5ace9/platforms/1465/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/7f9d1a62-d061-4f6e-b111-b7083ddea81f/versions/335853e0-fa05-4371-a8e7-cee12fe5ace9/platforms/1465/download?notrack=1", + "path": "xusheng6_binjaGoReSym", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2024-07-18 07:28:40+00:00" + }, + "projectUrl": "https://github.com/xusheng6/binja-GoReSym", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Xusheng", + "dependencies": "", + "description": "Add xref from caller to callee based on XFG hashes", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1686463325, + "license": { + "name": "MIT", + "text": "Copyright (c) \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# add-xfg-xref\nA Binary Ninja plugin to add xref from caller to callee based on XFG hashes\n", + "minimumbinaryninjaversion": 3164, + "name": "Add XFG Xref", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/941ad4c1-c178-4089-a49f-e2f4a3074292/versions/03944b57-4eb3-4b3e-8339-07aa075db41e/platforms/1471/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/941ad4c1-c178-4089-a49f-e2f4a3074292/versions/03944b57-4eb3-4b3e-8339-07aa075db41e/platforms/1471/download?notrack=1", + "path": "xusheng6_addxfgxref", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 3, + "updated_at": "2023-06-11 06:02:05+00:00" + }, + "projectUrl": "https://github.com/xusheng6/add-xfg-xref", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Cindy Xiao", + "dependencies": "pyparsing>=3.0.0\n", + "description": "An extremely experimental Binary Ninja importer for the type layout information emitted by the -Zprint-type-sizes flag of the Rust compiler.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1682576567, + "license": { + "name": "MIT", + "text": "Copyright (c) 2023 Cindy Xiao\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Binary Ninja Rust Type Layout Helper Plugin \ud83e\udd80\n\nAn extremely experimental Binary Ninja importer for the type layout information emitted by the [`-Zprint-type-sizes` flag](https://nnethercote.github.io/perf-book/type-sizes.html) of the Rust compiler.\n\nThis plugin is meant to help reverse engineers with the following:\n- Getting a sense of how, in general, Rust data structures are laid out in memory.\n- Getting more comfortable with certain core data structures which appear in Rust binaries.\n\n![A screenshot of Binary Ninja's Types view in the sidebar, showing the imported definitions and layouts of several Rust types from `std::sys::windows`.](images/std-sys-windows-types-border.png)\n\n## How to use this plugin\n\nCompile some Rust code with the following options:\n\nMacOS / Linux:\n\n```sh\ncargo clean\nRUSTFLAGS=-Zprint-type-sizes cargo +nightly build -j 1 > type-sizes.txt\n```\n\nWindows (Powershell):\n\n```powershell\ncargo clean\n$env:RUSTFLAGS=\"-Zprint-type-sizes\"; cargo +nightly build -j 1 > type-sizes.txt\n```\n\nThe following are all necessary for this to work:\n- `cargo clean` is required before you do the build, i.e. this needs to be a completely fresh build. This is required to avoid missing information in the output.\n- `-Zprint-type-sizes` in the `RUSTFLAGS` passed to rustc. This flag is what actually triggers `rustc` to produce the type information.\n- `+nightly` passed to cargo, as the `print-type-sizes` flag is only supported on nightly toolchain builds.\n- `-j 1` to avoid shuffled lines in the output.\n\nYou should see output like this in the generated `type-sizes.txt` file:\n\n```\nprint-type-size type: `core::num::dec2flt::decimal::Decimal`: 784 bytes, alignment: 8 bytes\nprint-type-size field `.digits`: 768 bytes\nprint-type-size field `.num_digits`: 8 bytes\nprint-type-size field `.decimal_point`: 4 bytes\nprint-type-size field `.truncated`: 1 bytes\nprint-type-size end padding: 3 bytes\nprint-type-size type: `std::result::Result`: 616 bytes, alignment: 8 bytes\nprint-type-size variant `Ok`: 616 bytes\nprint-type-size field `.0`: 616 bytes\nprint-type-size variant `Err`: 8 bytes\nprint-type-size field `.0`: 8 bytes\nprint-type-size type: `std::sys::windows::fs::ReadDir`: 616 bytes, alignment: 8 bytes\nprint-type-size field `.handle`: 8 bytes\nprint-type-size field `.root`: 8 bytes\nprint-type-size field `.first`: 596 bytes\nprint-type-size end padding: 4 bytes\nprint-type-size type: `std::option::Option>`: 608 bytes, alignment: 8 bytes\nprint-type-size discriminant: 8 bytes\nprint-type-size variant `Some`: 600 bytes\nprint-type-size field `.0`: 600 bytes\nprint-type-size variant `None`: 0 bytes\n[...]\n```\n\nYou can now use the _Plugins > Rust Type Layout Helper - Load File..._ command to import the contents of this file into Binary Ninja. The following types in Binary Ninja wil be created from the types shown in the example above:\n\n```c\nstruct core::num::dec2flt::decimal::Decimal __packed\n{\n char .digits[0x300];\n int64_t .num_digits;\n int32_t .decimal_point;\n char .truncated;\n char _padding[0x3];\n};\n\nstruct std::result::Result __packed\n{\n union __packed\n {\n struct std::result::Result::Ok Ok;\n struct std::result::Result::Err Err;\n } std::result::Result::variants;\n};\n\nstruct std::result::Result::Err __packed\n{\n int64_t .0;\n};\n\nstruct std::result::Result::Ok __packed\n{\n char .0[0x268];\n};\n\nstruct std::sys::windows::fs::ReadDir __packed\n{\n int64_t .handle;\n int64_t .root;\n char .first[0x254];\n int32_t _padding;\n};\n\nstruct std::option::Option> __packed\n{\n enum std::option::Option>::discriminant discriminant;\n union __packed\n {\n struct std::option::Option>::Some Some;\n struct std::option::Option>::None None;\n } std::option::Option>::variants;\n};\n\nstruct std::option::Option>::None __packed\n{\n};\n\nstruct std::option::Option>::Some __packed\n{\n char .0[0x258];\n};\n\nenum std::option::Option>::discriminant : uint64_t\n{\n Some = 0xffffffffffffffff,\n None = 0xffffffffffffffff\n};\n```\n\n## Caveats and future work\n\nThere are some caveats to using this:\n- The layout of data types is not stable, and can change between compilations!\n- Only the nightly builds of rustc supports the `print-type-sizes` flag.\n- Binary Ninja's support for working with unions in the decompilation is currently quite poor (see [Vector35/binaryninja-api#1013](https://github.com/Vector35/binaryninja-api/issues/1013), [Vector35/binaryninja-api#4218](https://github.com/Vector35/binaryninja-api/issues/4218)). This may make it difficult to work with the generated `variants` unions, such as `std::option::Option>::variants` in the example above.\n- When importing sum types (i.e. Rust enums), the discriminant value used to represent each variant in the sum type does not necessarily match the ordering of those variant in the type layout information, i.e. the first variant is not necessarily discriminant value 0, etc. The information emitted by rustc's `print-type-sizes` flag also does not include the discriminant value for each variant. Therefore, all variants are assigned a discriminant value of -1. To determine the actual determinant value, it is up to the user to reverse the code where the sum type is used.\n\nIn the future it would be nice to:\n- Add scripts / plugins to import the type information into IDA and Ghidra.\n- Use a Rust compiler plugin to emit better type information than we get from `-Zprint-type-sizes`? Maybe a combination of the information we get from `-Zprint-type-sizes` and `#[rustc_layout(...)]`. It would also be nice to emit the type information in a format which is slightly easier to parse (e.g. JSON).\n\n## Installation\n\nThis plugin can be installed via either:\n\n1) Searching for the _Rust Type Layout Helper_ plugin in Binary Ninja's built-in plugin manager (_Plugins > Manage Plugins_). _This is the recommended method._\n\n2) Cloning this repository into your user plugins folder.\n - The [location of the user plugins folder will vary depending on the platform Binary Ninja is installed on](https://docs.binary.ninja/guide/index.html#user-folder). The easiest way to find the location of the folder is via the _Plugins > Open Plugin Folder..._ command.\n - If you are performing an installation via this method, you must also install this plugin's Python dependencies manually. This can be done by either:\n - Running the _Install python3 module..._ command (via the Command Palette), and pasting the contents of [`requirements.txt`](requirements.txt) in this repository into the dialog window.\n - Running `pip install -r requirements.txt` in the Python environment used by Binary Ninja.\n\nThis plugin requires Python >= 3.7, and Binary Ninja version >= 3.2.3814.\n\n## Development\n\n### Setting up a development environment\n\nTo set up a development environment, including setting up a Python virtual environment:\n\n```\npython -m venv .venv && . .venv/bin/activate\npip install -r requirements.txt\npip install -r dev-requirements.txt\npython $PATH_TO_BINARY_NINJA_INSTALLATION/scripts/install_api.py\n```\n\nFor formatting, linting, and running unit tests locally, install [Nox](https://nox.thea.codes/en/stable/tutorial.html), then:\n\n```\nnox\n```\n\nYou can also invoke each task separately; see [noxfile.py](noxfile.py) for more details on available tasks:\n\n```\nnox -s format\nnox -s lint\nnox -s test\n```\n\nLinting and unit testing (both against multiple Python versions) are also set up in CI on [GitHub Actions](.github/workflows/ci.yml).\n\n### Testing local versions of the plugin\n\nTo test the plugin locally in your own Binary Ninja installation during development, create a symbolic link between your development folder, and the [Binary Ninja user plugins folder](https://docs.binary.ninja/guide/index.html#user-folder), so that your development folder is loaded by Binary Ninja on startup as a plugin.\n\n- MacOS:\n\n ```sh\n ln -s --relative . ~/Library/Application\\ Support/Binary\\ Ninja/plugins/rust_type_layout_helper\n ```\n\n- Linux:\n\n ```sh\n ln -s --relative . ~/.binaryninja/plugins/rust_type_layout_helper\n ```\n\n- Windows (Powershell):\n ```powershell\n New-Item -ItemType Junction -Value . -Path \"$env:APPDATA\\Binary Ninja\\plugins\\rust_type_layout_helper\"\n ```\n\nYou should then change the values of the following Python settings in Binary Ninja to point to inside your development folder's virtual environment:\n\n- `python.binaryOverride`: Set this to the path of the Python interpreter inside your development virtual environment, e.g. `$DEVELOPMENT_FOLDER/rust_type_layout_helper/.venv/bin/python/`\n- `python.virtualenv`: Set this to the path of the `site-packages` directory inside your development virtual environment, e.g. `$DEVELOPMENT_FOLDER/rust_type_layout_helper/.venv/lib/python3.11/site-packages`\n\n## Acknowledgements and resources\n\nThe compilation instructions for emitting type information are taken from the instructions in the [`top-type-sizes` crate, by Paul Loyd](https://github.com/loyd/top-type-sizes).", + "minimumbinaryninjaversion": 3814, + "name": "Rust Type Layout Helper", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/1e3436b3-6230-43c4-91ee-22393e48dc91/versions/24f0c999-84b5-4e33-8d23-88fb231891a8/platforms/1477/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/1e3436b3-6230-43c4-91ee-22393e48dc91/versions/24f0c999-84b5-4e33-8d23-88fb231891a8/platforms/1477/download?notrack=1", + "path": "cxiao_rust_type_layout_helper_bn", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 38, + "updated_at": "2023-04-27 06:22:47+00:00" + }, + "projectUrl": "https://github.com/cxiao/rust_type_layout_helper_bn", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Jon Palmisciano", + "dependencies": "", + "description": "A notepad for taking notes inside Binary Ninja.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1618844480, + "license": { + "name": "MIT", + "text": "Copyright (c) 2021 Jon Palmisciano\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Binary Ninja Notepad\n\n> A notepad, for Binary Ninja!\n\n![Preview Image](preview.png)\n\n> Screenshot taken with [Screenshot Ninja](https://github.com/jonpalmisc/screenshot_ninja).\n\nThis plugin is still in the early stages, but is functional enough for an\ninitial release. For a list of known bugs and planned features, see the issues\npage on GitHub.\n\n**Bug reports and feature requests are welcome!** Please file an issue on\nGitHub if you run into any difficulties or would like to see a feature added.\n\n## License\n\nCopyright 2021 Jon Palmisciano. Licensed under the MIT License. See LICENSE.txt\nfor additional details.\n", + "minimumbinaryninjaversion": 1200, + "name": "Notepad", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/00037bca-de65-401c-820b-67fcfb5622c4/versions/90569ff8-052f-40fe-a089-14840d4b3ca9/platforms/1484/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/00037bca-de65-401c-820b-67fcfb5622c4/versions/90569ff8-052f-40fe-a089-14840d4b3ca9/platforms/1484/download?notrack=1", + "path": "jonpalmisc_bnnotepad", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 10, + "updated_at": "2021-04-19 15:01:20+00:00" + }, + "projectUrl": "https://github.com/jonpalmisc/bn-notepad", + "subdir": "", + "type": [], + "version": "0.3.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Nj\u00f6rd", + "dependencies": "xdis\npygments", + "description": "Python bytecode (.pyc) support for Binary Ninja", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1709499228, + "license": { + "name": "MIT", + "text": "Copyright 2024 Nj\u00f6rd\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "### BNPyc\n\n## Binary ninja plugin for python bytecode (pyc) disassembly and analysis.\n\nPython versions from 3.0 to 3.10 are supported!\n> IL Lifting is not implemented yet, as a result ILs are not available.\n\n## Installation\n\nClone this repository into BinaryNinja plugin folder and install requirements with pip : \n\n```shell\ncd BNPyc/\npython3 -m pip install -r requirements.txt\n```\n\n## Usage\n\nChoose any `.pyc` file and open it with binary ninja.\n\n![](images/pycview1.png)\nExample with a simple for loop\n\n## Features\n\n- Recursive functions detections and disassembly\n- Branchs annotations\n- Comparisons annotations\n- Inlined `co_consts` `co_names` `co_varnames`\n- Objects mapping\n", + "minimumbinaryninjaversion": 2170, + "name": "Python bytecode", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/518e4eb3-d5df-4ab2-aa18-9efe256a8b2d/versions/24add93d-7fb8-459c-b399-75f78c280550/platforms/1489/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/518e4eb3-d5df-4ab2-aa18-9efe256a8b2d/versions/24add93d-7fb8-459c-b399-75f78c280550/platforms/1489/download?notrack=1", + "path": "Njord0_BNPyc", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 31, + "updated_at": "2024-03-03 20:53:48+00:00" + }, + "projectUrl": "https://github.com/Njord0/BNPyc", + "subdir": "", + "type": [ + "architecture", + "binaryview" + ], + "version": "1.0.4", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "rikodot", + "dependencies": "requests\nbs4", + "description": "Find and create signatures", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1723528236, + "license": { + "name": "MIT", + "text": "MIT License\n\nCopyright (c) 2023 rikodot\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin allows to scan analyzed binaries for signatures and their creation. Supports both normal signatures (e.g. 49 28 15 ? ? 30) and commonly used code signatures (e.g. \"\\x49\\x28\\x15\\x00\\x00\\x30\", \"xxx??x\").\n\nAs title suggests, it is coded in C++ and utilizes Binary Ninja's native API. For this reason this plugin serves just as a loader for the [actual plugin](https://github.com/rikodot/binja_native_sigscan).\n\n![preview](https://github.com/rikodot/binja_native_sigscan/blob/main/preview.gif)", + "minimumbinaryninjaversion": 0, + "name": "Native SigScan", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/ecbd16ab-f479-4b2c-a931-b3db5844a0b6/versions/dd545b06-fbb7-48b4-80fc-8449906faf46/platforms/1499/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/ecbd16ab-f479-4b2c-a931-b3db5844a0b6/versions/dd545b06-fbb7-48b4-80fc-8449906faf46/platforms/1499/download?notrack=1", + "path": "rikodot_binja_native_sigscan_loader", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2024-08-13 05:50:36+00:00" + }, + "projectUrl": "https://github.com/rikodot/binja_native_sigscan_loader", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.9", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "BinSync Team", + "dependencies": "binsync>=5.11.2", + "description": "Adds support for cross-decompiler collab in the BinSync supported decompilers.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1769794861, + "license": { + "name": "BSD 2-clause", + "text": "" + }, + "longdescription": "\n## BinSync\n\n

\n \"BinSync\n

\n\nBinSync is a decompiler collaboration tool built on the Git versioning system to enable fined-grained reverse\nengineering collaboration regardless of decompiler. \nBinSync is supported in IDA, Binary Ninja, Ghidra, and angr-management.\n\n![Demo](https://github.com/binsync/binsync/blob/main/assets/images/binja_sync.gif?raw=true)\n\n## Overview \nAt a high level, BinSync works by tracking changes to important reverse engineering artifacts \n(functions, comments, types) while you reverse engineer a binary. These changes are then committed to a Git repository.\nThe data is stored in TOMLS and is therefore human-readable and diffable. The data stored, such as types, are \nconverted to C so they can be transferred between decompilers. \nAn example repo of this format can be found at [https://github.com/binsync/example.bsproj](https://github.com/binsync/example.bsproj). \n\nBinSync provides a GUI for you to view changes made by you and other users and synchronize them.\nBinSync also has other extra features for integrating AI reverse engineering assistants.\n\n## Installation & Usage\nBinSync can be installed directly from within your decompiler's plugin manager. After that initial installation, you\ncan verify that your installation works by following our quickstart guide to join our example project.\nThe 5-minute quickstart guide can be found [here](https://docs.binsync.net/quickstart/joining-project), and is \nalways the most up-to-date way to get started with BinSync.\n\n## Credits\nBinSync is built by [mahaloz](https://github.com/mahaloz), the [angr](https://angr.io) team, and the [SEFCOM](https://sefcom.asu.edu) research lab. It's also due\nin large part to its use by the [Shellphish](https://shellphish.net) hacking team. The BinSync Team can be listed as follows:\n- Zion Leonahenahe Basque (mahaloz)\n- The angr team\n- The SEFCOM Lab at Arizona State University\n\nFor inquiries, contact the project lead, Zion Leonahenahe Basque, aka, \"mahaloz\" at binsync@mahaloz.re. \n\n### Changelog\n## What's Changed\n* bump IDA plugin version to 5.11.1 by @williballenthin in https://github.com/binsync/binsync/pull/499\n\n## New Contributors\n* @williballenthin made their first contribution in https://github.com/binsync/binsync/pull/499\n\n**Full Changelog**: https://github.com/binsync/binsync/compare/v5.11.1...v5.11.2", + "minimumbinaryninjaversion": 1200, + "name": "BinSync", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/6a391f63-499c-4bfb-b920-3c538d296ae0/versions/fba1b0b1-3c16-49e1-a06c-e9382b44796b/platforms/3127/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/6a391f63-499c-4bfb-b920-3c538d296ae0/versions/fba1b0b1-3c16-49e1-a06c-e9382b44796b/platforms/3127/download?notrack=1", + "path": "binsync_binsync", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 681, + "updated_at": "2026-01-30 17:41:01+00:00" + }, + "projectUrl": "https://github.com/binsync/binsync", + "subdir": "binsync/stub_files", + "type": [ + "sync" + ], + "version": "5.11.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "lockbox", + "dependencies": "SQLAlchemy>=2.0.0\n", + "description": "Playdate Console RE utilities", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1677633266, + "license": { + "name": "MIT", + "text": "Copyright (c) 2023 lockbox\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# pd-ninja\nAuthor: **lockbox**\n\n_Playdate RE Utilities and Loader_\n\n## Description:\nRequires installation of the Playdate SDK which is obtainable [here](https://play.date/dev/). This is not affiliated or endorsed by `Panic Inc.` in any way.\n\nThis plugin does a lot of the tedious tasks and exposes a custom binary view when loading memory dumps from the playdate console.\n\nFeatures:\n\n- can handle user, kernel or full dumps\n- imports type library from `/C_API/pd_api.h`\n- discovers (user) `.text` and `.data` boundaries (kernel ones are a mess)\n- applies symbols from `/bin/symbols.db`\n- automatically apply typedefs to api structs / functions\n\n\n## On the Roadmap\n- Define the TLS sections in SRAM\n- Add user friendly way to add SRAM dump to bndb\n- Add lua container types\n- Add a check for \"functions\" in `Symbols.db` being properly\n - if not aligned, then define it as a data symbol\n- Provide types for static data symbols (gfx + sound + sprites etc.)\n- Find decent heuristics to locate kernel data / code boundaries\n- Signature libraries\n - need to fiddle with the FreeRTOS signatures some more to get more reliable\n - need to package the `stm32f7xx` HAL and `lua` (minilua) libraries nicely\n - probably have to add them as a downloadable artifact from a github release\n- Adding HAL peripheral memory maps, not really useful but for ocd completeness lol\n\n### Obtaining the SDK\n\nA specific version of the SDK can be obtained from:\n\n`https://download.panic.com/playdate_sdk/Windows/PlaydateSDK-.exe`\n\n\n### Notes\n- why is there a bunch of: `Attempting to add function not backed by file: `?\n - binary ninja assumes a lot of things are code if its coming from something\n it determined was \"valid\" code, so there's a TON of false positives especially\n when half the instruction set is valid ascii\n- The only way to obtain firmware is from reading memory of a device\n- Any process can read user space which is from `0x08050000` to `0x080FFFFF`\n- The underlying OS is FreeRTOS with MPU enabled. Use [this](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-43997) (or similar) to priv esc\n- why are _so_ many of the strings not automatically defined?\n - idk man its a data section, ghidra automagically does it but i felt like making a binary ninja plugin\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 3164\n\n## Required Dependencies\n\nThe following dependencies are required for this plugin:\n\n * pip - SQLAlchemy>=2.0.1\n * apt - clang\n * installers - \n * other - \n\n\n## License\n\nThis plugin is released under an [MIT license](./license).\n\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 3164, + "name": "pd-ninja", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/dc920aab-3324-406d-8cc1-b198b90bdf72/versions/3dbbbad3-24fc-4bb6-8c7a-d6d14b022cb6/platforms/1508/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/dc920aab-3324-406d-8cc1-b198b90bdf72/versions/3dbbbad3-24fc-4bb6-8c7a-d6d14b022cb6/platforms/1508/download?notrack=1", + "path": "lockbox_pdninja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2023-03-01 01:14:26+00:00" + }, + "projectUrl": "https://github.com/lockbox/pd-ninja", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "dayzerosec", + "dependencies": "", + "description": "Loader for AMD-SP or PSP firmware binaries.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1674976599, + "license": { + "name": "MIT", + "text": "Copyright 2023 dayzerosec\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# AMD-SP/PSP Loader \n\nAuthor: **SpecterDev**\n\n_Loader for AMD-SP or PSP firmware binaries._\n\n![](https://i.imgur.com/MH9C1hu.png)\n\n## Description\n\nBinary Ninja loader for AMD Secure Processor (SP) / Platform Security Processor (PSP) firmware binaries. It will try to load AGESA Bootloader (ABL) and Bootloader blobs and will setup the correct load addresses.\n\nThe ABL loader will also optionally annotate syscalls using the dictionary in `./data/syscalls.json`.\n\n## Usage\n\nThis loader is intended to be used with binaries extracted via [PSPTool](https://github.com/PSPReverse/PSPTool), as this loader will **not extract firmware from UEFI or perform any decompression before loading**.\n\nSimply load an `ABL*` or `PSP_FW_BOOTLOADER_*` binary to use the loader. Your view name on the top left of the disassembly pane should have an `AMD-SP` prefix. If your particular firmware blob doesn't load and/or loads at an incorrect address, please file an issue.\n\n## Future Work / Places for Contribution\n\n- [ ] Currently load addresses are static, perhaps this should be reworked to dynamically determine it via parsing entrypoint instructions?\n- [ ] Add loaders for other firmwares\n - [ ] SMU (xtensa)\n - [ ] Trusted OS (tOS)\n - [ ] Boot time trustlets\n- [ ] Reverse and add more syscalls to the annotation dictionary\n- [ ] Improve annotations to fix-up syscalls in HLIL\n\n## Notes\n\n- The loaders make some assumptions on the load address and such, so its possible a particular binary differs and won't load properly (open an issue).\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n * release - 3.2.3814\n\n## License\n\nThis plugin is released under a MIT license.\n", + "minimumbinaryninjaversion": 3814, + "name": "AMD-SP/PSP Loader", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/31e1efa7-04d6-4292-a0d4-c4d485d84ce8/versions/a1c410b8-5526-4eb1-8f74-3f23ea3c5664/platforms/1514/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/31e1efa7-04d6-4292-a0d4-c4d485d84ce8/versions/a1c410b8-5526-4eb1-8f74-3f23ea3c5664/platforms/1514/download?notrack=1", + "path": "dayzerosec_AMDSPLoader", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 41, + "updated_at": "2023-01-29 07:16:39+00:00" + }, + "projectUrl": "https://github.com/dayzerosec/AMD-SP-Loader", + "subdir": "", + "type": [ + "binaryview" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Zion Basque (@mahaloz)", + "dependencies": "", + "description": "Adds support for Binary Ninja decompilation in your debugger, curently only supports GDB", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1762899468, + "license": { + "name": "BSD 2-clause", + "text": "" + }, + "longdescription": "decomp2dbg will host the decompilation and symbols present in your Binary Ninja View over an XMLRPC server which can bee hooked from within your debugger. As you change you decompilation, so will the debuggers view.\n\n### Changelog\n## What's Changed\r\n* Allow decompiler servers to return the binary's path by @k4lizen in https://github.com/mahaloz/decomp2dbg/pull/119\r\n* Update server template to match actual types by @k4lizen in https://github.com/mahaloz/decomp2dbg/pull/120\r\n* fix gradle build by @mahaloz in https://github.com/mahaloz/decomp2dbg/pull/121\r\n\r\n## New Contributors\r\n* @k4lizen made their first contribution in https://github.com/mahaloz/decomp2dbg/pull/119\r\n\r\n**Full Changelog**: https://github.com/mahaloz/decomp2dbg/compare/v3.10.2...v3.11.0", + "minimumbinaryninjaversion": 1200, + "name": "decomp2dbg", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/812ccaff-b618-4d98-acdf-0bf00708c2c5/versions/ef188b5c-41f0-4171-8ace-7e6d9a192449/platforms/2809/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/812ccaff-b618-4d98-acdf-0bf00708c2c5/versions/ef188b5c-41f0-4171-8ace-7e6d9a192449/platforms/2809/download?notrack=1", + "path": "mahaloz_decomp2dbg", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 770, + "updated_at": "2025-11-11 22:17:48+00:00" + }, + "projectUrl": "https://github.com/mahaloz/decomp2dbg", + "subdir": "decompilers/d2d_binja", + "type": [ + "core" + ], + "version": "3.11.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Cindy Xiao", + "dependencies": "httpx>=0.23.0", + "description": "Plugin for interacting with the OALabs HashDB service.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1727851784, + "license": { + "name": "3-Clause BSD", + "text": "BSD 3-Clause License\n\nCopyright (c) 2023, Cindy Xiao\nCopyright (c) 2021, Vector 35\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + }, + "longdescription": "# #\ufe0f\u20e3 Binary Ninja HashDB Plugin\n\n[HashDB](https://github.com/OALabs/hashdb) is a community-sourced library of hashing algorithms used in malware. This plugin queries the [OALabs HashDB Lookup Service](https://hashdb.openanalysis.net/) for hash values which appear in the currently analyzed file, fetches a list of strings which match those hashes, and collects the string values into an enum type definition. The defined enum type can then be applied to the binary for further analysis.\n\n## Usage\n\n### Looking up a hash (_HashDB - Hash Lookup_)\n\nThe _HashDB - Hash Lookup_ command looks up the hash value highlighted by the cursor.\n\n![](images/hashlookup-screenshot-border.png)\n\n![](images/hashlookup-result-screenshot-border.png)\n\n### Hunting for the correct hash algorithm (_HashDB - Hunt_)\n\nThe _HashDB - Hunt_ command attempts to identify the hash algorithm which was used to generate a particular hash value. The identified algorithm is set as the default algorithm for future hash lookups in this binary, in the _HashDB > HashDB Hash Algorithm_ setting.\n\n![](images/hash-hunt-multiple-options-screenshot-border.png)\n\nIt is the user's responsibility to ensure that the identified hash algorithm is correct! The list of all hash algorithms known to the OALabs HashDB lookup service is maintained at the [OALabs/hashdb repository, under the `algorithms` directory](https://github.com/OALabs/hashdb/tree/main/algorithms); a Python implementation of each hash algorithm is inside each listed file, and can be checked against the implementation of the API hashing function in the binary being analyzed.\n\n### Viewing and applying found hashes\n\nFound hashes are added as enum entries under a new enum type named `hashdb_strings_{NAME_OF_ALGORITHM}`. The names and values of the found hashes can be viewed in the _Types_ menu.\n\n![](images/hash-created-enum-screenshot-border.png)\n\nThe enum type can then be applied to variables in the database.\n\n![](images/hash-created-enum-applied-function-arg-screenshot-border.png)\n\nIf you are using Binary Ninja >= 3.3, you can also apply the resolved hash names using the new _Select Enum_ dialog (accessible by pressing the `M` key, or through _Display as_ > _Enum Member_ in the context menu).\n\n![](images/hash-enum-selection-dialog-screenshot-border.png)\n\nThe name prefix used in the enum type (by default `hashdb_strings`) can be changed in Binary Ninja's settings, under _HashDB > HashDB Enum Name_.\n\n### Looking up multiple hashes (_HashDB - Multiple Hash Lookup_)\n\nMultiple hashes can be selected and looked up at once using the _HashDB - Multiple Hash Lookup_ command.\n\n![](images/multiple-hash-lookup-screenshot-border.png)\n\nThe resolved hashes can then be applied by setting the selected variables to the created enum type.\n\n![](images/multiple-hash-lookup-enum-type-applied-screenshot-border.png)\n\n### Settings\n\nThe settings for this plugin can be changed from Binary Ninja's Settings interface (_Edit > Preferences > Settings_). The settings list can be filtered to show only the HashDB plugin's settings by searching `HashDB` in the Settings search box.\n\nThe following settings are applied globally:\n\n- _HashDB API URL_ (`hashdb.url`). If you wish to use a different HashDB instance than the default OALabs HashDB, such as an internally hosted version, you can change this setting to point at your desired instance.\n- _HashDB Enum Name_ (`hashdb.enum_name`)\n\nThe following settings are specific to an individual binary. They are saved in the analysis database (`.bndb` file) for that binary, and will be restored the next time you open the analysis database.\n\n- _HashDB Hash Algorithm_ (`hashdb.algorithm`)\n- _HashDB Hash Algorithm Data Type_ (`hashdb.algorithm_type`)\n\n![](images/settings-screenshot-border.png)\n\n### Keyboard shortcuts\n\nKeyboard shortcuts can be set for this plugin's commands from Binary Ninja's Keybindings interface (_Edit > Preferences > Keybindings_). The command list can be filtered to show only the HashDB plugin's commands by searching `HashDB` in the Keybindings search box.\n\nThe plugin currently does not ship with any keyboard shortcuts set by default.\n\n## Installation\n\nThis plugin can be installed via either:\n\n1) Searching for the _HashDB_ plugin in Binary Ninja's built-in plugin manager (_Plugins > Manage Plugins_). _This is the recommended method._\n\n2) Cloning this repository into your user plugins folder.\n - The [location of the user plugins folder will vary depending on the platform Binary Ninja is installed on](https://docs.binary.ninja/guide/index.html#user-folder). The easiest way to find the location of the folder is via the _Plugins > Open Plugin Folder..._ command.\n - If you are performing an installation via this method, you must also install this plugin's Python dependencies manually. This can be done by either:\n - Running the _Install python3 module..._ command (via the Command Palette), and pasting the contents of [`requirements.txt`](requirements.txt) in this repository into the dialog window.\n - Running `pip install -r requirements.txt` in the Python environment used by Binary Ninja.\n\nThis plugin requires Python >= 3.7, and Binary Ninja version >= 2.4.2846.\n\n## License\n\nThis plugin is released under a 3-Clause BSD license.\n\nThis plugin is a derivative work of the [IDA Plugin](https://github.com/OALabs/hashdb-ida/) from [OALabs](https://oalabs.openanalysis.net/) for connecting to their [HashDB service](https://hashdb.openanalysis.net/), and is forked from Vector 35's initial implementation at [psifertex/hashdb-bn](https://github.com/psifertex/hashdb-bn).", + "minimumbinaryninjaversion": 2846, + "name": "HashDB", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/b361a98c-f3b9-4399-a42e-35b8e866be51/versions/e44e61ae-931b-426a-85e4-b5675b2f54d5/platforms/1525/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/b361a98c-f3b9-4399-a42e-35b8e866be51/versions/e44e61ae-931b-426a-85e4-b5675b2f54d5/platforms/1525/download?notrack=1", + "path": "cxiao_hashdb_bn", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 20, + "updated_at": "2024-10-02 06:49:44+00:00" + }, + "projectUrl": "https://github.com/cxiao/hashdb_bn", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "1.2.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "elbee", + "dependencies": "", + "description": "Displays char arrays by analyzing their use in functions", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1674077993, + "license": { + "name": "MIT", + "text": "Copyright (c) 2023 Dylan Knoff\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Binary Ninja Char Arrays \nAuthor: **elbee**\n\nSimple plugin that analyzes void variables and loads them as defined character arrays.\n\n## Description:\nBinary Ninja does not assume types to be character arrays and initializes them void. This plugin analyzes the selected function for character arrays and re-declares them as such, eg. (char buf\\[size]). Allows buffers to be shown as is and not as void types for preference purposes.\n![](./images/opentftpd_eg.gif)\n\nIn an attempt to cooperate with other architectures, the majority of checks are done with the medium level intermediate language and disassembly. Tested on CTF challenges from coorporate cyber challenges and https://pwnable.tw/challenge/.\n\nTo operate the plugin simply right click in your pane and select an option. The plugin can also mark newly defined character arrays with additional information in tags and/or comments.\n![](./images/ctf_chal_eg_tags.gif)\n\n## License\n\nThis plugin is released under an [MIT license](./LICENSE).\n", + "minimumbinaryninjaversion": 3164, + "name": "Char Arrays", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/964f8d1b-0eb0-41dd-b79f-d96f0248bb02/versions/a9390ea6-2672-49e9-b0c2-25083af1b23b/platforms/1531/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/964f8d1b-0eb0-41dd-b79f-d96f0248bb02/versions/a9390ea6-2672-49e9-b0c2-25083af1b23b/platforms/1531/download?notrack=1", + "path": "elbeecyber_analyze_char_arrays", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 14, + "updated_at": "2023-01-18 21:39:53+00:00" + }, + "projectUrl": "https://github.com/elbee-cyber/analyze_char_arrays", + "subdir": "", + "type": [ + "binaryview", + "helper" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Jacopo Ferrigno", + "dependencies": "", + "description": "BinaryNinja plugin to parse GoLang binaries and restore some information, like function names and type information", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1753778954, + "license": { + "name": "MIT", + "text": "Copyright 2023 Jacopo Ferrigno\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin will parse a go binary and restore some information like:\n\n- Function names by parsing the `.gopclntab` section in the binary. If there is no section named .gopclntab it will try to search for it.\n- Recover the user defined Go types and de ones defined by the runtime\n- Create the user defined/runtime defined Go types as `Types` in Binary Ninja\n- Rename functions with their original name and organize them in containers\n- Comment the function with the filename from which the function comes\n- Print the list of files in the binary\n\nThe plugin works for all GoLang version from 12 to 124.\n\n### Changelog\nExtensive type recovery, function renaming and organizing", + "minimumbinaryninjaversion": 3946, + "name": "GoLang binary parser", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/e1ba91c1-6ead-494a-a4e8-b745904d8889/versions/63ee8932-7737-45d6-8fd6-f9813ab6dc46/platforms/2533/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/e1ba91c1-6ead-494a-a4e8-b745904d8889/versions/63ee8932-7737-45d6-8fd6-f9813ab6dc46/platforms/2533/download?notrack=1", + "path": "dipusone_golang_pclntab_parser", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 10, + "updated_at": "2025-07-29 08:49:14+00:00" + }, + "projectUrl": "https://github.com/dipusone/golang_pclntab_parser", + "subdir": "", + "type": [ + "ui" + ], + "version": "2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "skr0x1c0", + "dependencies": "ipykernel >= 5.1.4\nqtconsole >= 4.3\nqasync >= 0.23.0\njupyter-client >= 6, != 7.*\nnbformat >= 5.7.0", + "description": "IPython console widget for Binary Ninja", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1670871248, + "license": { + "name": "MIT", + "text": "Copyright (c) 2022 skr0x1c0\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Binja IPython\n\nBinja IPython brings the full features provided by [IPython](https://ipython.org) interactive shell to [Binary Ninja](https://binary.ninja). \n\nhttps://user-images.githubusercontent.com/75971916/207032716-0cfb7e31-fb9e-4e7f-bb8c-e8f77df24bf6.mp4\n\n\n## Why use Binja IPython?\n\n1. Provides features like syntax highlighting, magic commands and embedded figures which are not present in the Binary Ninja inbuilt Python console.\n2. Includes all features of inbuilt Python console like magic variables, auto-completion, history, etc.\n3. Can link the Python interpreter instance inside Binary Ninja to a Jupyter notebook / lab.\n4. Will not freeze the UI while scripts are running.\n5. Running scripts can be interrupted with `Ctrl+C` key combination.\n\n\n## Installation\n\n1. Clone this repository to the plugins directory of your Binary Ninja installation. Example for macOS:\n```shell\ncd ~/Library/Application\\ Support/Binary\\ Ninja/plugins\ngit clone https://github.com/skr0x1c0/ipybinja.git\n```\n\n2. If you have configured Binary Ninja to use a python virtual environment, you will need to activate the virtual environment before continuing.\n\n```shell\nsource ~/.venv_binja/bin/activate\n```\n\n3. Install the required dependencies:\n\n```shell\ncd ipybinja\npip install -r requirements.txt\n```\n\nThat's it! You should now be able to use the IPython console widget in Binary Ninja.\n\n## Usage\n\n1. For a list of additional magic commands provided by the plugin see [this document](./docs/magic_commands.md)\n2. For using Jupyter lab / notebook with Binary Ninja see [this document](./docs/notebook.md)\n\n## Credits\n\nThis plugin is based on [ipyida](https://github.com/eset/ipyida) IDA Pro plugin.\n\n\n## License\n\nThis plugin is released under an [MIT license](./LICENSE).\n", + "minimumbinaryninjaversion": 3164, + "name": "Binja IPython console", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/494b6979-7b68-41f1-b4d3-273a8fbc413c/versions/6d15e0d2-5bdc-400f-ab6d-3c53cac0bb33/platforms/1543/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/494b6979-7b68-41f1-b4d3-273a8fbc413c/versions/6d15e0d2-5bdc-400f-ab6d-3c53cac0bb33/platforms/1543/download?notrack=1", + "path": "skr0x1c0_ipybinja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 15, + "updated_at": "2022-12-12 18:54:08+00:00" + }, + "projectUrl": "https://github.com/skr0x1c0/ipybinja", + "subdir": "", + "type": [ + "binaryview", + "core", + "helper", + "ui" + ], + "version": "0.2.7", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Asher Davila L.", + "dependencies": "", + "description": "Binary Ninja plugin to dump the Pseudo C generated by Binja into a folder.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1674935821, + "license": { + "name": "Apache-2.0", + "text": "Copyright 2022 Asher Davila L.\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\n\thttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + }, + "longdescription": "This Binary Ninja plugin is written in Python 3 and it aims to assist with reverse engineering and vulnerability research. It dumps the Pseudo C representation of a binary, generated by Binja's decompiler, into a specified folder.", + "minimumbinaryninjaversion": 3814, + "name": "Pseudo C Dump", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/438fa37f-691f-4c3c-b13a-bff64d7a89db/versions/2c217698-0458-4b63-a0e4-f9ed463ba078/platforms/1550/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/438fa37f-691f-4c3c-b13a-bff64d7a89db/versions/2c217698-0458-4b63-a0e4-f9ed463ba078/platforms/1550/download?notrack=1", + "path": "AsherDLL_PCDumpbn", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 46, + "updated_at": "2023-01-28 19:57:01+00:00" + }, + "projectUrl": "https://github.com/AsherDLL/PCDump-bn", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Sean Deaton (@WhatTheFuzz)", + "dependencies": "openai", + "description": "Queries OpenAI's GPT3 to determine what a given function does.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1713317541, + "license": { + "name": "MIT", + "text": "Copyright 2022 Sean Deaton (@WhatTheFuzz)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "[![CodeQL](https://github.com/WhatTheFuzz/binaryninja-openai/actions/workflows/codeql.yml/badge.svg)](https://github.com/WhatTheFuzz/binaryninja-openai/actions/workflows/codeql.yml)\n\n# BinaryNinja-OpenAI\n\nIntegrates OpenAI's GPT3 with Binary Ninja via a plugin and currently supports\ntwo actions:\n\n- Queries OpenAI to determine what a given function does (in Pseudo-C and HLIL).\n - The results are logged to Binary Ninja's log to assist with RE.\n- Allows users to rename variables in HLIL using OpenAI.\n - Variable are renamed immediately and the decompiler is reloaded.\n\n## Installation\n\nIf you're installing this as a standalone plugin, you can place (or sym-link)\nthis in Binary Ninja's plugin path. Default paths are detailed on\n[Vector 35's documentation][default-plugin-dir].\n\nThis plugin has been tested on macOS and Linux. It probably works on Windows;\nplease submit a pull request if you've tested it.\n\n### Dependencies\n\n- Python 3.10+\n- `openai` installed with `pip3 install --user openai`\n\n## API Key\n\nThis requires an [API token from OpenAI][token]. The plugin checks for the API\nkey in three ways (in this order).\n\nFirst, it tries to read the key from Binary Ninja's preferences. You can\naccess the entry in Binary Ninja via `Edit > Preferences > Settings > OpenAI`.\nOr, use the hotkey \u2318+, and search for `OpenAI`. You should see customizable\nsettings like so.\n\n![Settings](https://github.com/WhatTheFuzz/binaryninja-openai/blob/main/resources/settings.png?raw=true)\n\nSecond, it checks the environment variable `OPENAI_API_KEY`, which you can set\ninside of Binary Ninja's Python console like so:\n\n```python\nimport os\nos.environ[\"OPENAI_API_KEY\"] = \"INSERT KEY HERE\"\n```\n\nOr you can write it to a file. The file is set in [entry.py][entry] and is a\nparameter to the Agent class. By default it checks for the file\n`~/.openai/api_key.txt`. You can add your API token like so:\n\n```shell\nmkdir ~/.openai\necho -n \"INSERT KEY HERE\" > ~/.openai/api_key.txt\n```\n\nNote that if you have all three set, the plugin defaults to one set in Binary\nNinja. If your API token is invalid, you'll receive the following error:\n\n```python\nopenai.error.AuthenticationError: Incorrect API key provided: .\nYou can find your API key at https://beta.openai.com.\n```\n\n## Usage\n\n### What Does this Function Do?\n\nAfter installation, you can right-click on any function in Binary Ninja and\nselect `Plugins > OpenAI > What Does this Function Do (HLIL/Pseudo-C)?`.\nAlternatively, select a function in Binary Ninja (by clicking on any instruction\nin the function) and use the menu bar options `Plugins > OpenAI > ...`. If your\ncursor has anything else selected other than an instruction inside a function,\n`OpenAI` will not appear as a selection inside the `Plugins` menu. This can\nhappen if you've selected data or instructions that Binary Ninja determined did\nnot belong inside of the function. Additionally, the HLIL options are context\nsensitive; if you're looking at the decompiled results in LLIL, you will not see\nthe HLIL options; this is easily fixed by changing the user view to HLIL\n(Pseudo-C should always be visible).\n\nThe output will appear in Binary Ninja's Log like so:\n\n![The output of running the plugin.](https://github.com/WhatTheFuzz/binaryninja-openai/blob/main/resources/output.png?raw=true)\n\n### Renaming Variables\n\nI feel like half of reverse engineering is figuring out variable names (which\nin-turn assist with program understanding). This plugin is an experimental look\nto see if OpenAI can assist with that. Right click on an instruction where a\nvariable is initialized and select `OpenAI > Rename Variable (HLIL)`. Watch the\nmagic happen. Here's a quick before-and-after.\n\n![Before renaming](https://github.com/WhatTheFuzz/binaryninja-openai/blob/main/resources/rename-before.png?raw=true)\n\n![After renaming](https://github.com/WhatTheFuzz/binaryninja-openai/blob/main/resources/rename-after.png?raw=true)\n\nRenaming variables only works on HLIL instructions that are initializations (ie.\n`HighLevelILVarInit`). You might also want this to support assignments\n(`HighLevelILAssign`), but I did not get great results with this. Most of the\nresponses were just `result`. If your experience is different, please submit a\npull request.\n\n## OpenAI Model\n\nBy default, the plugin uses the `text-davinci-003` model, you can tweak this\ninside Binary Ninja's preferences. You can access these settings as described in\nthe [API Key](#api-key) section. It uses the maximum available number of tokens\nfor each model, as described in [OpenAI's documentation][tokens].\n\n## Known Issues\n\nPlease submit an issue if you find something that isn't working properly.\n\n## License\n\nThis project is licensed under the [MIT license][license].\n\n[default-plugin-dir]:https://docs.binary.ninja/guide/plugins.html\n[token]:https://beta.openai.com/account/api-keys\n[tokens]:https://beta.openai.com/docs/models/gpt-3\n[entry]:./src/entry.py\n[license]:./LICENSE\n", + "minimumbinaryninjaversion": 3200, + "name": "OpenAI GPT3", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/1a9390f0-c9f1-4151-8c79-31ba81722997/versions/d8920160-aa9d-4911-bb0c-4e2015e086ad/platforms/1558/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/1a9390f0-c9f1-4151-8c79-31ba81722997/versions/d8920160-aa9d-4911-bb0c-4e2015e086ad/platforms/1558/download?notrack=1", + "path": "WhatTheFuzz_binaryninjaopenai", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 77, + "updated_at": "2024-04-17 01:32:21+00:00" + }, + "projectUrl": "https://github.com/WhatTheFuzz/binaryninja-openai", + "subdir": "", + "type": [ + "helper" + ], + "version": "3.0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Nick Shipp", + "dependencies": "", + "description": "Script to automatically annotate variadic printf functions", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1678247723, + "license": { + "name": "MIT", + "text": "Copyright (c) 2023 Nick Shipp\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Parses format strings and uses them to apply the correct type and number of arguments to each call site. Supports user-defined printf functions, e.g. for statically linked binaries. Also supports user-defined format specifiers using user types for non-standard printf implementations.", + "minimumbinaryninjaversion": 3814, + "name": "Format String Analysis", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/bf8439e2-6104-4bba-ae74-48e92b08b0f9/versions/47f3d256-2ad4-447a-b3e7-d38ee14f9605/platforms/1562/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/bf8439e2-6104-4bba-ae74-48e92b08b0f9/versions/47f3d256-2ad4-447a-b3e7-d38ee14f9605/platforms/1562/download?notrack=1", + "path": "nshp_binaryninjaprintf", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 1, + "updated_at": "2023-03-08 03:55:23+00:00" + }, + "projectUrl": "https://github.com/nshp/binaryninja-printf", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Trail of Bits", + "dependencies": "pyevmasm\ninterval3\nevm-cfg-builder>=0.2.0", + "description": "A disassembler and lifter for the Ethereum architecture.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1667497034, + "license": { + "name": "AGPL-3.0-only", + "text": "Copyright 2022 Trail of Bits\n\n GNU AFFERO GENERAL PUBLIC LICENSE\n Version 3, 19 November 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. \n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n Preamble\n\n The GNU Affero General Public License is a free, copyleft license for\nsoftware and other kinds of works, specifically designed to ensure\ncooperation with the community in the case of network server software.\n\n The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works. By contrast,\nour General Public Licenses are intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.\n\n When we speak of free software, we are referring to freedom, not\nprice. Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n Developers that use our General Public Licenses protect your rights\nwith two steps: (1) assert copyright on the software, and (2) offer\nyou this License which gives you legal permission to copy, distribute\nand/or modify the software.\n\n A secondary benefit of defending all users' freedom is that\nimprovements made in alternate versions of the program, if they\nreceive widespread use, become available for other developers to\nincorporate. Many developers of free software are heartened and\nencouraged by the resulting cooperation. However, in the case of\nsoftware used on network servers, this result may fail to come about.\nThe GNU General Public License permits making a modified version and\nletting the public access it on a server without ever releasing its\nsource code to the public.\n\n The GNU Affero General Public License is designed specifically to\nensure that, in such cases, the modified source code becomes available\nto the community. It requires the operator of a network server to\nprovide the source code of the modified version running there to the\nusers of that server. Therefore, public use of a modified version, on\na publicly accessible server, gives the public access to the source\ncode of the modified version.\n\n An older license, called the Affero General Public License and\npublished by Affero, was designed to accomplish similar goals. This is\na different license, not a version of the Affero GPL, but Affero has\nreleased a new version of the Affero GPL which permits relicensing under\nthis license.\n\n The precise terms and conditions for copying, distribution and\nmodification follow.\n\n TERMS AND CONDITIONS\n\n 0. Definitions.\n\n \"This License\" refers to version 3 of the GNU Affero General Public License.\n\n \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n \"The Program\" refers to any copyrightable work licensed under this\nLicense. Each licensee is addressed as \"you\". \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy. The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy. Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies. Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License. If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n 1. Source Code.\n\n The \"source code\" for a work means the preferred form of the work\nfor making modifications to it. \"Object code\" means any non-source\nform of a work.\n\n A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form. A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities. However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work. For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n The Corresponding Source for a work in source code form is that\nsame work.\n\n 2. Basic Permissions.\n\n All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met. This License explicitly affirms your unlimited\npermission to run the unmodified Program. The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work. This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force. You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright. Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n Conveying under any other circumstances is permitted solely under\nthe conditions stated below. Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n 4. Conveying Verbatim Copies.\n\n You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n 5. Conveying Modified Source Versions.\n\n You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n a) The work must carry prominent notices stating that you modified\n it, and giving a relevant date.\n\n b) The work must carry prominent notices stating that it is\n released under this License and any conditions added under section\n 7. This requirement modifies the requirement in section 4 to\n \"keep intact all notices\".\n\n c) You must license the entire work, as a whole, under this\n License to anyone who comes into possession of a copy. This\n License will therefore apply, along with any applicable section 7\n additional terms, to the whole of the work, and all its parts,\n regardless of how they are packaged. This License gives no\n permission to license the work in any other way, but it does not\n invalidate such permission if you have separately received it.\n\n d) If the work has interactive user interfaces, each must display\n Appropriate Legal Notices; however, if the Program has interactive\n interfaces that do not display Appropriate Legal Notices, your\n work need not make them do so.\n\n A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit. Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n 6. Conveying Non-Source Forms.\n\n You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n a) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by the\n Corresponding Source fixed on a durable physical medium\n customarily used for software interchange.\n\n b) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by a\n written offer, valid for at least three years and valid for as\n long as you offer spare parts or customer support for that product\n model, to give anyone who possesses the object code either (1) a\n copy of the Corresponding Source for all the software in the\n product that is covered by this License, on a durable physical\n medium customarily used for software interchange, for a price no\n more than your reasonable cost of physically performing this\n conveying of source, or (2) access to copy the\n Corresponding Source from a network server at no charge.\n\n c) Convey individual copies of the object code with a copy of the\n written offer to provide the Corresponding Source. This\n alternative is allowed only occasionally and noncommercially, and\n only if you received the object code with such an offer, in accord\n with subsection 6b.\n\n d) Convey the object code by offering access from a designated\n place (gratis or for a charge), and offer equivalent access to the\n Corresponding Source in the same way through the same place at no\n further charge. You need not require recipients to copy the\n Corresponding Source along with the object code. If the place to\n copy the object code is a network server, the Corresponding Source\n may be on a different server (operated by you or a third party)\n that supports equivalent copying facilities, provided you maintain\n clear directions next to the object code saying where to find the\n Corresponding Source. Regardless of what server hosts the\n Corresponding Source, you remain obligated to ensure that it is\n available for as long as needed to satisfy these requirements.\n\n e) Convey the object code using peer-to-peer transmission, provided\n you inform other peers where the object code and Corresponding\n Source of the work are being offered to the general public at no\n charge under subsection 6d.\n\n A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling. In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage. For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product. A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source. The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information. But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed. Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n 7. Additional Terms.\n\n \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law. If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit. (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.) You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n a) Disclaiming warranty or limiting liability differently from the\n terms of sections 15 and 16 of this License; or\n\n b) Requiring preservation of specified reasonable legal notices or\n author attributions in that material or in the Appropriate Legal\n Notices displayed by works containing it; or\n\n c) Prohibiting misrepresentation of the origin of that material, or\n requiring that modified versions of such material be marked in\n reasonable ways as different from the original version; or\n\n d) Limiting the use for publicity purposes of names of licensors or\n authors of the material; or\n\n e) Declining to grant rights under trademark law for use of some\n trade names, trademarks, or service marks; or\n\n f) Requiring indemnification of licensors and authors of that\n material by anyone who conveys the material (or modified versions of\n it) with contractual assumptions of liability to the recipient, for\n any liability that these contractual assumptions directly impose on\n those licensors and authors.\n\n All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10. If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term. If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n 8. Termination.\n\n You may not propagate or modify a covered work except as expressly\nprovided under this License. Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License. If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n 9. Acceptance Not Required for Having Copies.\n\n You are not required to accept this License in order to receive or\nrun a copy of the Program. Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance. However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work. These actions infringe copyright if you do\nnot accept this License. Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n 10. Automatic Licensing of Downstream Recipients.\n\n Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License. You are not responsible\nfor enforcing compliance by third parties with this License.\n\n An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations. If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License. For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n 11. Patents.\n\n A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based. The\nwork thus licensed is called the contributor's \"contributor version\".\n\n A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version. For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement). To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients. \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License. You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n 12. No Surrender of Others' Freedom.\n\n If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all. For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n 13. Remote Network Interaction; Use with the GNU General Public License.\n\n Notwithstanding any other provision of this License, if you modify the\nProgram, your modified version must prominently offer all users\ninteracting with it remotely through a computer network (if your version\nsupports such interaction) an opportunity to receive the Corresponding\nSource of your version by providing access to the Corresponding Source\nfrom a network server at no charge, through some standard or customary\nmeans of facilitating copying of software. This Corresponding Source\nshall include the Corresponding Source for any work covered by version 3\nof the GNU General Public License that is incorporated pursuant to the\nfollowing paragraph.\n\n Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU General Public License into a single\ncombined work, and to convey the resulting work. The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the work with which it is combined will remain governed by version\n3 of the GNU General Public License.\n\n 14. Revised Versions of this License.\n\n The Free Software Foundation may publish revised and/or new versions of\nthe GNU Affero General Public License from time to time. Such new versions\nwill be similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n Each version is given a distinguishing version number. If the\nProgram specifies that a certain numbered version of the GNU Affero General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation. If the Program does not specify a version number of the\nGNU Affero General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n If the Program specifies that a proxy can decide which future\nversions of the GNU Affero General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n Later license versions may give you additional or different\npermissions. However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n 15. Disclaimer of Warranty.\n\n THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. Limitation of Liability.\n\n IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n 17. Interpretation of Sections 15 and 16.\n\n If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n END OF TERMS AND CONDITIONS\n\n How to Apply These Terms to Your New Programs\n\n If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n To do so, attach the following notices to the program. It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see .\n\nAlso add information on how to contact you by electronic and paper mail.\n\n If your software can interact with users remotely through a computer\nnetwork, you should also make sure that it provides a way for users to\nget its source. For example, if your program is a web application, its\ninterface could display a \"Source\" link that leads users to an archive\nof the code. There are many ways you could offer source, and different\nsolutions will be better for different programs; see section 13 for the\nspecific requirements.\n\n You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU AGPL, see\n." + }, + "longdescription": "# ethersplay\nBinary Ninja plugin which enables an EVM disassembler and related analysis tools.\n\n![Example](/images/example.png)\n\n- [Installation](#installation)\n- [How to use](#how-to-use)\n- [Automatic Analyses](#automatic-analyses)\n- [Plugins](#plugins)\n- [Known issues](#known-issues)\n\n## Installation\n**Ethersplay only supports Python >= 3.6.**\n\nEnsure that your Binary Ninja's Python library is set to Python 3.6+. You can change the ScriptingProvider in the Advanced Settings.\n\nInstall the dependencies:\n```console\n$ pip install -r requirements.txt\n```\n\nCreate a symbolic link to the Binary Ninja [plugin folder](https://github.com/Vector35/binaryninja-api/tree/dev/python/examples#loading-plugins).\nE.g., in macOS\n```\ncd ~/Library/Application\\ Support/Binary\\ Ninja/plugins\nln -s /ethersplay/ethersplay .\n```\n\nUbuntu:\n```\ncd ~/.binaryninja/plugins\nln -s /ethersplay/ethersplay .\n```\n\n## How to Use\n\nEthersplay takes as input the evm bytecode in raw binary format.\n \nTo have the bytecode of a solidity file, use `solc`:\n- `solc --bin-runtime file.sol`: to print the bytecode of the runtime part of the contract (for most of the cases).\n- `solc --bin file.sol`: to print the initialisation bytecode of the contract (constructor),\n\n\n\nExample using `test.sol` with following contents:\n```test.sol:\ncontract Test {\n uint256 value;\n function Test() {\n value = 5;\n }\n function set_value(uint256 v) {\n value = v;\n }\n function() payable {}\n}\n```\n\nRun solidity to compile:\n`solc --bin-runtime test.sol`\n\nsolc prints the bytecode to stdout in the format below:\n```\n======= test.sol:Test =======\nBinary of the runtime part:\n60606040523615603d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063b0f2b72a146041575b5b5b005b3415604b57600080fd5b605f60048080359060200190919050506061565b005b806000819055505b505600a165627a7a72305820c177a64bf54a26574918ddc2201f7ab2dd8619d6c3ee87ce9aaa1eb0e0b1d4650029\n```\n\nCopy the ascii hex string, and then create a new file in Binary Ninja. Right-click and select `Paste From -> Raw Hex`. The output should look identical to the earlier example image. Save this file as `test.evm` and close it. Alternatively, paste the ascii hex string into a new text file, and run the `utils/convert_bytecode.py` on that file.\n\n`test.evm` can now be loaded into Binary Ninja.\n\n**Note:** The file must end in `.evm` to be recognized as an EVM bytecode binary file.\n\n## Plugins\n\n### Render Flowgraphs\nGenerates a clean control flow graph of all functions.\n\nBefore:\n![before](images/cfg_before.png)\n\nAfter:\n![!after](images/cfg_after.png)\n\n### Manticore coverage\nColors the basic blocks explored through Manticore (using the `visited.txt` or `*.trace` files).\n", + "minimumbinaryninjaversion": 3814, + "name": "ethersplay Ethereum Architecture Plugin", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/6d105067-d7d8-4c6e-bd99-3f6130217296/versions/2fcd84db-e5f7-4c74-bc46-236c1e734c07/platforms/1568/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/6d105067-d7d8-4c6e-bd99-3f6130217296/versions/2fcd84db-e5f7-4c74-bc46-236c1e734c07/platforms/1568/download?notrack=1", + "path": "crytic_ethersplay", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 860, + "updated_at": "2022-11-03 17:37:14+00:00" + }, + "projectUrl": "https://github.com/crytic/ethersplay", + "subdir": "ethersplay", + "type": [ + "architecture" + ], + "version": "0.1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Mark Griffin (@seeinglogic)", + "dependencies": "networkx\nwebsockets\nrequests", + "description": "Browser-based interactive graph for viewing callgraph, static analysis, and coverage information", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1739579348, + "license": { + "name": "MIT", + "text": "Copyright 2025 Mark Griffin (@seeinglogic)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n" + }, + "longdescription": "# Ariadne: Binary Ninja Graph Analysis Plugin\n\n[Ariadne](https://en.wikipedia.org/wiki/Ariadne#Mythology) is a Binary Ninja plugin that serves a browser-based interactive graph\nvisualization for assisting reverse engineers. It implements some common static\nanalysis tasks including call graph analysis, and can integrate block coverage\ninformation. This enables users to build interactive graphs and see exactly what\nthey are interested in.\n\n![Demo Screen Capture](screenshots/demo.gif)\n\n## Quickstart\n\n1. Install this plugin via the Plugin Manager, OR clone this repo to your Binary\n Ninja [plugins folder](https://docs.binary.ninja/getting-started.html#user-folder)\n - NOTE: If you install by cloning the repo, you may need to install the Python\n dependencies in `requirements.txt`. Use the command palette (`CTRL+P` or\n equivalent) to do `Install Python3 module` and copy the contents of\n requirements.txt into the dialog.\n2. Open a binary in Binary Ninja\n3. Right click: Plugins > Ariadne > Analyze Target\n4. Open the Ariadne Sidebar (`A` icon in upper right by default) and wait for analysis to complete (watch log for issues)\n5. Open a browser and surf to `http://localhost:8800` to view the interactive\n graph (web UI)\n6. Navigate around in Binary Ninja; the graph will update when the current\n function changes\n\n## Graph Styling\n\nThe quick rundown on what the shapes and colors on the graph mean:\n\n- Regular functions are green circles\n- Import functions are diamond-shaped and colored orange\n- Node size is based on cyclomatic complexity; more complex functions are\n bigger circles\n- The current function active in BN is colored red\n- Nodes with double borders mean they have edges that weren't included for the\n current graph (default: local neighborhood for active function in BN, see note\n below)\n- Functions that you've looked at in the BN UI have light blue borders\n- If you click on a node, it becomes the \"focus node\"\n - The focus node is colored purple\n - Out edges/nodes (callees) are colored pink\n - In edges/nodes (calleRs) are colored blue\n - Clicking on the focus node deselects it\n - Clicking on another node makes that node the focus node\n\nNOTE: the default graph is a 2-hop neighborhood of the current function _BUT_ it\nwill be automatically pruned to a smaller graph if two hops would include too\nmany nodes. Use the context menu function graph to push the full context for\nthe current function or use\n[networkx](https://networkx.org/) to build custom graphs and push them to\nthe web UI.\n\n## Motivation\n\n[Longer blog post on motivation](https://seeinglogic.com/posts/why-of-ariadne/)\n\nThis tool is a proof-of-concept that was built to fill a gap that we observed in\nour own reverse-engineering workflows, with the goals of being highly\nconfigurable and to help make reverse-engineering faster.\n\nThe key insight we found building/using a graph tool is that looking at too many\nnodes is unhelpful and layout matters a lot, so we focused on just the analysis\nresults we wanted in the smallest and cleanest view possible.\n\nFrom there, we built the backend so any graph could be pushed to the backend and\ncommon graph tasks would be easy. Adding extra analysis tasks is also easy since\nthere are places for per-function and target-wide analysis.\n\n## Common Workflows\n\nAriadne was built to handle some common workflows encountered in RE and fuzzing:\n\n- Source/Sink analysis: Context command allows you to select a function and see\n all the paths to/from the current function in the web UI. ![source-sink](screenshots/source_sink.png)\n- Coverage analysis via [bncov](https://github.com/ForAllSecure/bncov): allows\n visualization of coverage and shows where your coverage stops and uncovered\n complexity resides. Requires bncov, but if coverage information is detected\n before analysis starts it will automatically be added, or it can be added\n separately. [More in-depth post on coverage automation and Ariadne](https://seeinglogic.com/posts/automated-coverage-analysis/)\n - The Descendent Complexity metrics (\"uncovered\" as well as the normal one) show\n the sum of complexity for all functions reachable from a given function as\n well as the sum for just functions with zero coverage. Very useful for\n fuzzing!\n ![Coverage View](screenshots/coverage_analysis.png)\n- Import Hiding: Sometimes imports are helpful, other times they just convolute\n the graph because it's more important to see just the internal functions\n- Custom graphs: create any graph based on the target's graph (`ariadne.core.targets[bv].g`) and push it to the web UI with `ariadne.core.push_new_graph(new_graph)`\n- Standard styling: the default graph styling allows you to see which functions\n you have already looked at, which functions are imports, and caller/callee\n relationships. Helps you see which functions you haven't looked at that may be\n of interest. ![Breadcrumb demo](screenshots/breadcrumbing.png)\n- Collapsible Function Metadata sidebar: Shows all the relevant static analysis\n results for any function you click on. ![Focus node view](screenshots/focus_node.png)\n- Function search bar: start typing the name of the function you want to find in\n the search bar in the upper left, when the name turns green you can stop\n typing and hit enter to center the graph on the target function.\n- Freezing/unfreezing the graph: sometimes you don't want auto-updates\n- Save/Load analysis: redoing analysis is no good; headless analysis and\n save/load features allow you to crunch binaries on a separate machine if you\n want.\n- Callgraph exploration: using the web UI's `Graph Focus Function` button, now\n you can see what nodes aren't fully expanded in the current view and navigate\n between functions from within the web UI.\n\nSee the [tutorial](./tutorial/README.md) for detailed explanation of features\nand intended workflows that you can test out on an example binary.\n\n## Troubleshooting\n\nIf the web UI is unresponsive, check the websocket status in the upper right\ncorner. If you push a really large graph to the web UI, the page may freeze\nwhile the graph layout is computed. In any case, refreshing the page should\nreset the UI.\n\nUnhandled Python exceptions on startup or during processing are bugs and it'd be\ngreat if you would open a GitHub issue on the repo here and describe the problem\n(and include a binary to reproduce the problem, if possible).\n\n...And of course, PR's are always welcome!\n\n## Thank you!\n\nTo everyone who tries out this tool, it would mean a lot to me if you reach out\nand give me your thoughts on [Twitter](https://twitter.com/seeinglogic) or starring this repo. I\nhope this helps you or gives you ideas on how to look at things a little\ndifferently.\n", + "minimumbinaryninjaversion": 4911, + "name": "Ariadne", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/6bbad814-edb0-408e-a526-e4c8dc189cd3/versions/0cefd91d-2d62-47b8-bec7-a8cd2ed7d3bc/platforms/1574/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/6bbad814-edb0-408e-a526-e4c8dc189cd3/versions/0cefd91d-2d62-47b8-bec7-a8cd2ed7d3bc/platforms/1574/download?notrack=1", + "path": "seeinglogic_ariadne", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 104, + "updated_at": "2025-02-15 00:29:08+00:00" + }, + "projectUrl": "https://github.com/seeinglogic/ariadne", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "0.1.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Spencer Merrill", + "dependencies": "", + "description": "Binary Ninja plugin for restoring function names from stripped Golang binaries", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1662661916, + "license": { + "name": "MIT", + "text": "Copyright (c) <2022> \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "The plugin parses the section `.gopclntab` where Golang stores debug symbols and restores the function names. If there is no section named `.gopclntab` it will try to search for the section.", + "minimumbinaryninjaversion": 3469, + "name": "Golang Symbol Restore 1.18+", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/5d03fb4c-93f2-474d-8bc7-ab41f74d837a/versions/5c71981b-f294-4095-b3ac-de20a8ed8007/platforms/1579/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/5d03fb4c-93f2-474d-8bc7-ab41f74d837a/versions/5c71981b-f294-4095-b3ac-de20a8ed8007/platforms/1579/download?notrack=1", + "path": "scmerrill_golang_1_18_restore_names", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 3, + "updated_at": "2022-09-08 18:31:56+00:00" + }, + "projectUrl": "https://github.com/scmerrill/golang_1_18_restore_names", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Patrick Biernat", + "dependencies": "", + "description": "Package binary code as a Python class backed by Unicorn-Engine", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1657292416, + "license": { + "name": "MIT", + "text": "MIT License Copyright (c) 2022 Patrick Biernat Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# ripr\nripr is a tool that helps you rip out functionality from binary code and use it from Python. It accomplishes this by pairing the [Unicorn-Engine](http://www.unicorn-engine.org/) with [Binary Ninja](https://binary.ninja). Currently, `x86`, `x64`, and `arm` are supported and work to a reasonable degree.\n\n# Introduction\nReimplementing functionality is a common, often time-consuming, and sometimes arduous process that comes up frequently during reverse engineering. A few examples:\n\n* A CTF challenge has a custom encoding/decoding scheme you need to use in your solution script\n* A piece of malware uses a custom hashing or encryption function you need to implement\n* You need to make sure your reimplementation behaves _exactly_ as it would on the original architecture\n\nripr attempts to automatically generate a python class that is functionally identical to a selected piece of code by statically gathering sufficient information and wrapping it all into a \"harness\" for the unicorn emulator. \n\nFor some concrete examples, check out the `sample` folder!\n\n# Installation\nThe manual installation process looks like this:\n\n1. Clone this repo to your local machine\n2. Find the location of your plugins directory from Binary Ninja by clicking on `Tools --> Open Plugin Folder...`\n3. Place this repo in that directory, or create a symlink pointing to it.\n\n\n# Usage\n\n## Packaging a Function\nFrom within Binary Ninja, right click anywhere inside of a function and then select: \n\n```Plugins --> ripr --> Package Function```\n

\n\n

\n\nSee the [Options while Packaging](#options-while-packaging) section for details about prompts that may appear during this process.\n\n## Packaging Specific Basic Blocks\nYou can also choose to only package specific basic blocks rather than the entire function.\n\nSelect any instruction inside the basic block of interest, and from the right click menu, choose `[ripr] Package Basic Block`.\nRepeat this for any other basic blocks you want to gather.\n\nFinally, select `Generate Selected BBs` from the context menu to have ripr generate output for them.\n\n## Contextual Highlighting\n\nripr will contextualize code you've selected for packaging within the GUI.\n\n* Basic Blocks that have been included or identified have their background color darkened\n* Instructions that have caused a data dependency to be identified are highlighted Yellow\n* Call instructions to imported functions are highlighted Red\n* Call instructions to functions inside the target binary are highlighted Blue\n* Instructions that access unintialized variables are highlighed Orange (Basic Block Mode).\n\nThis is meant to give the user visual cues about what ripr has seen and automatically identified, making it easier to see \"right off the bat\" whether manual modification of the package is necessary.\n\n## Options while Packaging\nThere are a few different prompts which may appear while packaging a function. \n\n#### Code contains calls to Imported Functions. How should this be handled?\n\nChoosing \"Hook\" will allow you to write-in your own functionality that runs in lieu of imported functions. Selecting \"Nop out Calls\" will replace the call instruction with a series of NOPs.\n\n#### Target code may depend on outside code. Attempt to map automatically?\n\nYour selected code contains calls to other functions within the binary. Answering yes will automatically map those functions.\n\n#### Use Section Marking Mode for data dependencies?\n\nAnswering yes will map all sections of the binary that are touched by the target code. Answering No will use Page-Marking mode, where every page used by the target code is mapped into emulator memory.\n\n## Using a ripr \"package\"\nOnce a selection of code has been packaged, you will have a python class which encapsulates its functionality. The basic process of using it looks like this:\n\n1. Instantiate the class\n2. Call the run() method\n\nAssuming `my_ripped_code` is the class name:\n\n```python\nx = my_ripped_code()\ny = x.run()\n```\n\nAll Unicorn functionality is exposed via the `mu` attribute and should work as expected. \n\n## Implementing \"Imported Calls\"\nIf you choose to hook calls to `imported functions` during the packaging stage, your generated class will contain stub-functions that are called when the imported call would originally have been called.\n\nFor example, if your code contained calls to `puts` and `malloc`, the following would be generated in your class:\n```python\ndef hook_puts(self):\n pass\ndef hook_malloc(self):\n pass\n```\nAny code you write within these functions will be called in lieu of the actual imported call. If you wanted a reasonable approximation of `puts` (and were emulating x64 code), you could do:\n\n```python\ndef hook_puts(self):\n addr = self.mu.reg_read(UC_X86_REG_RDI)\n mem = self.mu.mem_read(addr, 0x200)\n print \"%s\" % (mem.split(\"\\x00\")[0])\n```\n\nYou have full access to all of Unicorn's methods via the `mu` attribute so it is possible to update the emulator context in any way necessary in order to mimic the behavior of a call or perform any actions you'd like instead of the call.\n\n## Function Arguments\nripr has some support for automatically generating \"argument aware\" output. When information about a function's parameters is available to Binary Ninja, ripr will generate its `run`\nfunctions in the form:\n\n```python\ndef run(self, arg_1, arg_2, ...)\n```\n\nWhen dealing with non-pointer types, your arguments will be written into the expected location in the emulated environment. \n\nFor \"single depth\" pointers, (e.g `char *, int *`), ripr will map memory, copy your argument to it, and place the address of that mapped memory into the appropriate location.\n\nFor pointers with a depth greater than 1, ripr falls back on default behaviour.\n\nIf you need to manually set up arguments, you can directly manipulate unicorn's state via the `mu` attribute.\nFor example, assuming you are emulating a 32-bit x86 function, you could do the following:\n\n```python\ndef run(self, arg1, arg2):\n self.mu.reg_write(UC_X86_REG_ESP, 0x7fffff00)\n self.mu.mem_write(0x7fffff00, '\\x01\\x00\\x00\\x00')\n\n self.mu.mem_write(0x7fffff04, arg1)\n self.mu.mem_write(0x7fffff08, arg2)\n \n\n self._start_unicorn(0x80484bb)\n return self.mu.reg_read(UC_X86_REG_EAX)\n```\n\n# Code Structure\n\n* `packager.py` -- High Level Functionality. Code here drives the process of gathering necessary data\n* `codegen.py` -- Contains code for actually generating the python output from the gathered data\n* `analysis_engine.py` -- Wraps static analysis engine functionality into a common interface\n* `dependency.py` -- Contains code for finding code and data that the target code needs in order to function corrrectly\n* `conScan.py` -- Contains \"convenience\" analyses that help ripr output easier-to-use code\n* `gui.py` -- A collection of hacks that resembles a user interface\n * Reuses lots of code from the [Binjadock](https://github.com/NOPDev/BinjaDock) project to display results\n\n# Testing\nThe current tests will package up some functions across the 3 supported architectures found \nin the `sample` folder. \n\nTo run the tests:\n\n```\ncd \npython -m unittest discover -t ../\n```\n", + "minimumbinaryninjaversion": 3469, + "name": "ripr", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/2eddc367-097a-474d-83bb-1ea7288d4e77/versions/7d617cd6-71c4-4ef1-b76a-3154f9c63d0d/platforms/1585/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/2eddc367-097a-474d-83bb-1ea7288d4e77/versions/7d617cd6-71c4-4ef1-b76a-3154f9c63d0d/platforms/1585/download?notrack=1", + "path": "pbiernat_ripr", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 409, + "updated_at": "2022-07-08 15:00:16+00:00" + }, + "projectUrl": "https://github.com/pbiernat/ripr", + "subdir": "", + "type": [ + "helper" + ], + "version": "v1.1.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "SmoothHacker", + "dependencies": "", + "description": "This plugin compiles exported functions and its corresponding types into a type library. Type libraries can also be applied to existing bndbs through this plugin.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1767218728, + "license": { + "name": "MIT", + "text": "Copyright (c) 2022 Scott Lagler\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# TypeLib Exporter\r\n\r\nThis plugin compiles exported functions and its corresponding types into a Binary Ninja type library. It can also load\r\nand apply\r\na type library from disk. 2 buttons in the plugin dropdown menu are created, `Export As Type Library`\r\nand `Apply Type Library`.\r\nFor type library exporting, a pop-up window will show detailing what options you would like to specify. Options include\r\nalternative names(libcurl.so.5.0.0, libcurl.so.5, libcurl.so), a dependency name, and the path where you want the\r\nlibrary exported to.\r\nFor type library importing, a pop-up window will ask for the path to a `.bntl` file which will be imported and applied\r\nto the\r\ncurrent binary view and any successive binary view in the current session.\r\n\r\nA potential workflow for this plugin would be to compile an open source library with debug information, load it into\r\nBinary Ninja,\r\nrun the debug info parser, and export it to a type library.\n\n### Changelog\n**Full Changelog**: https://github.com/SmoothHacker/TypeLib-Exporter/compare/v2.2...v2.3", + "minimumbinaryninjaversion": 3469, + "name": "TypeLib Exporter", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/6dd3fb3f-9661-4c67-b27e-14f763d91d08/versions/37dbe4d1-d65a-405d-885e-11f008c5575d/platforms/3019/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/6dd3fb3f-9661-4c67-b27e-14f763d91d08/versions/37dbe4d1-d65a-405d-885e-11f008c5575d/platforms/3019/download?notrack=1", + "path": "SmoothHacker_TypeLibExporter", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 9, + "updated_at": "2025-12-31 22:05:28+00:00" + }, + "projectUrl": "https://github.com/SmoothHacker/TypeLib-Exporter", + "subdir": "", + "type": [ + "binaryview", + "helper", + "ui" + ], + "version": "2.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "ex0dus-0x", + "dependencies": "ailment==9.2.26; python_version >= \"3.8\"\nangr==9.2.26; python_version >= \"3.8\"\narchinfo==9.2.26; python_version >= \"3.8\"\nbitstring==4.0.1; python_version >= \"3.8\"\ncachetools==5.2.0; python_version >= \"3.8\" and python_version < \"4.0\"\ncapstone==5.0.0; python_version >= \"3.8\" and python_full_version < \"3.0.0\" or python_full_version >= \"3.4.0\" and python_version >= \"3.8\"\ncffi==1.15.1; implementation_name == \"cpython\" and python_version >= \"3.8\"\nclaripy==9.2.26; python_version >= \"3.8\"\ncle==9.2.26; python_version >= \"3.8\"\nclick==8.1.3; python_version >= \"3.7\"\ncolorama==0.4.6; python_version >= \"3.8\" and python_full_version < \"3.0.0\" and platform_system == \"Windows\" or python_version >= \"3.8\" and python_full_version >= \"3.7.0\" and platform_system == \"Windows\"\ncommonmark==0.9.1; python_full_version >= \"3.6.3\" and python_full_version < \"4.0.0\" and python_version >= \"3.6\"\ncontourpy==1.0.6; python_version >= \"3.8\"\ncppheaderparser==2.7.4; python_version >= \"3.8\"\ncssselect==1.2.0; python_version >= \"3.7\"\ncustom-inherit==2.4.0\ncycler==0.11.0; python_version >= \"3.8\"\ndecorator==5.1.1; python_version >= \"3.8\"\ndeprecated==1.2.13; python_version >= \"2.7\" and python_full_version < \"3.0.0\" or python_full_version >= \"3.4.0\"\ndpkt==1.9.8; python_version >= \"3.8\"\nfonttools==4.38.0; python_version >= \"3.8\"\nfuture==0.18.2; python_full_version >= \"3.6.0\" and python_version >= \"3.8\"\ngitdb==4.0.10; python_version >= \"3.8\"\ngitpython==3.1.29; python_version >= \"3.7\"\nitanium-demangler==1.1; python_version >= \"3.8\"\njinja2==3.1.2; python_version >= \"3.7\"\nkiwisolver==1.4.4; python_version >= \"3.8\"\nlief==0.12.3; python_version >= \"3.6\"\nlxml==4.9.1; python_version >= \"2.7\" and python_full_version < \"3.0.0\" or python_full_version >= \"3.5.0\"\nmarkupsafe==2.1.1; python_version >= \"3.7\"\nmatplotlib==3.6.2; python_version >= \"3.8\"\nmpmath==1.2.1; python_version >= \"3.8\"\nmulpyplexer==0.09; python_version >= \"3.8\"\nnampa==0.1.1; python_version >= \"3.8\"\nnetworkx==2.8.8; python_version >= \"3.8\"\nnumpy==1.23.5\npackaging==21.3; python_version >= \"3.8\"\npandas==1.5.2; python_version >= \"3.8\"\npefile==2022.5.30; python_full_version >= \"3.6.0\" and python_version >= \"3.8\"\npillow==9.3.0; python_version >= \"3.8\"\nplumbum==1.8.0; python_version >= \"3.8\"\nply==3.11; python_version >= \"3.8\"\nprogressbar2==4.2.0; python_full_version >= \"3.7.0\" and python_version >= \"3.8\"\nprotobuf==4.21.9; python_version >= \"3.8\"\npsutil==5.9.4; python_version >= \"3.8\" and python_full_version < \"3.0.0\" or python_full_version >= \"3.4.0\" and python_version >= \"3.8\"\npulp==2.7.0\npycparser==2.21; python_version >= \"3.8\" and python_full_version < \"3.0.0\" or python_full_version >= \"3.4.0\" and python_version >= \"3.8\"\npyelftools==0.29; python_version >= \"3.8\"\npygments==2.13.0; python_full_version >= \"3.6.3\" and python_full_version < \"4.0.0\" and python_version >= \"3.6\"\npyparsing==3.0.9; python_full_version >= \"3.6.8\" and python_version >= \"3.8\"\npyquery==1.4.3\npysmt==0.9.6.dev21; python_version >= \"3.8\"\npython-dateutil==2.8.2; python_version >= \"3.8\" and python_full_version < \"3.0.0\" or python_full_version >= \"3.3.0\" and python_version >= \"3.8\"\npython-utils==3.4.5; python_full_version >= \"3.7.0\" and python_version >= \"3.8\"\npytz==2022.6; python_version >= \"3.8\"\npyvex==9.2.26; python_version >= \"3.8\"\npywin32==305; platform_system == \"Windows\" and platform_python_implementation != \"PyPy\" and python_version >= \"3.8\"\nrich==12.6.0; python_full_version >= \"3.6.3\" and python_full_version < \"4.0.0\" and python_version >= \"3.6\"\nrpyc==5.2.3; python_version >= \"3.8\"\nscikit-criteria==0.7\nscipy==1.9.3; python_version >= \"3.8\"\nseaborn==0.12.1; python_version >= \"3.7\"\nsetuptools-scm==7.0.5; python_version >= \"3.8\"\nshellingham==1.5.0; python_version >= \"3.6\"\nsix==1.16.0; python_version >= \"3.8\" and python_full_version < \"3.0.0\" or python_full_version >= \"3.3.0\" and python_version >= \"3.8\"\nsmmap==5.0.0; python_version >= \"3.8\"\nsortedcontainers==2.4.0; python_version >= \"3.8\"\nsympy==1.11.1; python_version >= \"3.8\"\ntomli==2.0.1; python_version >= \"3.8\"\ntree-sitter==0.20.1; python_version >= \"3.3\"\ntyper==0.6.1; python_version >= \"3.6\"\ntyping-extensions==4.4.0; python_version >= \"3.8\"\nunicorn==2.0.1; python_version >= \"3.8\"\nwrapt==1.14.1; python_version >= \"2.7\" and python_full_version < \"3.0.0\" or python_full_version >= \"3.5.0\"\nz3-solver==4.10.2.0; python_version >= \"3.8\"\n", + "description": "Framework for Automating Fuzzable Target Discovery with Static Analysis", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1700616759, + "license": { + "name": "MIT", + "text": "Copyright 2022 @ex0dus-0x Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This is a helper Binary Ninja plugin to assist in identifying functions that are optimal targets for fuzzing and dynamic analysis. This is useful for vulnerability researchers wanting to fuzz executables or libraries without manual reverse engineering, and need some fast insight about what functions are potential targets to extrapolate for their harnesses.", + "minimumbinaryninjaversion": 1500, + "name": "Fuzzable", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/410544e1-e9ee-442e-82aa-7b740ac61d8a/versions/4c353249-8573-41a8-b698-6396ac42386f/platforms/1597/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/410544e1-e9ee-442e-82aa-7b740ac61d8a/versions/4c353249-8573-41a8-b698-6396ac42386f/platforms/1597/download?notrack=1", + "path": "ex0dus0x_fuzzable", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 547, + "updated_at": "2023-11-22 01:32:39+00:00" + }, + "projectUrl": "https://github.com/ex0dus-0x/fuzzable", + "subdir": "", + "type": [ + "ui" + ], + "version": "2.0.6", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "Hyun Yi", + "dependencies": "yara-python>=4.3.0\npefile>=2019.4.18\nPillow>=8.0.1\n", + "description": "YARA rule making tool for Binary Ninja, Cutter, and IDA", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1699846859, + "license": { + "name": "MIT", + "text": "Copyright (c) 2018 Hyun Yi\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Hyara\n\n![Version](https://img.shields.io/badge/version-2.3-blue.svg?cacheSeconds=2592000)\n\n![](https://github.com/hyuunnn/Hyara/blob/master/images/Hyara.gif?raw=true)\n\n> Hyara is plugin that provides convenience when writing yararule.\n> \n> The plugin is currently undergoing a major revision!\n\n- [Demo video](https://youtu.be/zgL4BkQJZ-w)\n\n- [IDA Plugin Contest 2018](https://hex-rays.com/contests_details/contest2018/#Hyara)\n\n## Instructions\n\n### Start Screen and Options\n\n- When you run Hyara, it docks itself to the right and docks the output window to the left.\n- After specifying the address, press the `Make` button to show the specified hexadecimal or strings as a result.\n- The results are saved in the table below when you click `Save`.\n- If you double-click the table, you can clear the rule.\n- You can modify the values to wildcards by right clicking after dragging.\n\n![](https://github.com/hyuunnn/Hyara/blob/master/images/wildcard_0.png?raw=true)\n\n- `Export Yara Rule`\n - Exports the previously created yara rules.\n\n![](https://github.com/hyuunnn/Hyara/blob/master/images/Hyara_1.png?raw=true)\n\n\n- `Right Click`\n - You can select either start address or end address. (IDA Pro, Cutter)\n\n![](https://github.com/hyuunnn/Hyara/blob/master/images/Hyara_7.png?raw=true)\n \n- `Comment Option`\n - Annotates the instructions next to the condition rule(s).\n- `Rich Header` and `imphash`\n - Adds rich header and imphash matching to the rule.\n- `String option`\n - This option extracts strings within the range specified.\n\n![](https://github.com/hyuunnn/Hyara/blob/master/images/Hyara_3.png?raw=true)\n![](https://github.com/hyuunnn/Hyara/blob/master/images/cutter_1.png?raw=true)\n\n## Installation\n\n### IDA Pro & BinaryNinja\n\n- IDA Pro\n ```bash\n pip install -r requirements.txt\n ```\n - copy ``Hyara_IDA.py and hyara_lib folder`` to $ida_dir/plugins\n - Activate via Edit -> Plugins -> Hyara (or CTRL+SHIFT+Y)\n\n- BinaryNinja\n - Just use the plugin manager!\n - Activate via View -> Other Docks -> Show Hyara\n\n### Cutter\n\n- Windows\n\nCheck the python version installed in the cutter and install it.\n\n![](https://github.com/hyuunnn/Hyara/blob/master/images/cutter_0.png?raw=true)\n\n```bash\nC:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python3X\\\\python.exe -m pip install -I -t $cutter_dir/python3X/site-packages -r requirements.txt\n```\n\ncopy ``__init__.py, Hyara_Cutter.py and hyara_lib folder`` to $cutter_dir/plugins/python/Hyara\n\n- Linux\n\n![](https://github.com/hyuunnn/Hyara/blob/master/images/cutter_install__1.png?raw=true)\n\n```bash\ncp -r /tmp/.mount_Cutter5o3a5G/usr /root\n```\n\nCheck the python version installed in the cutter and install it.\n\n![](https://github.com/hyuunnn/Hyara/blob/master/images/cutter_01.png?raw=true)\n\n```bash\npip3.X install -I -t /root/usr/lib/python3.X/site-packages -r /root/Hyara/requirements.txt\n./Cutter-v2.0.3-x64.Linux.AppImage --pythonhome /root/usr\n```\n\ncopy ``__init__.py, Hyara_Cutter.py and hyara_lib folder`` to /root/.local/share/rizin/cutter/plugins/python/Hyara\n\nActivate via Windows -> Plugins -> Hyara\n\n![](https://github.com/hyuunnn/Hyara/blob/master/images/cutter__0.png?raw=true)\n\n### Ghidra (WIP)\n\nInstall Ghidrathon (Installation Guide) to use Hyara Plugin.\n\n```bash\npip install PySide2 or pip install PySide6\n```\n\n- Windows\n\ncopy ``Hyara_Ghidra.py and hyara_lib folder`` to ``C:\\\\Users\\\\User\\\\.ghidra\\\\.ghidra.X.X.X\\\\Extensions\\\\Ghidrathon-X.X.X\\\\data\\\\python\\\\``\n\n```python\n# Window -> Ghidrathon\nimport Hyara_Ghidra\nHyara_Ghidra.run()\n```\n\n![](https://github.com/hyuunnn/Hyara/blob/master/images/ghidra_0.png?raw=true)\n\n\n## Features\n\n- GUI-based\n- Supports IDA, BinaryNinja, Cutter and Ghidra.\n- YaraChecker\n - Tests the yararule on the fly.\n - ![](https://github.com/hyuunnn/Hyara/blob/master/images/Hyara_4.png?raw=true)\n- YaraDetector\n - Shows which part is detected in the sample loaded to disassembler, and when \"Address\" is clicked, it moves to the corresponding address on the disassembler view.\n - ![](https://github.com/hyuunnn/Hyara/blob/master/images/Hyara_5.png?raw=true)\n- YaraIcon\n - Creates yara rules for icon resources embedded in the PE.\n - ![](https://github.com/hyuunnn/Hyara/blob/master/images/Hyara_6.png?raw=true)\n\n## Author\n\n\ud83d\udc64 **hyuunnn**\n\n* Github: [@hyuunnn](https://github.com/hyuunnn)\n\n### Special Thanks\n\n* Twitter: kjkwak12\n* Github: gaasedelen - Link\n* Github: ITAYC0HEN - Link\n* Github: psifertex - Link\n", + "minimumbinaryninjaversion": 3469, + "name": "Hyara", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/ef58ca26-a913-4318-91e3-e61ec6bbdabb/versions/4dcac05d-87cd-471d-b7ab-db85b89e16c5/platforms/1603/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/ef58ca26-a913-4318-91e3-e61ec6bbdabb/versions/4dcac05d-87cd-471d-b7ab-db85b89e16c5/platforms/1603/download?notrack=1", + "path": "hyuunnn_Hyara", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 242, + "updated_at": "2023-11-13 03:40:59+00:00" + }, + "projectUrl": "https://github.com/hyuunnn/Hyara", + "subdir": "hyara_lib/integration/bn_hyara", + "type": [ + "ui" + ], + "version": "2.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Tomonori Izumida ", + "dependencies": "", + "description": "An architecture plugin for Renesas V850 series", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1667789390, + "license": { + "name": "MIT", + "text": "Copyright (c) 2021 Tomonori Izumida \nCopyright (c) 2021 IIJ Innovation Institute\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" + }, + "longdescription": "# Renesas V850/RH850 Architecture plugin for Binary Ninja\n\n- TODO\n + complete the lifting to Lifted IL\n\n\n", + "minimumbinaryninjaversion": 1200, + "name": "Renesas V850 architecture plugin", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/39ebd808-0d85-43cc-aad3-0992a9f2ae4f/versions/2992674e-e36f-4acc-8d5d-c5d72f9dd3ee/platforms/1609/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/39ebd808-0d85-43cc-aad3-0992a9f2ae4f/versions/2992674e-e36f-4acc-8d5d-c5d72f9dd3ee/platforms/1609/download?notrack=1", + "path": "tizmd_binjav850", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 2, + "updated_at": "2022-11-07 02:49:50+00:00" + }, + "projectUrl": "https://github.com/tizmd/binja-v850", + "subdir": "", + "type": [ + "architecture" + ], + "version": "0.1.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "CyShell", + "dependencies": "networkx~=2.8.2\nPySnooper~=1.1.1", + "description": "Parse and extract class information from MSVC x86 32\\64 bit C++ binaries.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1686049233, + "license": { + "name": "MIT", + "text": "Copyright (c) 2022 CyShell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# ClassyPP\n\nMicrosoft Visual Studio C++ Class information extraction.\n\n## Description:\n\nThis plugin aims to aid in reverse engineering binaries compiled with MSVC and written in C++. \nSuch binaries often contain extremely useful information about the classes and types used within it - Information that is invaluable \nto reverse engineering efforts.\n\nThis plugin performs 3 main actions:\n\n**RTTI Inspection**\n\nSearch the executable for RTTI (Real-Time Type information) structures, and define the actual symbols \nwith types within the BinaryView, including demangled class names.\n\n-BEFORE-\n\n![RTTI Inspection - Before](https://user-images.githubusercontent.com/34336222/171192716-bafebbb8-0684-47ef-94be-30de176b89a1.png)\n\n-AFTER-\n\n![RTTI Inspection - After](https://user-images.githubusercontent.com/34336222/171192825-c004b21e-96f9-44f4-9f50-4400a10fc01a.png)\n\n\n**Resolve and Define Virtual-Function tables**\n\nAny C++ class will have its own vfTable within the executable.\nIdentifying this vfTable is crucial in order to understand what functions belong to what class.\n\nThis plugin takes this process one step further - Using Graph theory algorithms it will approximate \nwhich class owns which function within a given vfTable. This is important because not all derived classes\noverride functions within their base class, which means that the derived class vfTable might contain \nfunctions that belong to the base class, and often times functions belonging to several different base \nclasses.\n\n-BEFORE-\n\n![vfTable - Before](https://user-images.githubusercontent.com/34336222/171192911-155679ca-c078-41a4-9faf-c85f552b9acc.png)\n\n\n-AFTER-\n\n![vfTable - After](https://user-images.githubusercontent.com/34336222/171192938-75f4397e-5013-477d-b761-be4a06f509ff.png)\n\n\n\n\n\n**Detect and Define Constructor\\Destructor functions**\n\nBase on information obtained in the preceeding steps, it is possible to locate suspected constructor and Destructor functions for the \nvarious detected classes.\nThe plugin will either annotate the suspected constructor\\destructor with a comment or change the name of the function to reflect\nthe detection.\n\n\n\n\n\n\n**Define class types for known Classes**\n\nUsing information extracted from the MSVC compiler (CL) regarding the memory layout of compiled classes it is possible\nto define the actual class type as it apears in memory - This type can later be applied to any function using the \"This\" pointer.\nVersion 1.0 of this plugin contains memory layout information from many classes of the following libraries:\n - standard lib\n - Protobuf\n - Standard Template Library\n - CryptoPP\nThe plugin will autoamtically define any class type in its database if the corresponding class is found to be resident in the executable.\n\n![class definition](https://user-images.githubusercontent.com/34336222/171192986-05e2f215-d02f-4800-ac4e-66e37403c9b0.png)\n\n## Installation\n\nThis plugin installs as a normal binja plugin - just clone it into the plugins' directory.\nEdit the Config.py file for values suitable to your environment.\n\t\n## Limitations:\n\t- Supports MSVC compiled binaries Only\n\t- x86 32\\64 bit architecture only\n\t- Currently no support for Multiple Virtual Inheritence (Support for this will be added in the future)\n\n## Acknowledgment\n\nThis plugin uses the Demumble project in order to demangle C++ symbols - https://github.com/nico/demumble.\n\n## License\n\nThis plugin is released under an [MIT license](./license).\n", + "minimumbinaryninjaversion": 3233, + "name": "ClassyPP", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/7b592986-8718-4e9d-a5f5-03b5a3baf723/versions/5c786bec-aff4-4d01-b1e8-72f46e49000e/platforms/1617/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/7b592986-8718-4e9d-a5f5-03b5a3baf723/versions/5c786bec-aff4-4d01-b1e8-72f46e49000e/platforms/1617/download?notrack=1", + "path": "CySHell_ClassyPP", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 39, + "updated_at": "2023-06-06 11:00:33+00:00" + }, + "projectUrl": "https://github.com/CySHell/ClassyPP", + "subdir": "", + "type": [ + "binaryview" + ], + "version": "1.6.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "sen", + "dependencies": "", + "description": "A Binary Ninja architecture plugin for the AD Blackfin architecture", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1653716781, + "license": { + "name": "GPL-3.0", + "text": "Copyright 2022 sen\n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see ." + }, + "longdescription": "## Analog Devices Blackfin Architecture Plugin\nA Binary Ninja architecture plugin for the AD Blackfin architecture. It includes a standalone disassembler, and fairly robust lifting capabilities.\n\n## Disassembler\nThe disassembler used in this plugin (relagated to the disassembler/ subdirectory) can be used as a standalone decomposer/disassembler, and is not tied to the binaryninja API. It outputs tokenized structures representing each parsed machine code instruction, which can be parsed as desired by the disassembler frontend.\n| ![Disassembly](images/disasm.png) |\n|:--:|\n| *Yes, this is disassembly, not LLIL -- Blackfin uses arithmetic syntax for assembly* |\n### Instruction Support\nDisassembly of all instructions defined in the Blackfin Processor Programming Reference (Rev 2.2) is implemented. Additionally, a set of `pseudo_` instructions are implemented based on the libopcodes blackfin instruction parser, though these instructions do not appear in the above reference manual.\n\nThis disassembler supports only the Blackfin ISA, and _not_ the Blackfin+ superset used on BF7xx processor models. In addition to several new instructions, the Blackfin+ ISA also features a number of additional registers, and support for and usage of 64 bit instructions. At a minimum, support for detecting 64 bit instructions is planned, which would at least allow for disassembly of Blackfin compatible instructions in a Blackfin+ image.\n\n## Lifter\n| ![HLIL](images/hlil.png) |\n|:--:|\n| *HLIL output example* |\n\nThe lifter is mostly complete, with all standard operations supported, but lacking in support of some of the more complex/unusual DSP instructions and operating modes, including operations which saturate rather than overflow, and things like add with reverse bit carry that are complicated to implement correctly in BNIL. Additionally, some vector operations have yet to be implemented.\n\n## Architecture Misc.\n- Currently one standard calling convention (used by the bfin-* compilers, on uCLinux) and one system calling convention (same compilers) are defined.\n- Extremely rudimentary ELF relocation handling is implemented via BlackfinElfRelocationHandler, and this handler is registered to the BinaryNinja Elf view with machine_id == 106.\n- Equally rudimentary bFLT relocation handling is implemented via BlackfinBFLTRelocationHandler. Most of the heavy lifting for this handler is implemented in the bFLT view plugin.\n\n## Known Limitations\n- No lifting support for some DSP operatations\n - Proper handling of flags: In most cases, conditionals are evaluated based on a manually set CC flag. However in some cases, the dedicated flags (AZ, AC, etc.) are used via the CCFlag instruction -- this instruction is not currently lifted, and flags are not set by operations presently.\n - DSP multiplication operations, with/without fractionality, with/without saturation\n - DSP vector shift operations\n - PACK operation\n - ABS operation\n - DSP 'to reg from accumulator' move operations (saturation, fractionality)\n - Accumulator/accumulator arithmetic\n - DIVQ and DIVS division primitives\n - ROT instruction edge cases; common cases handled by lifter\n - Vector addition/subtraction edge cases; common cases handled by lifter\n - EXTRACT instruction\n - SIGNBITS instruction\n - ALIGN8, ALIGN16, ALIGN32 instruction\n - DSP LSHIFT operation\n- Out-of-spec handling of 16 bit immediate loads\n - A common pattern observed in a number of sample binaries was the usage of a `reg.h = imm16; reg.l = imm16` idiom for loading a 32 bit immediate into a full width register. In most cases, the high load immediately precedes the low load, and as such the lifter combines the two operations into a single 32 bit load, which improves the resulting IL. However, in some cases the two operations are split up, and the resulting IL becomes messy, and breaks Binary Ninja's Value Set Analysis (VSA). In order to combat this, the lifter currently interprets a lone load high instruction as a 32 bit load to the full width register, assuming that the low bytes will be overwritten by a load low at some point before the register is read. This has been true in all cases observed during the development of this plugin, but _does not follow the Blackfin spec_ and technically produces incorrect IL. So far, the risk of occasional incorrect IL is outweighed by the greatly improved IL in the majority of cases, but be warned.\n- No support for parallel execution\n - Blackfin ISA supports the parallel execution of up to three instructions at once. This is not implemented in the disassembler or lifter at present, and input machine code is treated as entirely sequential. As a consequence, under very specific circumstances the resulting disassembly may be misinterpreted -- for example, when one instruction in the parallel issued set sets a register, and the next in the set uses that same register as a source. In reality, because the instructions are being executed in parallel, the value of the register used in the latter operation will not have been updated at execution time, but the disassembly output will indicate that this _is_ the case.", + "minimumbinaryninjaversion": 3, + "name": "Blackfin Architecture Plugin", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/1441048c-a30e-4f89-b6f5-1148cba3a109/versions/5ca4f18e-7124-43ea-841b-5cbe71151d20/platforms/1621/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/1441048c-a30e-4f89-b6f5-1148cba3a109/versions/5ca4f18e-7124-43ea-841b-5cbe71151d20/platforms/1621/download?notrack=1", + "path": "0bs3n_archblackfin", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 10, + "updated_at": "2022-05-28 05:46:21+00:00" + }, + "projectUrl": "https://github.com/0bs3n/arch-blackfin", + "subdir": "", + "type": [ + "architecture" + ], + "version": "0.1.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "matteyeux", + "dependencies": "", + "description": "Binary Ninja comments viewer", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1653671403, + "license": { + "name": "MIT", + "text": "Copyright 2022 matteyeux\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Binary Ninja comments viewer to visualize all comments of a BNDB.\n\n![Capture](https://user-images.githubusercontent.com/8758978/170741651-ed42a9b2-a5f9-465e-bb81-d57d87422b13.png)\n", + "minimumbinaryninjaversion": 2487, + "name": "Comments Viewer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/81f6914b-7263-42ea-ac26-2907e8d71d1c/versions/a519beab-1e87-4cbc-94fd-2dac42192a70/platforms/1627/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/81f6914b-7263-42ea-ac26-2907e8d71d1c/versions/a519beab-1e87-4cbc-94fd-2dac42192a70/platforms/1627/download?notrack=1", + "path": "matteyeux_commentsviewer", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2022-05-27 17:10:03+00:00" + }, + "projectUrl": "https://github.com/matteyeux/comments-viewer", + "subdir": "", + "type": [ + "ui" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Terry Chia", + "dependencies": "", + "description": "Manage custom type libraries.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1611994918, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 Terry Chia\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin loads custom type libraries from `~/.binaryninja/typelib`. A helper function is also included to generate type libraries from a header file.", + "minimumbinaryninjaversion": 2000, + "name": "Binary Ninja Type Manager", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/95b8dc5c-df92-4a4c-b21e-1f65ad5b030d/versions/012dd5a9-a2aa-441a-82f4-f10c8dc45bdb/platforms/1633/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/95b8dc5c-df92-4a4c-b21e-1f65ad5b030d/versions/012dd5a9-a2aa-441a-82f4-f10c8dc45bdb/platforms/1633/download?notrack=1", + "path": "Ayrx_binjatypemanager", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 9, + "updated_at": "2021-01-30 08:21:58+00:00" + }, + "projectUrl": "https://github.com/Ayrx/binja-typemanager", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "cynder (kat)", + "dependencies": "capstone\n", + "description": "Processing for Apple's dyld_shared_cache format.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1646117987, + "license": { + "name": "MIT", + "text": "Copyright (c) 2022, katherine \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Dyld Shared Cache Parser\nAuthor: **cynder (kat)**\n\n_Dyld Shared Cache Support for BinaryNinja_\n\n![BinaryNinja Screenshot](.github/sbui.png?raw=true \"Screenshot\")\n\nWithout any of the fuss of requiring manually loading several unrelated images, or the awful off-image addresses, and with better output than IDA, Hopper, or any other disassembler on the market. \n\n## Installation + Usage\n\n1. Install capstone via pip for the same python interpreter your BinaryNinja install is using. \n2. git clone (or download and unzip) this folder to your BinaryNinja plugins folder.\n\n### Usage:\n\n1. Open Dyld Shared Cache file with BN\n2. Select the Image you would like to disassemble\n3. Congrats, you are now Reverse Engineering the Mach-O\n\n## Description:\n\nThis project acts as an interface for two seperate projects; DyldExtractor, and ktool. Mainly DyldExtractor.\n\n[DyldExtractor](https://github.com/arandomdev/DyldExtractor) is a project written primarily by 'arandomdev' designed for CLI standalone dyld_shared_cache extraction. It is *the* best tool for the job, and reverses the majority of \"optimizations\" that make DSC reverse engineering ugly and painful. Utilizing this plugin, Binja's processing should outperform IDAs, and wont require IDA's need for repeatedly right clicking and manually loading tons of modules.\n\nThis version of DyldExtractor has a lot of modifications (read: a lot of commented out lines) from the original designed to make it function better in the binja environment. \n\n[ktool](https://github.com/cxnder/ktool) is a multifaceted project I wrote for, primarily, MachO + ObjC Parsing.\n\nIt is mainly used for super basic parsing of the output, as we need to properly write the segments to the VM (and scrap all the dsc data that was originally in this file) so the Mach-O View knows how to parse it. \n\n## License\n\nThis plugin, along with ktool and dyldextractor are released under an [MIT license](./license). Both of these plugins are vendored within this project to make installation slightly simpler. \n", + "minimumbinaryninjaversion": 3164, + "name": "Dyld Shared Cache Processor", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/e8ce4174-0b55-4bf0-83ff-26afec09d9b0/versions/93d43ded-f31e-4bee-a338-761650fb64f1/platforms/1639/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/e8ce4174-0b55-4bf0-83ff-26afec09d9b0/versions/93d43ded-f31e-4bee-a338-761650fb64f1/platforms/1639/download?notrack=1", + "path": "0cyn_bndyldsharedcache", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 88, + "updated_at": "2022-03-01 06:59:47+00:00" + }, + "projectUrl": "https://github.com/0cyn/bn-dyldsharedcache", + "subdir": "", + "type": [ + "architecture", + "binaryview", + "core", + "helper", + "ui" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "ImNotAVirus", + "dependencies": "", + "description": "Find Delphi VMTs and generate their structures", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1645469959, + "license": { + "name": "MIT", + "text": "Copyright 2020 ImNotAVirus\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Delphi VMT Analyzer (v0.1.2)\n\nAuthor: **ImNotAVirus**\n\n_Find Delphi VMTs and generate their structures_\n\n## Description:\n\nThis plugin is intended to facilitate the revese engineering of binaries written in Delphi.\n\nFor that, it:\n\n- Finds the Virtual Method Table (VMT) of Delphi classes\n- Creates a structure for each VMT (class name, instance size, virtual methods, etc...)\n- Creates a tag for each VMT in order to locate them more easily\n\n**Warning**: This plugin currently only supports 32bits PE (Portable Executable). For more details on upcoming features, you can refer to [TODO.md](./TODO.md).\n\n![example](./assets/example.png)\n\n## Installation Instructions\n\n### Darwin\n\nNo special instructions, package manager is recommended\n\n### Windows\n\nNo special instructions, package manager is recommended\n\n### Linux\n\nNo special instructions, package manager is recommended\n\n## Examples\n\nThis repo contains different examples to show how the plugin works in scripting mode. \nYou can view them [here](./examples).\n\n**Warning**: although DelphiNinja does not require dependencies, some examples may require dependencies. \nFor more information, please refer to this [page](./examples/README.md).\n\n## Minimum Version\n\nThis plugin has been tested with the following minimum version of Binary Ninja:\n\n* release: N/A\n* dev: 2440\n\n## License\n\nThis plugin is released under a MIT license.\n\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 2440, + "name": "Delphi VMT Analyzer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/11c48fa6-4604-4642-8c0b-371a2cfb8be5/versions/29499db3-39d5-40e4-8984-b587e74f741e/platforms/1646/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/11c48fa6-4604-4642-8c0b-371a2cfb8be5/versions/29499db3-39d5-40e4-8984-b587e74f741e/platforms/1646/download?notrack=1", + "path": "ImNotAVirus_delphi_ninja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 25, + "updated_at": "2022-02-21 18:59:19+00:00" + }, + "projectUrl": "https://github.com/ImNotAVirus/delphi_ninja", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.1.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "EliseZeroTwo", + "dependencies": "", + "description": "Helper for exploring structured exception handlers in PEs", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1645253869, + "license": { + "name": "MIT", + "text": "Copyright (c) 2022 EliseZeroTwo\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# SEH Helper\n\nAuthor: **EliseZeroTwo**\n\n_A Binary Ninja helper for exploring structured exception handlers in PEs_\n\n## Side-Note\n\nI dislike GitHub, this plugin is only here as Binary Ninja relies on GitHub for it's plugin manager which I feel is bad. GitHub requires an account for more and more basic features with every passing day. It will not be long until GitHub accounts will be merged with Microsoft account similarly to what is going on with Mojang accounts at the moment. I do not want to log in with a Microsoft account to clone a repo, nor do you. GitHub also accepts a large, but unknown, sum of money every year for their contract with the United States Immigration and Customs Enforcement agency which is even more reason to not buy into their closed-wall garden.\n\n## Description:\n\nThis plugin provides a UI helper for exploring structured exception handlers in PEs. It provides a feature to view all entries, view the entry at the cursor, or follow the cursor displaying the entry at the cursor constantly.\n\n## License\n\nThis plugin is released under an [MIT license](./license).\n\n![SEH Demo Image](./images/demo.png)\n", + "minimumbinaryninjaversion": 3164, + "name": "SEH Helper", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/2d0cc062-a385-4b0b-ba7f-69e3b794ebcc/versions/9de13485-e727-43ce-8d8d-29c3146213b6/platforms/1651/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/2d0cc062-a385-4b0b-ba7f-69e3b794ebcc/versions/9de13485-e727-43ce-8d8d-29c3146213b6/platforms/1651/download?notrack=1", + "path": "EliseZeroTwo_SEHHelper", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 82, + "updated_at": "2022-02-19 06:57:49+00:00" + }, + "projectUrl": "https://github.com/EliseZeroTwo/SEH-Helper", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "0.2.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "b0bb", + "dependencies": "", + "description": "Quality of life utilities for obsessive compulsive CTF enthusiasts.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1645134987, + "license": { + "name": "MIT", + "text": "Copyright (c) 2022 b0bb\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# 0CD\nAuthor: **b0bb**\n\nQuality of life utilities for the obsessive compulsive CTF enthusiasts.\n\n## Description:\nThis plugin is a collection of small quality of life improvements that come up in CTFs or other similar toy problems. Some included utilities include:\n\n**Stack Guards** \nThis utility will clean up those ugly looking stack canaries your eyes always skip over.\n\n![stack guards](https://github.com/0xb0bb/0CD/blob/main/images/stackguards.png?raw=true)\n \n\n## License\n\nThis plugin is released under an [MIT license](./license).\n", + "minimumbinaryninjaversion": 3164, + "name": "0CD", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/13ef71ac-85ca-4a0c-a8e0-99ab09839221/versions/f8c6c93e-ca61-4204-b8f6-a75af2536725/platforms/1658/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/13ef71ac-85ca-4a0c-a8e0-99ab09839221/versions/f8c6c93e-ca61-4204-b8f6-a75af2536725/platforms/1658/download?notrack=1", + "path": "0xb0bb_0CD", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 24, + "updated_at": "2022-02-17 21:56:27+00:00" + }, + "projectUrl": "https://github.com/0xb0bb/0CD", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "fkie-cad", + "dependencies": "git+https://github.com/fkie-cad/dewolf-logic.git#egg=delogic\ngit+https://github.com/fkie-cad/dewolf-idioms.git\nblack\nisort\nnetworkx != 2.8.4\npydot\npygments\npytest !=5.3.4\npytest-xdist\nz3-solver == 4.8.10\n", + "description": "Research Decompiler to generate a C-like function representation", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1767232606, + "license": { + "name": "LGPL-2.1", + "text": "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.\n\nThis library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA" + }, + "longdescription": "# dewolf\n\ndewolf is a research decompiler we developed during a research cooperation from 2019 to 2021 between Germany (Fraunhofer FKIE) and Singapore (DSO National Laboratories).\n\nThe restructuring of dewolf is based on the former DREAM/DREAM++ approach [Yakdan et al. NDSS 2015, IEEE (SP) 2016].\n\nThe decompiler dewolf is implemented as a plugin for Binary Ninja and uses their Medium-Level intermediate language as the starting point.\nAlthough we consider dewolf to be pretty stable, it is still a research prototype and not extensively optimized for production use.\nConsequently, you will likely observe a few bugs or even decompilation failures when applying dewolf on real-world binaries.\n\n**If you encounter any bugs, please report them to us so that we can further improve dewolf. :)**\n\n## Usage\n\nAfter enabling the dewolf decompilation dock widget via **View > Other Docks > Show Dewolf**, the decompiled code for the currently active symbol will be displayed.\nIn the dewolf dock, it is possible to navigate through functions by double-clicking them.\n\n![Widget Menu](https://user-images.githubusercontent.com/12004321/145460440-be4b7dfd-bf7e-497f-a7af-1911bf3efc50.png)\n\nThe automatic decompilation of selected functions can be toggled with the *follow* button.\nDecompiled code is cached and can be generated again with the *decompile* button, e.g. after patching instructions in the binary view.\n\n![Widget](https://user-images.githubusercontent.com/12004321/145460476-f869e5cc-d585-4f53-8920-6ecfa4b346d5.png)\n\n## Configuration\ndewolf has multiple configuration options of which some are configurable via the GUI.\n\nYou can configure dewolf from the Binary Ninja GUI by navigating to **Edit > Preferences > Settings** or by pressing Ctrl + ,.\nSearch for **dewolf** in the search bar and all dewolf related settings will be displayed.\n\n## Support\n\nIf you have any suggestions, or bug reports, please create an issue in the [Issue Tracker](https://github.com/fkie-cad/dewolf/issues).\n\nIn case you have any questions or other problems, feel free to send an email to:\n\n[dewolf@fkie.fraunhofer.de](mailto:dewolf@fkie.fraunhofer.de).\n\n### Changelog\nAutomatic release", + "minimumbinaryninjaversion": 4271, + "name": "dewolf Decompiler", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/c51e7985-e69c-47dd-9c8e-c1125324462d/versions/f505642f-2482-45fa-aee0-5fa16ea327fc/platforms/3025/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/c51e7985-e69c-47dd-9c8e-c1125324462d/versions/f505642f-2482-45fa-aee0-5fa16ea327fc/platforms/3025/download?notrack=1", + "path": "fkiecad_dewolf", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 216, + "updated_at": "2026-01-01 01:56:46+00:00" + }, + "projectUrl": "https://github.com/fkie-cad/dewolf", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "2026-01-01", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Fabian Freyer", + "dependencies": "", + "description": "Show current IL instruction hierarchy in sidebar", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1644114999, + "license": { + "name": "MIT", + "text": "Copyright (c) 2022 Fabian Freyer\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" + }, + "longdescription": "# IL Hierarchy\n\n_Show current IL instruction hierarchy in sidebar_\n\n## Description:\n\nDisplays the currently selected IL hierarchy in a sidebar pane.\n\n## Minimum Version\n\n3.0\n\n## License\n\nThis plugin is released under an [MIT license](./LICENSE).\n\n## Metadata Version\n\n2", + "minimumbinaryninjaversion": 3233, + "name": "ilhierarchy", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/83c3e228-9b15-4b2e-9f50-e5df69c227d1/versions/4c91fb17-510a-4e86-bdb8-8da739383cfe/platforms/1670/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/83c3e228-9b15-4b2e-9f50-e5df69c227d1/versions/4c91fb17-510a-4e86-bdb8-8da739383cfe/platforms/1670/download?notrack=1", + "path": "fabianfreyer_binjailhierarchy", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2022-02-06 02:36:39+00:00" + }, + "projectUrl": "https://github.com/fabianfreyer/binja-il-hierarchy", + "subdir": "", + "type": [ + "ui", + "core" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Eric Biazo", + "dependencies": "", + "description": "Generates calltree. Alternative view for callgraph", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1725471478, + "license": { + "name": "MIT", + "text": "Copyright 2021 Eric Biazo\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Calltree\n\nAuthor: **Eric Biazo**\n\nCalltree generator for function\n\n## Description:\n\nGenerates call tree. Alternative view for callgraph.\n\n## Releases\n\n* 2.1 -- Bug Fix\n* 2.0 -- Multiview Support\n* 1.2 -- Bug Fixes\n* 1.1 -- Refactoring\n* 1.0 -- Public Release\n* 0.0 -- Beta Release\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n * 2966\n\n## License\n\nThis plugin is released under an [MIT license](./LICENSE).\n\n## Caution\n\nWhen working with really big binaries with alot of xrefs, you would want to change recursive depth to smaller number or else Binary Ninja might hang.\n## Description\n\nCalltree is a plugin that generates call tree for a function. It is an alternative view for callgraph. It is a multiview plugin, so you can have multiple calltree views open at the same time.\n\n### Default View\n\n![](images/2023-03-06-23-31-27.png)\n\n### Expand and Collapse tree\n\n**Expand**\n\n![](images/2023-03-06-23-44-02.png)\n\n**Collapse**\n\n![](images/2023-03-06-23-44-24.png)\n\n**Search**\n\n![](images/2022-02-09-16-53-33.png)\n\n### Recursion Depth\n\n**Show Only Root Level**\n\n![](images/2022-02-09-16-57-21.png)\n\n**Default Recursion Depth in Setting**\n\n![](images/2022-02-09-16-59-03.png)\n\n### Pinning and Removing Calltree View\n\n**Pinning Calltree View**\n\n![](images/2023-03-06-23-40-42.png)\n\n**Pinned Calltree Name Max Length**\n\n![](images/2023-03-06-23-46-04.png)\n\n\n## Contributors\n\nThanks everyone that have contributed to calltree!\n\n* galenbwill\n* droogie\n* bambu\n* crimsonskylark\n", + "minimumbinaryninjaversion": 2966, + "name": "Calltree", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/70cb18e2-9f85-4ca9-b3b0-2d9a43587c3a/versions/e4ae7c9d-2e30-4ac9-8d5b-526a79945ea9/platforms/1675/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/70cb18e2-9f85-4ca9-b3b0-2d9a43587c3a/versions/e4ae7c9d-2e30-4ac9-8d5b-526a79945ea9/platforms/1675/download?notrack=1", + "path": "elbiazo_calltree", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 45, + "updated_at": "2024-09-04 17:37:58+00:00" + }, + "projectUrl": "https://github.com/elbiazo/calltree", + "subdir": "", + "type": [ + "binaryview", + "helper", + "ui" + ], + "version": "2.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Alexandre Gazet", + "dependencies": "", + "description": "Helper plugin to synchronize Binary Ninja with a debugging session", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1642809517, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020-2022 Alexandre Gazet.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin is a part of ret-sync, a set of plugins that help to synchronize a debugging session (WinDbg/GDB/LLDB/OllyDbg/OllyDbg2/x64dbg) with a disassembler (IDA/Ghidra/Binary Ninja).", + "minimumbinaryninjaversion": 2, + "name": "ret-sync", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/c8f0b40c-7063-415f-9982-0101ab1019a1/versions/bc4433d8-af46-484b-a596-6ef2f105863a/platforms/1685/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/c8f0b40c-7063-415f-9982-0101ab1019a1/versions/bc4433d8-af46-484b-a596-6ef2f105863a/platforms/1685/download?notrack=1", + "path": "bootleg_retsync", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 2294, + "updated_at": "2022-01-21 23:58:37+00:00" + }, + "projectUrl": "https://github.com/bootleg/ret-sync", + "subdir": "ext_bn/retsync", + "type": [ + "helper" + ], + "version": "0.1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Brandon Miller", + "dependencies": "", + "description": "Recover Linux kernel build configurations", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1642134808, + "license": { + "name": "MIT", + "text": "Copyright (c) 2022 Brandon Miller\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# bn-kconfig-recover ![Python Lint](https://github.com/zznop/bn-kconfig-recover/workflows/pylint/badge.svg)\n\n![demo bn-kconfig-recover](bn-kconfig-recover.gif)\n\n## Description\n\nBinary Ninja plugin that analyzes Linux kernel binaries to automate recovery of the build configuration (`.config`)\n\n## Usage\n\n```\nusage: bn_kconfig_recover.py [-h] [-d] bndb kconfig\n\npositional arguments:\n bndb File path to kernel ELF or Binary Ninja database\n kconfig File path to save recovered kernel configuration\n\noptional arguments:\n -h, --help show this help message and exit\n -d, --debug Enable debug logging\n```\n\n\n", + "minimumbinaryninjaversion": 3164, + "name": "BN KConfig Recover", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/1156ffe2-abe1-4587-951a-b87731705a8b/versions/e99de333-1047-4a6d-af3a-4bdd95333bc3/platforms/1689/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/1156ffe2-abe1-4587-951a-b87731705a8b/versions/e99de333-1047-4a6d-af3a-4bdd95333bc3/platforms/1689/download?notrack=1", + "path": "zznop_bnkconfigrecover", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 24, + "updated_at": "2022-01-14 04:33:28+00:00" + }, + "projectUrl": "https://github.com/zznop/bn-kconfig-recover", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Gamozo Labs, LLC", + "dependencies": "", + "description": "Load old COFF .dbg files as well as CAB-ed .db_ files!", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1637016799, + "license": { + "name": "MIT", + "text": "Copyright (c) 2021 Gamozo Labs\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Summary\n\nThis is a very simple tool that prints out function, global, and source line\ninformation from a `.dbg` \"DI\" COFF debug file.\n\nThis can handle both `DI` magic files and CAB (cabinet) files with `DI` files\ninside of them.\n\n# Format\n\nThis outputs a format:\n\n```\nF \nG \nS :\n```\n\n# Binary Ninja Plugin\n\nIncluded is a `binaryninja` plugin. Copy the folder `binaryninja/dbg_load` to\nyour `~/.binaryninja/plugins` folder.\n\nThen install this tool to your `PATH` by `cargo install --path .`.\n\nYou can then use `Tools > Plugins > Load COFF DBG File` to load a `.DBG` or\n`.DB_` file into your program. For best results turn off auto-analysis and\nload the symbols before analyzing the binary as it will let Binary Ninja know\nexactly where functions are!\n\n![Binary Ninja screenshot showing symbolized and typed output](/binaryninja/example.png)\n\n# Example\n\n```\ncargo run --release /home/pleb/nt/isos/fre/SUPPORT/DEBUG/MIPS/SYMBOLS/EXE/WRITE.DB_\nF 000010dc WinMain\nF 000011fc __F3_$WinMainCRTStartup\nF 00001220 WinMainCRTStartup\nF 00001434 _XcptFilter\nF 00001444 __C_specific_handler\nF 00001454 _setargv\nF 0000145c _matherr\nF 00001464 _initterm\nG 00000000 header\nG 00001000 __imp_GetModuleHandleA\nG 00001004 __imp_GetStartupInfoA\nG 00001008 __imp_GetCommandLineA\nG 0000100c \u007fKERNEL32_NULL_THUNK_DATA\nG 00001010 __imp__fmode\nG 00001014 __imp_exit\nG 00001018 __imp___setusermatherr\nG 0000101c __imp__exit\nG 00001020 __imp__acmdln\nG 00001024 __imp___getmainargs\nG 00001028 __imp__initterm\nG 0000102c __imp__commode\nG 00001030 __imp___set_app_type\nG 00001034 __imp__XcptFilter\nG 00001038 __imp___C_specific_handler\nG 0000103c \u007fMSVCRT_NULL_THUNK_DATA\nG 00001040 __imp_ShellExecuteA\nG 00001044 \u007fSHELL32_NULL_THUNK_DATA\nG 000010dc .text\nG 000011fc .text\nG 00001454 .text\nG 0000145c .text\nG 00001474 ___S2_$WinMainCRTStartupd\nG 00001488 __IMPORT_DESCRIPTOR_SHELL32\nG 0000149c __IMPORT_DESCRIPTOR_KERNEL32\nG 000014b0 __IMPORT_DESCRIPTOR_MSVCRT\nG 000014c4 __NULL_IMPORT_DESCRIPTOR\nG 00001530 .idata$6\nG 00001560 .idata$6\nG 00001606 .idata$6\nG 00002000 __xc_a\nG 00002004 __xc_z\nG 00002008 __xi_a\nG 0000200c __xi_z\nG 00002010 _$$1$d1\nG 0000201c _commode\nG 00002020 _dowildcard\nG 00002024 _fmode\nG 00002028 _newmode\nG 0000202c __defaultmatherr\nG 00002030 __onexitbegin\nG 00002034 __onexitend\nG 00004120 .rsrc$02\nG 00006000 end\nS 000010dc D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:6\nS 000010e8 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:8\nS 000010f8 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:10\nS 000010fc D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:8\nS 00001104 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:10\nS 00001108 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:37\nS 0000110c D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:16\nS 0000113c D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:21\nS 00001144 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:22\nS 00001148 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:24\nS 0000114c D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:23\nS 00001150 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:25\nS 0000115c D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:26\nS 00001170 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:27\nS 00001174 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:32\nS 00001184 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:34\nS 00001188 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:33\nS 0000118c D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:34\nS 0000119c D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:37\nS 000011a0 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:36\nS 000011a4 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:37\nS 000011b0 D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:40\nS 000011ec D:\\nt\\private\\windows\\shell\\accesory\\write\\write.c:42\nS 000011fc crtexe.c:345\nS 00001220 crtexe.c:175\nS 00001228 crtexe.c:199\nS 0000123c crtexe.c:209\nS 00001244 crtexe.c:214\nS 00001254 crtexe.c:209\nS 00001264 crtexe.c:214\nS 00001268 crtexe.c:215\nS 00001278 crtexe.c:234\nS 0000127c crtexe.c:215\nS 00001280 crtexe.c:241\nS 0000128c crtexe.c:242\nS 000012a4 crtexe.c:251\nS 000012b8 crtexe.c:268\nS 000012c0 crtexe.c:266\nS 000012c8 crtexe.c:268\nS 000012e8 crtexe.c:266\nS 000012ec crtexe.c:274\nS 00001300 crtexe.c:287\nS 00001308 crtexe.c:274\nS 0000130c crtexe.c:317\nS 00001310 crtexe.c:287\nS 00001314 crtexe.c:290\nS 00001320 crtexe.c:296\nS 00001350 crtexe.c:301\nS 00001358 crtexe.c:302\nS 0000135c crtexe.c:304\nS 00001360 crtexe.c:303\nS 00001364 crtexe.c:305\nS 00001370 crtexe.c:306\nS 00001384 crtexe.c:312\nS 00001394 crtexe.c:314\nS 00001398 crtexe.c:313\nS 0000139c crtexe.c:314\nS 000013ac crtexe.c:317\nS 000013b0 crtexe.c:316\nS 000013b4 crtexe.c:317\nS 000013c0 crtexe.c:330\nS 000013f8 crtexe.c:343\nS 0000140c crtexe.c:344\nS 00001414 crtexe.c:350\nS 00001428 crtexe.c:354\nS 00001454 dllargv.c:49\nS 0000145c merr.c:33\n```\n\n", + "minimumbinaryninjaversion": 1200, + "name": "DBG Loader", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/575790c4-8a66-4c29-9351-fd31695601cf/versions/9649e9fb-ad8c-4c04-b1e1-701973bbe452/platforms/1693/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/575790c4-8a66-4c29-9351-fd31695601cf/versions/9649e9fb-ad8c-4c04-b1e1-701973bbe452/platforms/1693/download?notrack=1", + "path": "gamozolabs_coff_nm", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 7, + "updated_at": "2021-11-15 22:53:19+00:00" + }, + "projectUrl": "https://github.com/gamozolabs/coff_nm", + "subdir": "binaryninja/dbg_load", + "type": [ + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Eric Hennenfent", + "dependencies": "", + "description": "Displays a window that explains in simple English what an assembly instruction does", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1633829742, + "license": { + "name": "Apache 2", + "text": "https://github.com/ehennenfent/binja_explain_instruction/blob/master/LICENSE" + }, + "longdescription": "Parses the Lifted IL for an instruction and uses it to (attempt to) generate an English description of what an instruction does. See also: [README.md](https://github.com/ehennenfent/binja_explain_instruction/blob/master/README.md)", + "minimumbinaryninjaversion": 3053, + "name": "Explain Instruction", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/04d71b81-c75e-415b-8fa2-17fa7f9cd532/versions/f22bf28d-cf92-45f9-90e8-90090ea2cafc/platforms/1700/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/04d71b81-c75e-415b-8fa2-17fa7f9cd532/versions/f22bf28d-cf92-45f9-90e8-90090ea2cafc/platforms/1700/download?notrack=1", + "path": "ehennenfent_binja_explain_instruction", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 57, + "updated_at": "2021-10-10 01:35:42+00:00" + }, + "projectUrl": "https://github.com/ehennenfent/binja_explain_instruction", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "0.2.1-alpha", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "EliseZeroTwo", + "dependencies": "", + "description": "iBoot/SecureROM Loader", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1677262467, + "license": { + "name": "ISC", + "text": "Copyright 2020 EliseZeroTwo\n\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE." + }, + "longdescription": "# iBoot-Binja-Loader\n### Author: **EliseZeroTwo** & **matteyeux**\n\nBinary Ninja Loader for iBoot & SecureROM\n\n## Credits\n- [argp for iBoot64helper](https://github.com/argp/iBoot64helper)\n\n## Installation Instructions\n### Windows\n\nClone this repository into `%APPDATA%/Binary Ninja/plugins/`\n\n### Darwin\n\nClone this repository into `~/Library/Application Support/Binary Ninja/plugins/`\n\n### Linux\n\nClone this repository into `~/.binaryninja/plugins/`\n## Minimum Version\n\nBinary Ninja v1200\n\n\n\n## License\n\nThis plugin is released under the [ISC license](https://github.com/EliseZeroTwo/iBoot-Binja-Loader/blob/master/LICENSE)\n\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 1200, + "name": "iBootLoader", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/4d8eb403-8c02-4395-a687-0dea2162bc35/versions/aa43144f-0a76-4ce2-8a90-6b7ca45833f6/platforms/1706/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/4d8eb403-8c02-4395-a687-0dea2162bc35/versions/aa43144f-0a76-4ce2-8a90-6b7ca45833f6/platforms/1706/download?notrack=1", + "path": "EliseZeroTwo_iBootBinjaLoader", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 34, + "updated_at": "2023-02-24 18:14:27+00:00" + }, + "projectUrl": "https://github.com/EliseZeroTwo/iBoot-Binja-Loader", + "subdir": "", + "type": [ + "binaryview", + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Markus Gaasedelen", + "dependencies": "", + "description": "A Coverage Explorer for Reverse Engineers", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1707156737, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024> Markus Gaasedelen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Lighthouse - A Coverage Explorer for Reverse Engineers\n\n

\n\"Lighthouse\n

\n\n## Overview\n\nLighthouse is a powerful code coverage explorer for [IDA Pro](https://www.hex-rays.com/products/ida/) and [Binary Ninja](https://binary.ninja/), providing software researchers with uniquely interactive controls to study execution maps for native applications without requiring symbols or source.\n\nFor additional usage information, please check out the full [README](https://github.com/gaasedelen/lighthouse) on GitHub.\n", + "minimumbinaryninjaversion": 4526, + "name": "Lighthouse", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/0e150e25-bdff-445b-8c6f-096c20bd1d23/versions/5ea5cfb5-ca82-41c4-a84e-e8052b95e9b9/platforms/1719/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/0e150e25-bdff-445b-8c6f-096c20bd1d23/versions/5ea5cfb5-ca82-41c4-a84e-e8052b95e9b9/platforms/1719/download?notrack=1", + "path": "gaasedelen_lighthouse", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 2489, + "updated_at": "2024-02-05 18:12:17+00:00" + }, + "projectUrl": "https://github.com/gaasedelen/lighthouse", + "subdir": "binjastub", + "type": [ + "helper" + ], + "version": "0.9.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Glenn Smith", + "dependencies": "", + "description": "Makes your integers print as hex in the python console.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1698799171, + "license": { + "name": "MIT", + "text": "MIT License\n\nCopyright (c) 2021 Glenn Smith\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Hex Integer Display\nA simple python displayhook wrapper for printing ints in hex. Works on nested types, like\narrays, tuples, and dictionaries. Also prints the contents of generator objects.\n\n # Prints integers as hex\n >>> 123\n 123 / 0x7b\n \n # Decimal printing is optional (see Settings)\n >>> 123\n 0x7b\n \n # Works on both the repl and the print function \n >>> print(123)\n 123 / 0x7b\n \n # Lists, dicts, and tuples supported \n >>> list(range(10))\n [0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9]\n \n # Generator unwrapping, because why not?\n >>> bv.functions\n (generator FunctionList) [,\n ,\n ,\n ,\n ...]", + "minimumbinaryninjaversion": 2846, + "name": "Hex Integers in Python Console", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/580a23a9-9524-4436-b7f9-f837f075035e/versions/20651102-57d0-4746-adff-bf20d1c52ad6/platforms/1723/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/580a23a9-9524-4436-b7f9-f837f075035e/versions/20651102-57d0-4746-adff-bf20d1c52ad6/platforms/1723/download?notrack=1", + "path": "CouleeApps_hex_integers", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 4, + "updated_at": "2023-11-01 00:39:31+00:00" + }, + "projectUrl": "https://github.com/CouleeApps/hex_integers", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.10", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "actae0n", + "dependencies": "", + "description": "XNU Sysctl Hunter is a tool for analyzing Kexts that will automatically identify, type, and tag sysctl OIDs, as well as correct the prototypes of their OID handler functions. It contains a Binary Ninja plugin action, as well as a headless script for cli...", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1626914641, + "license": { + "name": "MIT", + "text": "Copyright 2021 actae0n\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "XNU Sysctl Hunter\n====================\nXNU Sysctl Hunter is a tool for analyzing Kexts that will automatically identify, type, and tag sysctl OIDs, as well as correct the prototypes of their OID handler functions. It contains a Binary Ninja plugin action, as well as a headless script for batch processing.\n\n# Screenshots\nOID structures are created, and their location is tagged for review later. A comment denotes the path to the OID in the MIB tree:\n![Tagged OIDs](screenshots/tagged_oids.png?raw=true \"OIDs get tagged\")\n\nOID handler function prototypes are corrected:\n![Prototypes Corrected](screenshots/prototype.png?raw=true \"OID Handler Prototypes Corrected\")\n\n## Headless Usage\nCall it from the command line targeting a single kext:\n```\n$ ./hunter.py /System/Library/Extensions/L2TP.kext\n[*] Creating necessary type definitions\n[*] Creating OID structs\n[+] Identified 3 sysctl OIDs\n[*] Tagging OIDs\n[*] Correcting prototype for 1 OID handlers\n[*] Dumping OIDs\n{\"flags\": [\"CTLFLAG_RD\", \"CTLFLAG_WR\", \"CTLFLAG_NOAUTO\", \"CTLFLAG_KERN\", \"CTLFLAG_OID2\", \"CTLTYPE_INT\"], \"type\": \"leaf\", \"handler\": \"_\", \"name\n\": \"nb_threads\", \"description\": \"nb_threads\", \"fmt\": \"I\", \"path\": \"net.ppp.l2tp.nb_threads\"}\n{\"flags\": [\"CTLFLAG_RD\", \"CTLFLAG_WR\", \"CTLFLAG_NOAUTO\", \"CTLFLAG_KERN\", \"CTLFLAG_OID2\", \"CTLTYPE_INT\"], \"type\": \"leaf\", \"name\": \"thread_outq_\nsize\", \"description\": \"thread_outq_size\", \"fmt\": \"I\", \"path\": \"net.ppp.l2tp.thread_outq_size\"}\n{\"flags\": [\"CTLFLAG_RD\", \"CTLFLAG_WR\", \"CTLFLAG_OID2\", \"CTLTYPE_NODE\"], \"type\": \"container\", \"name\": \"l2tp\", \"description\": \"l2tp\", \"fmt\": \"N\"\n, \"path\": \"net.ppp.l2tp\"}\n```\n\nSuppress status lines with the `quiet` option:\n```\n$ ./hunter.py -q /System/Library/Extensions/L2TP.kext\n\n{\"flags\": [\"CTLFLAG_RD\", \"CTLFLAG_WR\", \"CTLFLAG_NOAUTO\", \"CTLFLAG_KERN\", \"CTLFLAG_OID2\", \"CTLTYPE_INT\"], \"type\": \"leaf\", \"handler\": \"_\", \"name\n\": \"nb_threads\", \"description\": \"nb_threads\", \"fmt\": \"I\", \"path\": \"net.ppp.l2tp.nb_threads\"}\n{\"flags\": [\"CTLFLAG_RD\", \"CTLFLAG_WR\", \"CTLFLAG_NOAUTO\", \"CTLFLAG_KERN\", \"CTLFLAG_OID2\", \"CTLTYPE_INT\"], \"type\": \"leaf\", \"name\": \"thread_outq_\nsize\", \"description\": \"thread_outq_size\", \"fmt\": \"I\", \"path\": \"net.ppp.l2tp.thread_outq_size\"}\n{\"flags\": [\"CTLFLAG_RD\", \"CTLFLAG_WR\", \"CTLFLAG_OID2\", \"CTLTYPE_NODE\"], \"type\": \"container\", \"name\": \"l2tp\", \"description\": \"l2tp\", \"fmt\": \"N\"\n, \"path\": \"net.ppp.l2tp\"}\n```\n\nSave the BNDB for more reversing later (OIDs are marked in the Tags section):\n```\n$ ./hunter.py -q -o /tmp/ /System/Library/Extensions/L2TP.kext\n\n{\"flags\": [\"CTLFLAG_RD\", \"CTLFLAG_WR\", \"CTLFLAG_NOAUTO\", \"CTLFLAG_KERN\", \"CTLFLAG_OID2\", \"CTLTYPE_INT\"], \"type\": \"leaf\", \"handler\": \"_\", \"name\n\": \"nb_threads\", \"description\": \"nb_threads\", \"fmt\": \"I\", \"path\": \"net.ppp.l2tp.nb_threads\"}\n{\"flags\": [\"CTLFLAG_RD\", \"CTLFLAG_WR\", \"CTLFLAG_NOAUTO\", \"CTLFLAG_KERN\", \"CTLFLAG_OID2\", \"CTLTYPE_INT\"], \"type\": \"leaf\", \"name\": \"thread_outq_\nsize\", \"description\": \"thread_outq_size\", \"fmt\": \"I\", \"path\": \"net.ppp.l2tp.thread_outq_size\"}\n{\"flags\": [\"CTLFLAG_RD\", \"CTLFLAG_WR\", \"CTLFLAG_OID2\", \"CTLTYPE_NODE\"], \"type\": \"container\", \"name\": \"l2tp\", \"description\": \"l2tp\", \"fmt\": \"N\"\n, \"path\": \"net.ppp.l2tp\"}\n\n$ ls /tmp/\nL2TP.kext.bndb\n```\n\nBatch process a whole directory of Kexts and save the results\n```\n$ ./hunter.py -q -o ./bndbs /System/Library/Extensions/*\n```\n\nFilter JSON output to analyze attributes in bulk\n```\n$ ./hunter.py -q /System/Library/Extensions/L2TP.kext | jq -r '.path'\nnet.ppp.l2tp.nb_threads\nnet.ppp.l2tp.thread_outq_size\nnet.ppp.l2tp\n```\n", + "minimumbinaryninjaversion": 2805, + "name": "XNU Sysctl Hunter", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/fb0ac1fc-9e92-4ffe-a302-17f73f0f3095/versions/6cf7b16d-380c-4d4d-a2d2-fb3566716262/platforms/1731/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/fb0ac1fc-9e92-4ffe-a302-17f73f0f3095/versions/6cf7b16d-380c-4d4d-a2d2-fb3566716262/platforms/1731/download?notrack=1", + "path": "xpcmdshell_SysctlHunter", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 10, + "updated_at": "2021-07-22 00:44:01+00:00" + }, + "projectUrl": "https://github.com/xpcmdshell/SysctlHunter", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Linus S. (aka PistonMiner)", + "dependencies": "", + "description": "GameCube symbol map loader", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1625773938, + "license": { + "name": "MIT", + "text": "Copyright (c) 2021 Linus S. (aka PistonMiner)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# GameCube symbol map loader (v1.0.0)\nAuthor: **Linus S. (aka PistonMiner)**\n\n_GameCube symbol map loader_\n\n## Description:\n\nLoader for `.map` files as used on GameCube and Wii\n\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 2846\n\n\n## License\n\nThis plugin is released under a MIT license.\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 2846, + "name": "GameCube symbol map loader", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/9430b90c-72e0-4b77-b1eb-b70562d5bbce/versions/46f9fbd3-f220-4b03-bf37-af5551a427d1/platforms/1735/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/9430b90c-72e0-4b77-b1eb-b70562d5bbce/versions/46f9fbd3-f220-4b03-bf37-af5551a427d1/platforms/1735/download?notrack=1", + "path": "PistonMiner_binaryninjagcloadmap", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 1, + "updated_at": "2021-07-08 19:52:18+00:00" + }, + "projectUrl": "https://github.com/PistonMiner/binaryninja-gc-load-map", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Linus S. (aka PistonMiner)", + "dependencies": "", + "description": "GameCube DOL file BinaryView", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1625773954, + "license": { + "name": "MIT", + "text": "Copyright (c) 2021 Linus S. (aka PistonMiner)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# GameCube DOL (v1.0.0)\nAuthor: **Linus S. (aka PistonMiner)**\n\n_GameCube DOL file BinaryView_\n\n## Description:\n\nBinary View for `.dol` files as used on GameCube and Wii\n\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 2846\n\n\n## License\n\nThis plugin is released under a MIT license.\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 2846, + "name": "GameCube DOL", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/57e3698b-6ded-4254-95a5-c931236a8ff8/versions/8b71f831-1bda-4f06-a304-8e9ff0c22126/platforms/1741/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/57e3698b-6ded-4254-95a5-c931236a8ff8/versions/8b71f831-1bda-4f06-a304-8e9ff0c22126/platforms/1741/download?notrack=1", + "path": "PistonMiner_binaryninjagcdol", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 3, + "updated_at": "2021-07-08 19:52:34+00:00" + }, + "projectUrl": "https://github.com/PistonMiner/binaryninja-gc-dol", + "subdir": "", + "type": [ + "binaryview" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "amtal", + "dependencies": "", + "description": "Configurable soft core for Xilinx FPGAs.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1653804366, + "license": { + "name": "MIT", + "text": "Copyright (c) 2021 amtal\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# \u03bcBlaze Architecture Plugin\n\n[MicroBlaze](https://en.wikipedia.org/wiki/MicroBlaze) is a configurable [soft processor](https://en.wikipedia.org/wiki/Soft_microprocessor) core from Xilinx going all the way back to their Spartan-II series of [FPGA](https://en.wikipedia.org/wiki/Field-programmable_gate_array)s. It can be found in a variety of roles within larger FPGA designs: from bare-bones microcontroller, to full Linux application processor, to early-boot [embedded controller](https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841724/PMU+Firmware).\n\n![Example Disassembly and HLIL](https://raw.githubusercontent.com/amtal/microblaze/master/img/header.gif)\n\n## Features\n\nThis plugin works on Linux binaries:\n\n* Relocations\u2020 for working Triage Summary imports!\n* Syscall arguments!\u2021\n* That one cursed ELF `e_machine` value that's no longer used!\n\nThis plugin supports bare-metal firmware:\n\n* Bus transfer and MSR intrinsics!\n* Intrinsics for privileged operations!\n* 64-bit instruction\u2260 extensions!\n\nMinor, unimportant quality of life things:\n\n* Nice disassembly of relative branches and 32-bit immediates!\n* Delay slots are properly lifted!\n* Disassembles\u30ad all configuration options in [UG984 (v2020.2)](https://www.xilinx.com/support/documentation/sw_manuals/xilinx2020_2/ug984-vivado-microblaze-ref.pdf) even the weird ones!\n\n## Usage\n\nAll ELF files should Just Work\u2122 but otherwise:\n\n- Likely use `ublaze32be` architecture for older designs.\n- Likely use `ublaze32le` architecture for newer Zynq designs.\n- The `linux-ublaze32xx` default platforms aren't meaningfully different from `arch.standalone_platform`, you don't need to override them.\n- If HLIL looks broken, check source to see if that configuration option has been properly implemented yet.\n\nIf you want to cite this plugin please use:\n\n
\n  @online{ublaze-arch-plugin,\n    title     = {{\\mu}Blaze Architecture Plugin for Binary Ninja},\n    url       = {https://github.com/amtal/microblaze},\n    author    = {amtal},\n    doi       = {10.5281/zenodo.4749823},\n    year      = 2021,\n  }\n
\n\n## Caveats\n\n*\u2020 relocations not well-tested, probably buggy*\n\n*\u2021 minimum viable product, BYOSyscall typelib/headers*\n\n*\u2260 literally just the added 64-from-32 instructions, but 64-bit architecture variant should be trivial if anyone needs it now*\n\n*\u30adbut definitely does not lift correctly, if someone has a clever cross-config validation plan lmk*\n", + "minimumbinaryninjaversion": 2800, + "name": "\u03bcBlaze Architecture Plugin", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/c8bf367a-9075-411e-8990-e64eebfa08b1/versions/6d287e85-9b87-46f3-8535-50efd81de323/platforms/1747/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/c8bf367a-9075-411e-8990-e64eebfa08b1/versions/6d287e85-9b87-46f3-8535-50efd81de323/platforms/1747/download?notrack=1", + "path": "amtal_microblaze", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 10, + "updated_at": "2022-05-29 06:06:06+00:00" + }, + "projectUrl": "https://github.com/amtal/microblaze", + "subdir": "", + "type": [ + "architecture" + ], + "version": "1.0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "psifertex", + "dependencies": "", + "description": "Tags functions using emoji for a number of interesting characteristics", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1615525176, + "license": { + "name": "Apache-2.0", + "text": "Copyright 2021 psifertex\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\n\thttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + }, + "longdescription": "# Tag Team\r\nSample function created on [stream](https://www.youtube.com/watch?v=BEB52ZYr2Gw).\r\n\r\n [Tag List](https://raw.githubusercontent.com/psifertex/tagteam/master/images/taglist.png)\r\n\r\n ![Tags At Location](https://raw.githubusercontent.com/psifertex/tagteam/master/images/tagsat.png)", + "minimumbinaryninjaversion": 1555, + "name": "Tag Team", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/24e63a72-a889-4ec3-a602-abed963e24e1/versions/9a9d3ae4-6840-40ff-889f-4338ae3484ed/platforms/1789/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/24e63a72-a889-4ec3-a602-abed963e24e1/versions/9a9d3ae4-6840-40ff-889f-4338ae3484ed/platforms/1789/download?notrack=1", + "path": "psifertex_tagteam", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 2, + "updated_at": "2021-03-12 04:59:36+00:00" + }, + "projectUrl": "https://github.com/psifertex/tagteam", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.1.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Brandon Miller (zznop)", + "dependencies": "", + "description": "Helper plugin for analyzing UEFI firmware", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1682696285, + "license": { + "name": "MIT", + "text": "Copyright 2021 Brandon Miller (zznop)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# bn-uefi-helper ![Python Lint](https://github.com/zznop/bn-uefi-helper/workflows/pylint/badge.svg)\n\n## Description\n\nHelper plugin for analyzing UEFI firmware. This plugin contains the following features:\n\n* Apply the correct prototype to the entry point function\n* Fix segments so all segments are RWX and have the correct semantics\n * This allows for global function pointers to be rendered correctly\n* Apply types for core UEFI services (from EDK-II)\n* Locate known protocol GUIDs and assign the GUID type and a symbol\n* Locate global assigments in entry and initialization functions and assign types\n * `EFI_SYSTEM_TABLE`, `EFI_RUNTIME_SERVICES`, `EFI_BOOT_SERVICES`, etc...\n* Loader for Terse Executables\n\n![demo bn-uefi-helper](screen.gif)\n\n## Minimum Version\n\nTested on 2.3.2660\n\n## License\n\nThis plugin is released under a MIT license.\n\n## Related Projects\n\n* [ghidra-firmware-utils](https://github.com/al3xtjames/ghidra-firmware-utils)\n* [efiXplorer](https://github.com/binarly-io/efiXplorer)\n", + "minimumbinaryninjaversion": 2660, + "name": "bn-uefi-helper", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/822ec957-e11e-4abe-8235-187cee459f65/versions/e400cde3-e9ec-42ba-a5b1-018b4cd0a4a7/platforms/1755/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/822ec957-e11e-4abe-8235-187cee459f65/versions/e400cde3-e9ec-42ba-a5b1-018b4cd0a4a7/platforms/1755/download?notrack=1", + "path": "zznop_bnuefihelper", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 89, + "updated_at": "2023-04-28 15:38:05+00:00" + }, + "projectUrl": "https://github.com/zznop/bn-uefi-helper", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.3", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "Yu-Jye Tung", + "dependencies": "toolz==0.10.0\nclick==7.1.2\n", + "description": "detect opaque predicates", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1618026013, + "license": { + "name": "MIT", + "text": "Copyright (c) 2019 Yu-Jye Tung\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "#

Opaque Predicates Detective

\n\n![OP Detective](op_detective.png)\n\n## Introduction: \nPrevious approaches to generically identify opaque predicates work by identifying if a conditional branch contains an invariant expression. Our approach generically identify opaque predicates from a different perspective: __the damage caused by the obfuscation__. The damage is localized at the basic block level (or at the function level) regardless of how an opaque predicate's invariant expression is constructed. This approach allows us to also detect an opaque predicate whose invariant expression is constructed across multiple processes! \n\nIDA also detects opaque predicates from the damage but its approach cannot identify the exact superfluous branch, [which allows for the creation of stealthier opaque predicates](https://yellowbyte.github.io/blog/2018/the_return_of_disassembly_desynchronization/).\n\nThere are two main types of damage resulting from opaque predicates: code bloat or disassembly desynchronization. __Current implementation focuses on detecting opaque predicates when the damage is disassembly desynchronization__. Disassembly desynchronization is a umbrella term for obfuscation techniques that disrupt static disassembly by the creative placement of junk bytes (random data bytes) into the instruction stream such that a disassembler will parse those junk bytes as code instructions. In the case of an opaque predicate, junk bytes are inserted into the target basic block of the opaque predicate's superfluous branch. To identify opaque predicates' superfluous branches, we analyze each conditional branch's outgoing basic blocks for __illogical behaviors__ (which can manifest from code instructions that are actually junk bytes). Note that identifying the superfluous branch will allow us to trace back to the offending opaque predicate.\n\nFuture work will look into detecting opaque predicates when the damage is code bloat.\n\n## Identifying Illogical Behaviors\nWe have a set of rules that checks if a basic block contains the damage performed by opaque predicates. Essentially, the damage translates to illogical code behaviors since current approach is limited to detecting opaque predicates when the damage is [disassembly desynchronization](https://github.com/yellowbyte/reverse-engineering-reference-manual/blob/master/contents/anti-analysis/Anti-Disassembly.md#-disassembly-desynchronization-). \n\nThe names we used for the rules in the [paper](https://archive.bar/pdfs/bar2020-preprint4.pdf) compared to the code are not the same. This means that annoyance might arise if one tries to match a rule described in paper to its actual implementation. \n\nBelow is a Python Dictionary depicting the relationship between the names in code (dictionary key) vs in paper (dictionary value): \n\n```python\nRULES_RELATIONSHIP = {\n # 'names in code' 'names in paper'\n 'weird_cutoff': 'abrupt_basic_block_end',\n 'prob_of_unimpl': 'unimplemented_BNILs_percentage',\n 'priviledged_instructions': 'privileged_instruction_usage',\n 'def_no_use_dep': 'defined_but_unused',\n 'memaccess_self': 'memory_pointer_constraints',\n 'conditional_unused': 'defined_but_unused',\n 'stack_pointer_oddity': 'memory_pointer_constraints',\n 'crazy_mem_offset': 'unreasonable_memory_offset',\n 'type_discrepency_ptr_in_mult_div': 'memory_pointer_constraints',\n 'memaccess_nonexist': 'nonexistence_memory_address',\n 'memaccess_src_dest_discrepancy': 'memory_pointer_constraints',\n 'call_dest_nonexist': 'nonexistence_memory_address',\n 'jmp_dest_nonexist': 'nonexistence_memory_address',\n}\n```\n\nAs seen in the dictionary, it is not a one-to-one relationship. The rule names in code is more fine-grained than the rule names in paper. For example, the 'nonexistence\\_memory\\_address' rule (in paper) corresponds to 'memaccess\\_nonexist', 'call\\_dest\\_nonexist', and 'jmp\\_dest\\_nonexist' rules (in code). \n\n## Detective in Action:\nCurrent implementation is a [BinaryNinja](https://binary.ninja) plugin.\n\nHow to run plugin: \n![Plugin Run](whole.png)\n\nOutput:\n![Plugin Output](current_output.png)\n\nNote that the printed virtual addresses (highlighed in green) are the target addresses of the superfluous branches. (The addresses can easily be changed to the addresses of the opaque conditional statements if desired.)\n\n## Reference \\[[link to paper](https://www.ndss-symposium.org/wp-content/uploads/2020/04/bar2020-23004-paper.pdf)\\]\n\n @inproceedings{tungheuristic,\n title={A Heuristic Approach to Detect Opaque Predicates that Disrupt Static Disassembly},\n author={Tung, Yu-Jye and Harris, Ian G}\n booktitle={Proceedings of the NDSS Workshop on Binary Analysis Research},\n year={2020}\n }\n\n__NOTE__: Google Scholar has the incorrect BibTex but unfortunately I cannot update it directly on Google Scholar\n\n", + "minimumbinaryninjaversion": 0, + "name": "Opaque Predicates Detective", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/0e155ba1-1964-4668-b759-e7248b58ab6b/versions/7dbe8d1c-1383-479e-8d6d-75611f9c11bd/platforms/1763/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/0e155ba1-1964-4668-b759-e7248b58ab6b/versions/7dbe8d1c-1383-479e-8d6d-75611f9c11bd/platforms/1763/download?notrack=1", + "path": "yellowbyte_opaquepredicatesdetective", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 31, + "updated_at": "2021-04-10 03:40:13+00:00" + }, + "projectUrl": "https://github.com/yellowbyte/opaque-predicates-detective", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "jonpalmisc", + "dependencies": "", + "description": "Easily capture Binary Ninja screenshots in ultra-high resolution", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1763076139, + "license": { + "name": "MIT", + "text": "Copyright (c) 2021-2023 Jon Palmisciano\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Screenshot Ninja\r\n\r\nScreenshot Ninja makes it easy to capture screenshots inside Binary Ninja.\r\n\r\n## Features\r\n\r\nScreenshot Ninja currently allows you to capture screenshots:\r\n\r\n- of the active linear/graph view;\r\n- of the entire Binary Ninja window; and\r\n- at custom scaling factors, such as 2x or 3x the native resolution.\r\n\r\n## Install\r\n\r\nYou can get Screenshot Ninja by:\r\n\r\n- installing it through Binary Ninja's plugin manager;\r\n- cloning this repository into your user plugins folder; or\r\n- downloading and extracting a release into your user plugins folder.\r\n\r\nIf you plan to use the scripting functionality, the latter two options are\r\nrecommended, as the plugin manager adjusts module names.\r\n\r\n## Usage\r\n\r\nScreenshot Ninja can be used from the context menu or command palette, as well\r\nas from the console as a Python module.\r\n\r\n### From the user interface\r\n\r\nUse the context menu or command palette to find Screenshot Ninja's commands. The\r\n\"save view image\" command family will save an image of the active linear/graph\r\nview, while the \"save window image\" command family will save an image of the\r\nentire Binary Ninja window.\r\n\r\n### As a Python module\r\n\r\nYou can import Screenshot Ninja in the Python console like this:\r\n\r\n``` python\r\nimport screenshot_ninja\r\n```\r\n\r\nYou can then use the `renderActiveView` and `renderActiveWindow` functions as\r\nyou wish. Both functions return a `QPixmap`, which you are responsible for\r\nsaving yourself. Additionally, both functions will throw a `ValueError` if\r\nsomething goes wrong, so be sure to catch it.\r\n\r\n## License\r\n\r\nCopyright © 2021-2023 Jon Palmisciano. Licensed under the MIT License. For\r\nadditional information, see [LICENSE.txt](LICENSE.txt).\n\n### Changelog\nFix plugin metadata, put out new release for plugin manager", + "minimumbinaryninjaversion": 1200, + "name": "Screenshot Ninja", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/626ee029-960c-4e03-8feb-9aadcd3b75a2/versions/6c16a17a-f29e-41c6-8eb5-4785a7cea701/platforms/2815/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/626ee029-960c-4e03-8feb-9aadcd3b75a2/versions/6c16a17a-f29e-41c6-8eb5-4785a7cea701/platforms/2815/download?notrack=1", + "path": "jonpalmisc_screenshot_ninja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 5, + "updated_at": "2025-11-13 23:22:19+00:00" + }, + "projectUrl": "https://github.com/jonpalmisc/screenshot_ninja", + "subdir": "", + "type": [ + "helper" + ], + "version": "2.2.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Terry Chia (Ayrx)", + "dependencies": "git+https://github.com/androguard/androguard@8d091cbb309c0c50bf239f805cc1e0931b8dcddc\n", + "description": "Analysis scripts for Binary Ninja to work with Android NDK libraries.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1648363219, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 Terry Chia\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# JNIAnalyzer\n\nThis is a Binary Ninja extension contains various scripts that assists in\nanalyzing Android NDK applications.\n\nThis is a port of my [JNIAnalyzer][ghidra-jnianalyzer] Ghidra extension. The\nAPK parsing is done with [Androguard][androguard] instead of JADX.\n\n## Installation\n\n1. Install Androguard by cloning the git repository and running the `setup.py`\nscript. The version of Androguard available on PyPI is currently too old to\nwork.\n2. Install [binja-typemanager][binja-typemanager]\nand [binja-typelibs-collection][binja-typelibs-collection]. Alternatively, make\nthe types from the JNI header available to Binary Ninja in another manner.\n3. Install the plugin the typical Binary Ninja way. `install_linux.sh` does\nthe correct things if you are on Linux.\n\n## Usage\n\n### Import APK\n\nRun the \"JNIAnalyzer - Import APK\" command and select the APK file associated\nwith the native library being analyzed.\n\n### Import trace_registernatives\n\nRun the \"JNIAnalyzer - Import trace_registernatives JSON\" command and select\nthe JSON output from [trace_registernatives][trace_registernatives].\n\n### Analyze current function\n\nRun the \"JNIAnalyzer - Analyze RegisterNatives calls in current function\"\ncommand while in a function that calls `RegisterNatives`.\n\n### Binary Ninja Tags\n\nJNI related functions or data structures detected by this extension will be\ntagged with \"JNIAnalyzer\" using Binary Ninja's Tag API which can be viewed\nusing Binary Ninja's tag browser.\n\n[ghidra-jnianalyzer]: https://github.com/Ayrx/JNIAnalyzer\n[androguard]: https://github.com/androguard/androguard\n[binja-typemanager]: https://github.com/Ayrx/binja-typemanager\n[binja-typelibs-collection]: https://github.com/Ayrx/binja-typelibs-collection\n[trace_registernatives]: https://github.com/Ayrx/trace_registernatives\n", + "minimumbinaryninjaversion": 3000, + "name": "JNIAnalyzer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/450d7ea3-f507-4873-b38b-0ea2496497d9/versions/e2129f38-95f9-489d-aab0-3f982aeef0a8/platforms/1774/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/450d7ea3-f507-4873-b38b-0ea2496497d9/versions/e2129f38-95f9-489d-aab0-3f982aeef0a8/platforms/1774/download?notrack=1", + "path": "Ayrx_binjaJNIAnalyzer", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 36, + "updated_at": "2022-03-27 06:40:19+00:00" + }, + "projectUrl": "https://github.com/Ayrx/binja-JNIAnalyzer", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.3.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Tim Blazytko", + "dependencies": "", + "description": "Automatically detect obfuscated code and other interesting code constructs", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1741918569, + "license": { + "name": "GPL-2.0", + "text": "Copyright 2023 Tim Blazytko\n\nThis program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program; if not, see ." + }, + "longdescription": "# Obfuscation Detection (v2.3)\nAuthor: **Tim Blazytko**\n\n_Automatically detect obfuscated code and other interesting code constructs_\n\n## Description:\n\n_Obfuscation Detection_ is a Binary Ninja plugin to detect obfuscated code and interesting code constructs (e.g., state machines) in binaries. Given a binary, the plugin eases analysis by identifying code locations which might be worth a closer look during reverse engineering.\n\nBased on various heuristics, the plugin pinpoints functions that contain complex or uncommon code constructs. Such code constructs may implement\n\n* obfuscated code\n* state machines and protocols\n* C&C server communication\n* string decryption routines\n* cryptographic algorithms\n\nThe following blog posts provide more information about the underlying heuristics and demonstrate their use cases:\n\n* [Automated Detection of Control-flow Flattening](https://synthesis.to/2021/03/03/flattening_detection.html)\n* [Automated Detection of Obfuscated Code](https://synthesis.to/2021/08/10/obfuscation_detection.html)\n* [Statistical Analysis to Detect Uncommon Code](https://synthesis.to//2023/01/26/uncommon_instruction_sequences.html)\n* [Identification of API Functions in Binaries](https://synthesis.to/2023/08/02/api_functions.html)\n\nSome example use cases can be found in [examples](./examples). Furthermore, the REcon talk [\"Unveiling Secrets in Binaries using Code Detection Strategies\"](https://cfp.recon.cx/2023/talk/QD8UNJ/) demonstrates some use cases. The slides can be found [here](./presentation/recon23_code_detection.pdf); the recording can be found [here](https://www.youtube.com/watch?v=y95MNr2Xu-g).\n\n\n## Core Features\n\n* identifies interesting code constructs in large binaries\n* highlights disaligned instructions in Binary Ninja's graph view\n* efficient and architecture-agnostic implementation\n* runs as a background task\n* can be used in UI and headless mode\n\n\n## Installation\n\nThe tool can be installed using Binary Ninja's plugin manager.\n\nFor the headless version, follow these steps:\n\n```\ngit clone https://github.com/mrphrazer/obfuscation_detection.git\ncd obfuscation_detection\n\n# install obfuscation_detection\npip install .\n```\n\n\n## Usage\n\nThe plugin can be used in the user interface and in headless mode.\n\n\n### User Interface\n\nChoose the index tab `Plugins -> Obfuscation Detection` to run one or more detection heuristics in Binary Ninja's user interface:\n\n

\n\"Plugin\n

\n\nThe results are displayed in the Log window:\n\n

\n\"Binary\n

\n\nBy clicking on the identified function addresses, Binary Ninja navigates to the selected function.\n\n\n### Headless\n\nTo use the plugin in headless mode, run [`scripts/detect_obfuscation.py`](scripts/detect_obfuscation.py):\n\n```\n$ python3 scripts/detect_obfuscation.py \n```\n\n\n## Detection Heuristics\n\nThe plugin implements various detection heuristics to detect different code constructs. In the following, we briefly describe the individual heuristics and explain their usage. \n\n### Large Basic Blocks\n\nThe large basic block heuristic identifies the top 10% of functions with the largest average number of instructions per basic block. It allows to detect\n\n* unrolled code\n* cryptographic implementations\n* initialization routines\n* arithmetic obfuscation / Mixed Boolean-Arithmetic\n\n### Complex Functions\n\nTo complex functions heuristic identifies the top 10% of functions with the most complex control-flow graphs (based on cyclomatic complexity). It allows to identify\n\n* complex dispatching routines and protocols\n* state machines\n* functions obfuscated with opaque predicates\n\n\n### Flattened Functions\n\nThe flattened function heuristic uses some graph-theoretic properties to identify functions implementing state machines. Usually, such state machines can be represented as switch statements that are dispatched in a loop. The heuristic allows to identify\n\n* network protocol dispatching\n* file parsing logic\n* C&C server communication / command dispatching\n* control-flow flattening\n\n\n### Uncommon Instruction Sequences\n\nThe uncommon instruction sequences heuristic performs a statistical analysis to identify the top 10% of functions whose code patterns deviate from a pre-computed ground truth. This way, the heuristic allows to identify\n\n* cryptographic implementations\n* intense usage of floating point arithmetic\n* arithmetic obfuscation / Mixed Boolean-Arithmetic\n* generic obfuscation patterns\n\n\n### Instruction Overlapping\n\nThe instruction overlapping heuristic identifies functions with disaligned instructions (instruction bytes are shared by two different instructions). The heuristic identifies\n\n* broken disassembly (e.g., data which is marked as code)\n* opaque predicates which jump into other instructions \n\nIf the heuristic is used in Binary Ninja's user interface, overlapping instructions are also highlighted in the graph view.\n\n\n### Most Called Functions\n\nThe heuristic for most called functions identifies the top 10% of functions with the largest number of calls from different functions. This way, the heuristic can identify\n\n* string decryption routines\n* library functions in statically linked binaries\n\n\n### High Loop Frequency\n\nThe heuristic identifies functions with a high number of loops. These kind of functions might implement\n\n* a complex parsing logic for structured data formats\n* intensive algorithmic computations\n\nThe heuristic also helps pinpointing potential performance bottlenecks.\n\n\n### Irreducible Loops\n\nThe heuristic identifies functions with rare and complex loop structures that typically suggest\n\n* aggressive compiler optimizations\n* hand-written assembly\n* usage of goto statements\n* obfuscated code\n\n\n### XOR Decryption Loops\n\nThe heuristic identifies functions which perform an XOR operation with a constant inside of a loop. This way, the heuristic can identify\n\n* string decryption routines\n* code decryption stubs\n* cryptographic implementations\n\n\n### Complex Arithmetic Expressions \n\nThe heuristic identifies functions in which the expressions have more than one arithmetic operation and one boolean operation simultaneously. This way, the heuristic can identify\n\n* mixed-boolean arithmetic obfuscation\n* initialization routine\n* cryptographic implementations\n\n\n### Duplicate Subgraphs\n\nThe heuristic uses an iterative context-hashing approach to detect repeated multi-block structures within each function\u2019s control-flow graph. By comparing each block\u2019s opcode signature along with the signatures of its successors, the heuristic identifies subgraphs that are duplicated or near-duplicated in a single function. This helps pinpoint:\n\n* obfuscation stubs like small state machines or dispatcher blocks cloned multiple times\n* unrolled or inlined loops introduced by compiler optimizations\n* multi-way branching logic like range dividers and decision trees\n* repeated cryptographic or checksumming stubs\n\n\n## Utils\n\nContrary to the detection heuristics which target a wider scope of code, the plugin also implements various helpers which aim to identify functions with a narrower scope. In the following, we describe these helpers and explain their characteristics.\n\n\n### Entry Functions\n\nThis helper identifies functions without known callers. These functions might be \n\n* entry points in the binary\n* indirect jumps targets where the call hierarchy could not be recovered by the disassembler\n\n\n### Leaf Functions\n\nThis helper identifies functions that do not call other functions. These kinds of functions may, for example, be functions that\n\n* are outlined by the compiler to implement functionalities utilized across various code locations\n* are trampolines to other functions\n* are part of code obfuscation schemes (e.g., outlined computations for control-flow obfuscation)\n\n\n### Recursive Functions\n\nThis helper identifies recursive functions---functions that directly or indirectly call themselves. Recursive functions may indicate:\n\n* algorithmic implementations such as tree or graph traversal\n* obfuscated code designed to complicate static analysis\n* implementations of mathematical algorithms or complex parsing routines\n* potential stack overflow vulnerabilities due to deep recursion\n\n\n### Section Entropy\n\nThis helper evaluates the entropy of each section. Entropy is a statistical measure of randomness with values ranging between 0 and 8. Sections with an entropy close to 8 indicate a high degree of randomness and can hint at:\n\n* packed or compressed code\n* encrypted data or code\n* random data\n\n\n### RC4\n\nThis helper detects potential RC4 algorithm implementations by employing heuristic markers typically associated with RC4's Key Scheduling Algorithm (KSA) and Pseudo-Random Generation Algorithm (PRGA). RC4 is widely used in malware for purposes such as:\n\n* decrypting strings and other data payloads\n* obfuscating command and control (C&C) communications\n\n\n## Contact\n\nFor more information, contact [@mr_phrazer](https://twitter.com/mr_phrazer).\n\n", + "minimumbinaryninjaversion": 2487, + "name": "Obfuscation Detection", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/d3bab42a-2f29-4611-a0e0-029ac60922ba/versions/c65afb2a-e1e0-4d73-9453-5a8f465b3f72/platforms/1782/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/d3bab42a-2f29-4611-a0e0-029ac60922ba/versions/c65afb2a-e1e0-4d73-9453-5a8f465b3f72/platforms/1782/download?notrack=1", + "path": "mrphrazer_obfuscation_detection", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 650, + "updated_at": "2025-03-14 02:16:09+00:00" + }, + "projectUrl": "https://github.com/mrphrazer/obfuscation_detection", + "subdir": "", + "type": [ + "helper" + ], + "version": "2.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Josh Watson / Jordan Wiens", + "dependencies": "", + "description": "Callgraph generator for called or calling funcs", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1650475400, + "license": { + "name": "MIT", + "text": "Copyright 2021 Josh Watson / Jordan Wiens\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Callgraph\nAuthor: **Josh Watson / Jordan Wiens**\n\n_Callgraph generator for called or calling funcs_\n\n## Description:\n\nSimple call graph visualizer based on work Josh Watson did on stream in his F-ing Around with Binary Ninja, Episode 2.\n\nOriginal code: https://github.com/joshwatson/f-ing-around-with-binaryninja/blob/master/ep2-callgraph/callgraph.py\n\nStream: https://www.twitch.tv/videos/358093527\n\n![](https://github.com/psifertex/callgraph/blob/main/images/callgraph.png?raw=true)\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n* 1500\n\n## License\n\nThis plugin is released under a [MIT license](./LICENSE).\n", + "minimumbinaryninjaversion": 3233, + "name": "Callgraph", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/8164ced3-1abe-4b3e-8cbc-da71fdb23075/versions/db7e23d8-b642-4cb4-b2ae-6587b52d00b0/platforms/1788/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/8164ced3-1abe-4b3e-8cbc-da71fdb23075/versions/db7e23d8-b642-4cb4-b2ae-6587b52d00b0/platforms/1788/download?notrack=1", + "path": "psifertex_callgraph", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 24, + "updated_at": "2022-04-20 17:23:20+00:00" + }, + "projectUrl": "https://github.com/psifertex/callgraph", + "subdir": "", + "type": [ + "ui" + ], + "version": "1.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Lukas Seidel", + "dependencies": "", + "description": "Fuzzing Introspection for use with the JMPscare Toolkit.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1670422965, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 Lukas Seidel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin offers visualization and patching capabilities for the JMPscare analysis tool, finding jumps which are always/never taken over multiple execution traces.", + "minimumbinaryninjaversion": 3164, + "name": "JMPscare", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/719938ef-c04f-4e18-8e3d-75be0c8450d5/versions/949353ad-7221-461c-928c-71d4e751cb04/platforms/1795/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/719938ef-c04f-4e18-8e3d-75be0c8450d5/versions/949353ad-7221-461c-928c-71d4e751cb04/platforms/1795/download?notrack=1", + "path": "fgsect_JMPscarebinja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2022-12-07 14:22:45+00:00" + }, + "projectUrl": "https://github.com/fgsect/JMPscare-binja", + "subdir": "", + "type": [ + "binaryview", + "core", + "helper", + "ui" + ], + "version": "1.1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Sam Russell (@samrussell)", + "dependencies": "", + "description": "A loader and diassembler for Game Boy ROMs.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1711609954, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 Hugo Porcher\n\nCopyright (c) 2021 Carl Svensson (calle.svensson@zeta-two.com)\n\nCopyright (c) 2024 Sam Russell \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Gameboy Binary Ninja plugin\n\n## Description\n\nA Binary Ninja plugin to load Game Boy ROMs and disassemble Game Boy architecture bytecode (Sharp LR35902).\n\nBased on [bnGB](https://github.com/icecr4ck/bnGB) by [Hugo Porcher (icecr4ck)](https://github.com/icecr4ck).\nExtended by [Carl Svensson (ZetaTwo)](https://github.com/ZetaTwo)\n\nFor a list of changes, read the [changelog](CHANGELOG).\n\n### Improvements\n* Added proper IO register symbols\n* Added ISR symbols\n* Fixed some incorrect branching\n* Fixed some incorrect addressing modes\n* Implemented LLIL lifting\n\n### Todo\n* Fix sub_d (stop disas from 0)\n* Handle HALT/RESET/EI/DI opcodes in LLIL\n* Handle BCD (DAA opcode and test the half carry flag)\n* Thorough testing\n\n## Installation\n\nEither install the plugin from the plugin manager or manually clone the repository to your plugin directory.\n\n## Minimum version\n\nThis plugin has been tested on the following versions of Binary Ninja:\n\n* release - 3.5.4526\n\n## References\n\n* [Gameboy Project](https://github.com/ZetaTwo/gameboy-project)\n* [Gameboy Pan Docs](http://bgb.bircd.org/pandocs.htm)\n* [Gameboy opcodes](https://www.pastraiser.com/cpu/gameboy/gameboy_opcodes.html)\n* [Gekkio's Game Boy Complete Technical Reference](https://gekkio.fi/files/gb-docs/gbctr.pdf)\n\n## Testing\n\n* [GBDK-2020](https://github.com/gbdk-2020/gbdk-2020)\n\n## License\n\nThis plugin is released under a [MIT](LICENSE) license.\n", + "minimumbinaryninjaversion": 4526, + "name": "Improved Gameboy Architecture", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/6ba94549-d221-4cfd-a85a-36b9434b543d/versions/a86af7fb-ec3d-45ec-af62-6f272517f1a7/platforms/1801/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/6ba94549-d221-4cfd-a85a-36b9434b543d/versions/a86af7fb-ec3d-45ec-af62-6f272517f1a7/platforms/1801/download?notrack=1", + "path": "samrussell_binjagameboy", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 5, + "updated_at": "2024-03-28 07:12:34+00:00" + }, + "projectUrl": "https://github.com/samrussell/binja-gameboy", + "subdir": "", + "type": [ + "architecture", + "binaryview" + ], + "version": "1.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "inspier", + "dependencies": "rust_demangler==1.0\n", + "description": "Demangles Rust symbols.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1688946105, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 inspier\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin demangles Rust symbols making them easier to read.\n\n![Image showing plugin](https://raw.githubusercontent.com/inspier/BinjaRustDemangler/master/img/RustDemangleExample.png)", + "minimumbinaryninjaversion": 0, + "name": "Rust Demangle", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/0d8bd398-f96b-4d33-a972-46d9c77971e6/versions/97814c88-3afb-47f7-b48d-5d9308e838ed/platforms/1807/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/0d8bd398-f96b-4d33-a972-46d9c77971e6/versions/97814c88-3afb-47f7-b48d-5d9308e838ed/platforms/1807/download?notrack=1", + "path": "inspier_BinjaRustDemangler", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 14, + "updated_at": "2023-07-09 23:41:45+00:00" + }, + "projectUrl": "https://github.com/inspier/BinjaRustDemangler", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.1.4", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Linus S. (aka PistonMiner)", + "dependencies": "protobuf >=3, <5", + "description": "View BinDiff results and port symbols", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1658871076, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 Linus S. (aka PistonMiner)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Plugin to parse diffs generated by BinDiff and display them as a table, with an option to port symbols.\n\n![](https://github.com/PistonMiner/binaryninja-bindiff-viewer/blob/master/media/usage_small.gif?raw=true)", + "minimumbinaryninjaversion": 2487, + "name": "BD Viewer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/c424a8ab-02ae-4553-a6dd-4d420d8c5d9c/versions/2892ace7-1971-409d-b23f-e7dd7a31c16e/platforms/1815/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/c424a8ab-02ae-4553-a6dd-4d420d8c5d9c/versions/2892ace7-1971-409d-b23f-e7dd7a31c16e/platforms/1815/download?notrack=1", + "path": "PistonMiner_binaryninjabindiffviewer", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 80, + "updated_at": "2022-07-26 21:31:16+00:00" + }, + "projectUrl": "https://github.com/PistonMiner/binaryninja-bindiff-viewer", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "1.0.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Jamie Hankins", + "dependencies": "", + "description": "De-obfuscates strings inside of obfuscated Go binaries", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1606933842, + "license": { + "name": "MIT", + "text": "Copyright 2020 Kryptos Logic\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin implements a simple LLIL emulator to statically de-obfuscate simple string obfuscation such as the obfuscations done by [gobfuscate](https://github.com/unixpickle/gobfuscate).\n\nTo activate it, use either the `Tools` menu or the command palette. It offers two modes, the first will attempt to analyze the current function while the other will attempt to find all functions that are merely obfuscated strings and rename them. If the function name cannot be cleanly replaced, a comment will be added at all call locations with the detailed deobfuscated string in addition to the truncated rename.\n\n![](https://github.com/jamie-34254/binja_degobfuscate/blob/master/img/DeGObfuscate.gif?raw=true)", + "minimumbinaryninjaversion": 1528, + "name": "DeGObfuscate", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/7f8b6f99-842e-4754-8e1d-c54a2737d1cd/versions/38e60e41-d000-4b3e-ba10-b91bb1179146/platforms/1820/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/7f8b6f99-842e-4754-8e1d-c54a2737d1cd/versions/38e60e41-d000-4b3e-ba10-b91bb1179146/platforms/1820/download?notrack=1", + "path": "kryptoslogic_binja_degobfuscate", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 50, + "updated_at": "2020-12-02 18:30:42+00:00" + }, + "projectUrl": "https://github.com/kryptoslogic/binja_degobfuscate", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Travis Goodspeed", + "dependencies": "", + "description": "This is a client plugin for recovering symbols using the Symgrate2 server.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1631382597, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 Travis Goodspeed\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Symgrate2 is a symbol recovery database with a publicly query-able sever. This client exposes two modes, one that checks a single function and another that runs through every function of the current project, querying the server and printing the names of matches. ![](https://github.com/travisgoodspeed/symgrate2-binja-plugin/blob/master/images/symgrate2.png?raw=true)", + "minimumbinaryninjaversion": 1200, + "name": "Symgrate2 Plugin", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/ed5361a9-ea74-4bed-a894-e94881e581fa/versions/1baaf868-7526-4aef-92d3-0eb0e24f94eb/platforms/1827/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/ed5361a9-ea74-4bed-a894-e94881e581fa/versions/1baaf868-7526-4aef-92d3-0eb0e24f94eb/platforms/1827/download?notrack=1", + "path": "travisgoodspeed_symgrate2binjaplugin", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 13, + "updated_at": "2021-09-11 17:49:57+00:00" + }, + "projectUrl": "https://github.com/travisgoodspeed/symgrate2-binja-plugin", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.4.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Martin Petran", + "dependencies": "", + "description": "Assistant plugin for vulnerability research.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1725710824, + "license": { + "name": "Apache-2.0", + "text": "Copyright 2020 Martin Petran\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\n\thttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + }, + "longdescription": "This plugin aims to assist during the vulnerability research process by providing a capability to scan the binary for potential occurrences of known vulnerabilities such as Use-after-free, buffer overflow or format string related issues. Along with the scanner, this plugin also includes a simple highlighter tool which should provide further aid during the follow-up manual analysis of the issues found by teh scanner. \n\n### Highlighter###\n\nThe highlighter part of the plugin can be used after selecting an instruction. This feature allows you to highlight Assembly and HLIL blocks that lead to current block. Another feature also allows you to highlight either HLIL or Assembly variables. This provides ability to trace all points of interest for given variables.\n\n### Scanner###\n\nScanner is using set of rules and function tracker to perform basic analysis to detect any potentially vulnerable function calls. Issues that are found by this component are marked with tags that reflect the priority for a follow-up manual analysis. Following are the priority categories:\n\n* \ud83d\udfe5 High - Detected conditions are likely to lead to vulnerability.\n* \ud83d\udfe7 Medium - Detected conditions could theoretically lead to vulnerability.\n* \ud83d\udfe8 Low - Detected conditions are unlikely to lead to vulnerability.\n* \ud83d\udfe6 Info - Detected conditions were not clear enough to determine if the call is secure or not.\n\n\nExample of discovered issue:\n\n![Sample](https://github.com/Martyx00/VulnFanatic/blob/master/static/sample2.png?raw=true 'Sample')\n\nPlease note that by no means this plugin provides a zero effort way to find vulnerabilities. However, it should assist you in prioritizing specific places in binaries which are worth investigating.\n", + "minimumbinaryninjaversion": 2263, + "name": "VulnFanatic", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/e336fe44-0ec9-4c8b-9c93-c51b6156d9f2/versions/bdfebf53-d676-4552-b5e4-a9d707f70327/platforms/1834/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/e336fe44-0ec9-4c8b-9c93-c51b6156d9f2/versions/bdfebf53-d676-4552-b5e4-a9d707f70327/platforms/1834/download?notrack=1", + "path": "Martyx00_VulnFanatic", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 300, + "updated_at": "2024-09-07 12:07:04+00:00" + }, + "projectUrl": "https://github.com/Martyx00/VulnFanatic", + "subdir": "", + "type": [ + "helper" + ], + "version": "3.7", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Martin Petran", + "dependencies": "", + "description": "Plugin to embed Ghidra Decompiler into Binary Ninja", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1654662367, + "license": { + "name": "Apache-2.0", + "text": "Copyright 2020 Martin Petran\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\n\thttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + }, + "longdescription": "This plugin allows you to enable a dock in the UI that will show a result of the Ghidra decompiler for the given function. There is basic syntax highlighting and renaming functions and variables in the Binary Ninja view is refleced in the Ghinja view as well. The plugin will prompt you for pointing it to the path of the `analyzeHeadless` file which is relevant for your operating system. When chosen it will automatically start ghidra decompilation whenever a new file is opened. The decompile results are stored in the `~/.ghinja_projects` folder.\n\n ![Sample](https://github.com/Martyx00/ghinja/blob/master/img/demo.gif?raw=true \"Sample\")\n\n **Available Hotkeys:**\n\n* ***N*** - When Ghinja window has focus you can use this hotkey to rename the variable that does not have equivalent in the Binary Ninja view. This function allows you to rename anything, however all labels (functions, variables, etc.) that are are avialable in Binary Ninja view should be renamed there rather than in Ghinja as that is string replace only.\n* ***F*** - When Ghinja window has focus you can use this hotkey to perform a simple text seatch in the decompiler result.\n", + "minimumbinaryninjaversion": 3233, + "name": "Ghinja", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/e78b547a-b54f-4252-a4a5-22fe218f4b6e/versions/212d835f-a8dd-449b-8d2b-47ab9cda1e8e/platforms/1838/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/e78b547a-b54f-4252-a4a5-22fe218f4b6e/versions/212d835f-a8dd-449b-8d2b-47ab9cda1e8e/platforms/1838/download?notrack=1", + "path": "Martyx00_ghinja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 97, + "updated_at": "2022-06-08 04:26:07+00:00" + }, + "projectUrl": "https://github.com/Martyx00/ghinja", + "subdir": "", + "type": [ + "ui" + ], + "version": "1.10", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "matteyeux", + "dependencies": "", + "description": "Binary View for loading 32 bits and 64 bits Apple SEPROM", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1689570375, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 Mathieu Hautebas\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# SEPROM loader\n\n_Binary View for loading 32 bits and 64 bits Secure Enclave Processor ROM embedded in Apple's products_\n\n![](https://raw.githubusercontent.com/matteyeux/seprom-loader/master/demo.PNG)\n\n## Description \nBinary Ninja Binary View plugin for analyzing Apple's SEPROM. \n- Identifies SEPROM architecture \n- Performs rebase to the correct load address for accurate analysis \n- Restores some symbols for 64 bits SEPROMs\n\n## Acknowledgments\n\n- [Yui's](https://twitter.com/haiyuidesu) [sephelper](https://github.com/haiyuidesu/sephelper) for IDA PRO\n- BlackwingHQ's [iBoot64Binja](https://github.com/BlackwingHQ/iBoot64Binja)\n- [iBoot-Binja-Loader](https://github.com/EliseZeroTwo/iBoot-Binja-Loader)", + "minimumbinaryninjaversion": 2170, + "name": "SEPROM Loader", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/1a85649c-cb8f-4ef6-ad46-19af20b756d7/versions/4af3a95b-6f0f-4c55-b3aa-bb51b61eb349/platforms/1845/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/1a85649c-cb8f-4ef6-ad46-19af20b756d7/versions/4af3a95b-6f0f-4c55-b3aa-bb51b61eb349/platforms/1845/download?notrack=1", + "path": "matteyeux_sepromloader", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 58, + "updated_at": "2023-07-17 05:06:15+00:00" + }, + "projectUrl": "https://github.com/matteyeux/seprom-loader", + "subdir": "", + "type": [ + "binaryview" + ], + "version": "1.0.6", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "@_murks", + "dependencies": "", + "description": "devi - DEvirtualize VIrtual calls in C++ binaries", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1604506779, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 murks\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# devi_binja\nBinary Ninja Plugin for devi. For a detailed description how devi works see its [repository](https://github.com/murx-/devi/). This plugin uses the newly introduced possibility to add cross-references in binary ninja to devirtualize virtual calls. \n\nDevi consits of two components, one for dynamic analysis (DBI) and one for static analysis (disassembler). This repository is only the static analysis part for binary ninja. See https://github.com/murx-/devi/ for the details of the dynamic part. \n\n\n## Minimal Example\n\n### Disassembly\n\nBefore:\n\n![Disassembly before devi](https://github.com/murx-/devi_binja/blob/master/images/main_before_devi.png?raw=true)\n\n\nAfter:\n\n![Disassembly with devi](https://github.com/murx-/devi_binja/blob/master/images/main_after_devi.png?raw=true)\n\n### XRefs\n\n\nBefore:\n\n![Xrefs before devi](https://github.com/murx-/devi_binja/blob/master/images/xrefs_before_devi.png?raw=true)\n\nAfter:\n\n![Xrefs after devi](https://github.com/murx-/devi_binja/blob/master/images/xrefs_after_devi.png?raw=true)", + "minimumbinaryninjaversion": 1200, + "name": "devi", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/565f89ab-c77a-41cc-9c4c-c43e2f9cc0c0/versions/a2093a4a-454c-461d-bb04-d35fec73eb8d/platforms/1849/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/565f89ab-c77a-41cc-9c4c-c43e2f9cc0c0/versions/a2093a4a-454c-461d-bb04-d35fec73eb8d/platforms/1849/download?notrack=1", + "path": "murx_devi_binja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 20, + "updated_at": "2020-11-04 16:19:39+00:00" + }, + "projectUrl": "https://github.com/murx-/devi_binja", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "0.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Daniel Weber", + "dependencies": "", + "description": "Binary Ninja plugin for restoring function names from stripped Golang binaries", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1603103834, + "license": { + "name": "MIT", + "text": "Copyright (c) <2020> \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "The plugin parses the section `.gopclntab` where Golang stores debug symbols and restores the function names. If there is no section named `.gopclntab` it will try to search for the section.", + "minimumbinaryninjaversion": 2170, + "name": "Golang Symbol Restore", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/f0dab223-6d41-4eef-af05-24912e444716/versions/9ad35acb-7aab-4fd8-8942-1d6089dd5109/platforms/1855/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/f0dab223-6d41-4eef-af05-24912e444716/versions/9ad35acb-7aab-4fd8-8942-1d6089dd5109/platforms/1855/download?notrack=1", + "path": "dwe_binjagolangsymbolrestore", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 14, + "updated_at": "2020-10-19 10:37:14+00:00" + }, + "projectUrl": "https://github.com/d-we/binja-golang-symbol-restore", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.2", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "Michael Rodler", + "dependencies": "", + "description": "Short script that parses go symbol table and renames/creates functions.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1612269807, + "license": { + "name": "MIT", + "text": "Copyright (c) 2017 Michael Rodler (contact@f0rki.at)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "go reversing helpers for binaryninja.\n\nBasically this is some stuff ported from the IDA pro script\n[golang_load_assist](https://github.com/strazzere/golang_loader_assist)\n\n Probably incomplete!\n\n### go reversing blog posts\n\n * http://rednaga.io/2016/09/21/reversing_go_binaries_like_a_pro/", + "minimumbinaryninjaversion": 1528, + "name": "GO Loader Assist", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/20366cd9-169c-4867-8d93-8399ad1d1a3f/versions/be90992e-5c5c-4d09-a7c0-ffeee1a9c0a6/platforms/1863/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/20366cd9-169c-4867-8d93-8399ad1d1a3f/versions/be90992e-5c5c-4d09-a7c0-ffeee1a9c0a6/platforms/1863/download?notrack=1", + "path": "f0rki_bngoloader", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 32, + "updated_at": "2021-02-02 12:43:27+00:00" + }, + "projectUrl": "https://github.com/f0rki/bn-goloader", + "subdir": "", + "type": [ + "ui" + ], + "version": "1.1", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "whitequark", + "dependencies": "", + "description": "A plugin that adds a GUI for changing function ABI.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1574389072, + "license": { + "name": "BSD-0-clause", + "text": "Copyright (C) 2018 by whitequark\n\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE." + }, + "longdescription": "This plugin provides a GUI for adjusting the ABI in a fine-grained way. Calling convention and clobbered registers can be adjusted.", + "minimumbinaryninjaversion": 555, + "name": "Function ABI", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/2262f2d2-051e-4bf2-b398-d950584c4ef4/versions/059883bf-41f1-4078-b2b5-2a0c92ce7b4a/platforms/2012/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/2262f2d2-051e-4bf2-b398-d950584c4ef4/versions/059883bf-41f1-4078-b2b5-2a0c92ce7b4a/platforms/2012/download?notrack=1", + "path": "whitequark_binja_function_abi", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2019-11-22 02:17:52+00:00" + }, + "projectUrl": "https://github.com/whitequark/binja_function_abi", + "subdir": "", + "type": [ + "ui" + ], + "version": "1.1", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "Grant Orndorff", + "dependencies": "filebytes\n", + "description": "Insert custom hooks", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1617003309, + "license": { + "name": "MIT", + "text": "Copyright (c) 2017 Grant Orndorff\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Currently supports x86 and x86_64 ELF executables.\nWrite a hook in assembly and have it execute as part of your binary. See your hook added to the binary and reflected in the disassembly graph. The code segment of the binary is extended to make room for the hook. After insertion, Save Contents As and run the binary with your inserted code!", + "minimumbinaryninjaversion": 1407, + "name": "BNHook", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/15d55b7a-7877-48e2-b3c3-1239974c6daf/versions/7f8be63b-c111-48cd-8fbc-fd0b78a6bae8/platforms/1867/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/15d55b7a-7877-48e2-b3c3-1239974c6daf/versions/7f8be63b-c111-48cd-8fbc-fd0b78a6bae8/platforms/1867/download?notrack=1", + "path": "jeffli678_bnhook", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 15, + "updated_at": "2021-03-29 07:35:09+00:00" + }, + "projectUrl": "https://github.com/jeffli678/bnhook", + "subdir": "", + "type": [ + "ui", + "core" + ], + "version": "1.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Paolo Montesel (https://github.com/thebabush)", + "dependencies": "future\n", + "description": "FLIRT for (binary) ninjas", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1590594861, + "license": { + "name": "LGPL v3", + "text": "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option) any later version.\n\nThis library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA" + }, + "longdescription": "# Nampa - FLIRT for (binary) ninjas\n\n*Pure-python implementation of IDA Pro's FLIRT technology. Also Binary Ninja plugin.*\n\n## Description\n\nNampa is a package for reading IDA Pro's `.sig` files.\nIt comes with its own command-line tool for analyzing such files: `dumpsig.py`.\n\nNampa the package is completely decoupled from the Binary Ninja plugin.\n\nNampa the plugin comes with a small library of `.sig` files, automatically\ndownloaded from 3rd-party GitHub repositories when needed.\n\n## Screenshot\n\n![Dialog](./img/dialog.png)\n\n## Installation\n\nFor use as a python library:\n\n```bash\npip install nampa\n```\n\nFor use as a Binary Ninja plugin:\n\n```bash\ncd ~/.binaryninja/plugins/\ngit clone git@github.com:thebabush/nampa.git\ncd nampa\npip install -r requirements.txt # or sudo apt-get install python-future\n```\n\n**NOTE:** apparently, Binary Ninja for Windows ships with its own python distribution so `pip install` accordingly.\n\n## About\n\n[Meaning of Nampa (\u30ca\u30f3\u30d1)](http://jisho.org/search/%E8%BB%9F%E6%B4%BE).\n\n### Limitations\n\nRef functions are not implemented at the moment.\n\n### Thanks\n\n- `radare` people, since this is basically a python port of\n[radare's FLIRT implementation](https://raw.githubusercontent.com/radare/radare2/e8f80a165c7dd89d955a1ee7f432bd9a1ba88976/libr/anal/flirt.c).\n- [trib0r3](https://github.com/trib0r3) for updating the Binary Ninja integration\n\n### License\n\nThe original radare's flirt.c is under LGPL, so my deep knowledge of software licenses tells me that I must keep it\nthat way.\n", + "minimumbinaryninjaversion": 0, + "name": "Nampa", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/b256ea1f-a379-4ced-ac85-936f31865781/versions/fd91dc06-1bbe-49c3-a570-3c6d82a6cb7b/platforms/1875/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/b256ea1f-a379-4ced-ac85-936f31865781/versions/fd91dc06-1bbe-49c3-a570-3c6d82a6cb7b/platforms/1875/download?notrack=1", + "path": "thebabush_nampa", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 99, + "updated_at": "2020-05-27 15:54:21+00:00" + }, + "projectUrl": "https://github.com/thebabush/nampa", + "subdir": "", + "type": [ + "binaryview", + "core" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "trib0r3", + "dependencies": "", + "description": "YARA signatures", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1590501525, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 trib0r3\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# YARA Scan (v1.0)\nAuthor: **trib0r3**\n\n_YARA signatures_\n\n## Description\n\nScan your binary with YARA signatures\n\n\n## Installation Instructions\n\n```bash\npip3 install yara-python\n```\n\n## Required Dependencies\n\nThe following dependencies are required for this plugin:\n\n * pip - yara-python\n\n\n## License\n\nThis plugin is released under a MIT license.", + "minimumbinaryninjaversion": 2, + "name": "YARA Scan", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/2793e062-444b-4fa2-935c-a1e08d17d83e/versions/958881e1-80a8-47a0-9311-7182954bb9aa/platforms/1881/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/2793e062-444b-4fa2-935c-a1e08d17d83e/versions/958881e1-80a8-47a0-9311-7182954bb9aa/platforms/1881/download?notrack=1", + "path": "trib0r3_binjayara", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 0, + "updated_at": "2020-05-26 13:58:45+00:00" + }, + "projectUrl": "https://github.com/trib0r3/binja-yara", + "subdir": "", + "type": [ + "binaryview", + "core" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "Shiz", + "dependencies": "", + "description": "Analyze dependencies and resolve obfuscated imports", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1590369706, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 Shiz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Dependency Analyzer is a Binary Ninja plugin for analyzing module dependencies in a more in-depth fashion and recovering important information such as import names from metadata files.\n\nSupported formats:\n\n* [Microsoft Module Definition (.def)](https://docs.microsoft.com/en-us/cpp/build/reference/module-definition-dot-def-files?view=vs-2019) files\n* IDA's IDT files\n* Anything loadable by Binary Ninja (including databases with renamed functions)\n\nCurrent analyses:\n\n* Resolve imported symbol names\n - Import-by-ordinal\n - Import-by-address (e.g. embedded systems)\n - From renamed functions in a Binary Ninja database (e.g. manually analyzed obfuscated symbol names)\n\nIt will try to find files in `depanalyzer.path` with the same basename of any of the dependencies, and analyze them if they match anything loadable by the plugin.\n\nSymbol matching can done in three ways:\n\n* By name\n* By address (non-relocatable binaries only)\n* By ordinal (PE binaries only)\n\nThe current method is settable through `depanalyzer.matching_method`, globally and per-context.\nBy default, and upon encountering a method that is inapplicable to the current binary, it will try to determine the best method automatically.\n", + "minimumbinaryninjaversion": 1200, + "name": "Dependency analyzer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/f67bdaa4-5e59-4de9-8b43-9d8df06270ba/versions/3d256cfb-47e7-45eb-bc38-445ba2ed4298/platforms/1889/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/f67bdaa4-5e59-4de9-8b43-9d8df06270ba/versions/3d256cfb-47e7-45eb-bc38-445ba2ed4298/platforms/1889/download?notrack=1", + "path": "shizmob_binjadepanalyzer", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2020-05-25 01:21:46+00:00" + }, + "projectUrl": "https://github.com/shizmob/binja-depanalyzer", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "hugsy", + "dependencies": "", + "description": "Interface Binary Ninja with GDB-GEF easily.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1589817566, + "license": { + "name": "MIT", + "text": "Copyright (c) 2013-2020 crazy rabbidz\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE." + }, + "longdescription": "gef-binja: This script is the server-side of the XML-RPC defined for gef for BinaryNinja. It will spawn a threaded XMLRPC server from your current BN session making it possible for gef to interact with Binary Ninja.", + "minimumbinaryninjaversion": 1300, + "name": "GEF-Binja", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/82809e51-8ca7-455b-9d1e-624eb2f77256/versions/9049f2de-5d17-4669-94d8-db35fb3de6a7/platforms/1892/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/82809e51-8ca7-455b-9d1e-624eb2f77256/versions/9049f2de-5d17-4669-94d8-db35fb3de6a7/platforms/1892/download?notrack=1", + "path": "hugsy_gefbinja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 59, + "updated_at": "2020-05-18 15:59:26+00:00" + }, + "projectUrl": "https://github.com/hugsy/gef-binja", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "0.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Josh Watson", + "dependencies": "", + "description": "MSP430 Architecture Plugin for Binary Ninja", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1643842613, + "license": { + "name": "MIT", + "text": "Copyright (c) 2022 Josh Watson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# MSP430 Architecture Plugin (v0.6)\nAuthor: **Josh Watson**\n\n_A disassembler and lifter for the MSP430 architecture._\n\n## Description:\n\nThis plugin disassembles MSP430 assembly code and generates LLIL.\n\nTo install this plugin, navigate to your Binary Ninja plugins directory, and run\n\n```git clone https://github.com/joshwatson/binaryninja-msp430.git msp430```\n\nAlternatively, clone the repo whereever you want, and add a symbolic link in your plugins directory.\n\nAlternatively-Alternatively, use Binary Ninja's [Plugin Manager](https://binary.ninja/2019/07/04/plugin-manager-2.0.html) to install it.\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n * release - 3.0.3233\n\n## License\n\nThis plugin is released under a [MIT](LICENSE) license.\n\n\n", + "minimumbinaryninjaversion": 3233, + "name": "msp430 Architecture", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/bcb85c18-da54-4e13-b456-d0f23beb9758/versions/f2419136-fd84-45df-860d-ef2a7dd49c58/platforms/1898/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/bcb85c18-da54-4e13-b456-d0f23beb9758/versions/f2419136-fd84-45df-860d-ef2a7dd49c58/platforms/1898/download?notrack=1", + "path": "joshwatson_binaryninjamsp430", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 32, + "updated_at": "2022-02-02 22:56:53+00:00" + }, + "projectUrl": "https://github.com/joshwatson/binaryninja-msp430", + "subdir": "", + "type": [ + "architecture" + ], + "version": "0.6", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "apekros and Alex3434", + "dependencies": "", + "description": "Generate and find signatures.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1675034718, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 apekros\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# binja_sigmaker (v2.1)\nAuthor: [Alex3434](https://github.com/Alex3434)\n\nFixed up by **apekros** for Python3 and Plugin Manager 2.0\n\nbinja_sigmaker plugin for Binary Ninja\n\n## Description:\n\nGenerate Signatures to use for pattern scanning in other applications.\n\n- The signature has the same form like the sequence of bytes in IDA (eg. 89 45 FC FF 15 ? ? ? ?)\n- You can create a signature at any point inside a function. \n- If there is no unique signature at that position, the plugin will create a signature for the beginning of the function.\n\n## Usage:\n\n\n\n\n\n## Required Dependencies\n\nThe following dependencies are required for this plugin: None\n\n## License\n\nThis plugin is released under a [MIT](LICENSE) license.\n", + "minimumbinaryninjaversion": 0, + "name": "binja_sigmaker", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/02c3c2c6-2ea0-431b-b333-1f6a19a27d6d/versions/fb40e155-6640-4e40-82f1-b38315666216/platforms/1905/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/02c3c2c6-2ea0-431b-b333-1f6a19a27d6d/versions/fb40e155-6640-4e40-82f1-b38315666216/platforms/1905/download?notrack=1", + "path": "apekros_binja_sigmaker", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 28, + "updated_at": "2023-01-29 23:25:18+00:00" + }, + "projectUrl": "https://github.com/apekros/binja_sigmaker", + "subdir": "", + "type": [ + "architecture", + "binaryview", + "core", + "ui" + ], + "version": "2.1", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "jofra", + "dependencies": "", + "description": "A plugin that eases fixing jump table branches", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1562441017, + "license": { + "name": "MIT", + "text": "Copyright 2019 Vasco Franco\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin allows you to easily edit the branches of an indirect jump. This is helpful in situations where binja fails to identify jump tables. To fix this, previously you would have to use the python console, but with this plugin you can do it from a simple UI.\n\nYou can insert the target addresses as a single addr (hex or decimal) (e.g. `0x2000` or `123`) or a comma separated list (e.g. `0x1d80, 0x1dc0, 0x1de0, 0x1df0, 0x1e00`).", + "minimumbinaryninjaversion": 1689, + "name": "Jump table branch editor", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/b5e031f7-f107-4a96-91ae-0682a31551fd/versions/1bf5017d-e425-4458-b465-ae0cdf5a8eb7/platforms/1910/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/b5e031f7-f107-4a96-91ae-0682a31551fd/versions/1bf5017d-e425-4458-b465-ae0cdf5a8eb7/platforms/1910/download?notrack=1", + "path": "Vascojofra_jumptablebrancheditor", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 3, + "updated_at": "2019-07-06 19:23:37+00:00" + }, + "projectUrl": "https://github.com/Vasco-jofra/jump-table-branch-editor", + "subdir": "", + "type": [ + "ui", + "core" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "zznop", + "dependencies": "", + "description": "Transfer analysis data between Binary Ninja and IDA", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1707958297, + "license": { + "name": "MIT", + "text": "Copyright 2024 zznop\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# bnida\n\n## Description\n\nbnida is a suite of plugins that provide the ability to transfer analysis data between IDA Pro and Binary Ninja\ndatabases.\n\n## Documentation\n\nDocumentation can be found [here](https://zznop.github.io/bnida)\n\n## License\n\nThis project is released under the MIT license.\n", + "minimumbinaryninjaversion": 1200, + "name": "bnida", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/c7e40996-8a88-438a-92c1-d00b12782907/versions/b2908804-d1fe-480c-9712-6a6e84631b1f/platforms/1915/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/c7e40996-8a88-438a-92c1-d00b12782907/versions/b2908804-d1fe-480c-9712-6a6e84631b1f/platforms/1915/download?notrack=1", + "path": "zznop_bnida", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 139, + "updated_at": "2024-02-15 00:51:37+00:00" + }, + "projectUrl": "https://github.com/zznop/bnida", + "subdir": "", + "type": [ + "sync" + ], + "version": "1.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "zznop", + "dependencies": "", + "description": "SEGA Megadrive/Genesis ROM Hacking Toolkit", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1730730484, + "license": { + "name": "MIT", + "text": "Copyright (c) 2019 zznop\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# bn-genesis\n\n## Description\n\nSuite of Binary Ninja plugins that assist with SEGA Genesis ROM hacking\n* Load SEGA Genesis/Megadrive ROM's\n* Write m68k assembly and quickly apply a patch at a specified offset\n* Fixup ROM checksums\n* Enumerate call tables (deprecated)\n * Vector35 addressed issues with its core and now tables are recognized by auto-analysis \n\n![demo bn-genesis](screencap.gif)\n\n## Dependencies\n\n* Assembler plugin requires `gcc-m68k-linux-gnu` (Ubuntu or Debian)\n* Loader requires the third party m68k processor module, which can be found [here](https://github.com/wrigjl/binaryninja-m68k)\n", + "minimumbinaryninjaversion": 1200, + "name": "genesis", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/8f4fc1e9-16de-4e3a-b216-bf5d74ba20e0/versions/0cd996f1-ba67-4ebf-b532-d77e926b4702/platforms/1921/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/8f4fc1e9-16de-4e3a-b216-bf5d74ba20e0/versions/0cd996f1-ba67-4ebf-b532-d77e926b4702/platforms/1921/download?notrack=1", + "path": "zznop_bngenesis", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 27, + "updated_at": "2024-11-04 14:28:04+00:00" + }, + "projectUrl": "https://github.com/zznop/bn-genesis", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "1.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Brandon Miller", + "dependencies": "", + "description": "Parses output from /proc/kallsyms and applies symbols to the corresponding kernel BN database", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1643512677, + "license": { + "name": "MIT", + "text": "Copyright 2020 Brandon Miller\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# bn-kallsyms ![Python Lint](https://github.com/zznop/bn-kallsyms/workflows/pylint/badge.svg)\n\n## Description:\n\nBinary Ninja plugin for importing symbols to a kernel binary from /proc/kallsyms\n\n**Before loading kernel symbols:**\n\n![Before kallsyms import](screens/before.png \"Before:\")\n\n**After loading kernel symbols:**\n\n![After kallsyms import](screens/after.png \"After:\")\n\n## License\n\nThis plugin is released under a [MIT](LICENSE) license.\n\n## Generating a kernel symbols file\n\nTo generate a kernel symbols file run the following command:\n```\nsudo sh -c \"echo 0 > /proc/sys/kernel/kptr_restrict\" && sudo cat /proc/kallsyms > kallsyms.txt\n```\n\n## Importing the kernel symbols\n\nTo use this plugin, ensure the kernel binary is decompressed. If it is a bzImage kernel, use binwalk:\n\n```\n$ binwalk -e vmlinuz-4.13.0-43-generic\n...\n$ file ~/_vmlinuz-4.13.0-43-generic.extracted/47B4\n/home/joe/_vmlinuz-4.13.0-43-generic.extracted/47B4: elf 64-bit lsb executable, x86-64, version 1 (sysv), statically linked, buildid[sha1]=3e0dc1c8b93e2f3f522a596cfc4b482065469041, stripped\n```\n\nLoad the kernel binary into Binary Ninja. Then, click `tools->\"kallsyms: apply kernel symbols\"`. You will be\nprompted to select the kernel symbols file. Select it, and click \"open\". the plugin will proceed to parse\nthe kernel symbol file, create functions, and import symbols into the database.\n", + "minimumbinaryninjaversion": 1200, + "name": "kallsyms", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/137a760a-6261-4e51-9094-9d16ca641499/versions/f9024944-b75f-463c-a2d7-4f3984b2f663/platforms/1931/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/137a760a-6261-4e51-9094-9d16ca641499/versions/f9024944-b75f-463c-a2d7-4f3984b2f663/platforms/1931/download?notrack=1", + "path": "zznop_bnkallsyms", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 21, + "updated_at": "2022-01-30 03:17:57+00:00" + }, + "projectUrl": "https://github.com/zznop/bn-kallsyms", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "zznop", + "dependencies": "", + "description": "Locate and annotate direct and indirect recursion", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1595432685, + "license": { + "name": "MIT", + "text": "Copyright 2020 zznop\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# bn-recursion\nAuthor: **zznop**\n\n_Binary Ninja plugin for locating direct and indirect recursive logic_\n\n## Description:\n\nbn-recursion is an architecture-agnostic plugin for locating direct and indirect recursion using BNIL\n\n## Minimum Version\n\nThis plugin requires the following minimum version of Binary Ninja:\n\n * release - 1.1.1142\n * dev - 1.1.1228-dev\n\n## License\n\nThis plugin is released under a [MIT](LICENSE) license.\n", + "minimumbinaryninjaversion": 1200, + "name": "recursion", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/d3315c46-6ea0-4c84-9341-1dbc701e83d8/versions/0c70c54c-37d0-4ea6-b198-972856afceb0/platforms/1933/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/d3315c46-6ea0-4c84-9341-1dbc701e83d8/versions/0c70c54c-37d0-4ea6-b198-972856afceb0/platforms/1933/download?notrack=1", + "path": "zznop_bnrecursion", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 2, + "updated_at": "2020-07-22 15:44:45+00:00" + }, + "projectUrl": "https://github.com/zznop/bn-recursion", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.1", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "B.Kerler with code from John Levy and @carstein", + "dependencies": "", + "description": "A plugin that annotates function arguments.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1562648191, + "license": { + "name": "MIT", + "text": "Copyright (c) 2018-2019 B. Kerler\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Upon encountering a function call this plugins uses virtual stack to annotate previous instructions with comments annotating the parameters.", + "minimumbinaryninjaversion": 1200, + "name": "Annotate Functions", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/9492b711-d8db-4874-a19d-05fc40c76d41/versions/6b5de4e4-8717-4a2f-bf62-bb0771a06580/platforms/1943/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/9492b711-d8db-4874-a19d-05fc40c76d41/versions/6b5de4e4-8717-4a2f-bf62-bb0771a06580/platforms/1943/download?notrack=1", + "path": "bkerler_annotate", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 22, + "updated_at": "2019-07-09 04:56:31+00:00" + }, + "projectUrl": "https://github.com/bkerler/annotate", + "subdir": "", + "type": [ + "binaryview" + ], + "version": "1.1", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "verylazyguy", + "dependencies": "", + "description": "A disassembler and lifter for the VMNDH-2k12 architecture.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1562776057, + "license": { + "name": "MIT", + "text": "Copyright (c) 2016 verylazyguy.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin disassembles VMNDH assembly code and generates LLIL.\n\nTo install this plugin, navigate to your Binary Ninja plugins directory, and run\n\n```git clone https://github.com/verylazyguy/binaryninja-vmndh.git vmndh```", + "minimumbinaryninjaversion": 0, + "name": "VMNDH-2k12 Architecture Plugin", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/6135ee2c-e449-45de-87b8-c325e0fbd5ed/versions/4a3268f3-a59b-427b-ab11-a1c133da0774/platforms/1946/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/6135ee2c-e449-45de-87b8-c325e0fbd5ed/versions/4a3268f3-a59b-427b-ab11-a1c133da0774/platforms/1946/download?notrack=1", + "path": "verylazyguy_binaryninjavmndh", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 5, + "updated_at": "2019-07-10 16:27:37+00:00" + }, + "projectUrl": "https://github.com/verylazyguy/binaryninja-vmndh", + "subdir": "", + "type": [ + "architecture" + ], + "version": "0.2", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "Brick", + "dependencies": "", + "description": "Parses MSVC structures to improve analysis", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1562929904, + "license": { + "name": "MIT", + "text": "Copyright 2019 Brick\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# MSVC\nAuthor: **Brick**\n_Parses MSVC structures to improve analysis_\n\n## Description:\nParses MSVC structures such as RTTI and Unwind Info to improve analysis\n", + "minimumbinaryninjaversion": 1689, + "name": "MSVC", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/337de83a-b37f-4bb6-ba1b-e5f7600acd74/versions/46d68ec5-e0e0-4762-beeb-12b9bc87d57b/platforms/1951/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/337de83a-b37f-4bb6-ba1b-e5f7600acd74/versions/46d68ec5-e0e0-4762-beeb-12b9bc87d57b/platforms/1951/download?notrack=1", + "path": "0x1F9F1_binjamsvc", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 14, + "updated_at": "2019-07-12 11:11:44+00:00" + }, + "projectUrl": "https://github.com/0x1F9F1/binja-msvc", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "Ryan Stortz (@withzombies)", + "dependencies": "", + "description": "A plugin to graph BNIL instruction trees", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1689779176, + "license": { + "name": "Apache-2.0", + "text": "Copyright 2019 Ryan Stortz (@withzombies)\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\n\thttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + }, + "longdescription": "# BNIL Instruction Graph\r\nA BinaryNinja plugin to graph a BNIL instruction tree and meta-program python instruction matchers.\r\n\r\n## Installation\r\n\r\nInstallation is supported two ways, the first using the new plugin manager and the second being a manual install.\r\n\r\n### Plugin Manager\r\nUse the new plugin manager by selecting \"Manage Plugins\" from the \"Edit\" menu. Search the plugin list for \"BNIL Instruction Graph\", right click on it and click \"Install\" then right click again and select \"Enable\".\r\n\r\n## Manual Installation\r\n1. Clone the repository to your prefered location: `$ git clone https://github.com/withzombies/bnil-graph.git`\r\n1. Change to the Binary Ninja plugins directory: `$ cd ~/Library/Application\\ Support/Binary\\ Ninja/plugins`\r\n1. Create a symlink to the folder: `$ ln -s ~/git/bnil-graph .`\r\n1. Restart Binary Ninja\r\n\r\n## Usage\r\n\r\nTo use bnil-graph, right click on an instruction and select \"BNIL Instruction Graph\". This graphs the BNIL instructions assocaited with that address and displays them as an HTML form.\r\n\r\nBinary Ninja adds operand accessors dynamically, due to this the convenient accesors do not show up in `dir()` calls or in the api documentation. bnil-graph shows the structure of the IL instruction including its nice accessor names (such as `insn.src` for the source register or memory)\r\n\r\n![Menu Example](https://raw.githubusercontent.com/withzombies/bnil-graph/master/images/menu.png)\r\n\r\nExample graph:\r\n\r\n![Example Graph](https://raw.githubusercontent.com/withzombies/bnil-graph/master/images/graph.png)\r\n\r\n### Matchers\r\n\r\nIn addition to the graph plugin, bnil-graph also will generate a matcher function that will match the selected instructions exactly. This feature will allow new plugin developers to quickly match instructions. The intended use is to find an instruction similar to the one you want to match, generate a matcher function, then modify the generated function to better support your needs.\r\n\r\nAn example would be trying to find all MediumLevelILSSA MLIL\\_CALL\\_SSA instructions that take 3 parameters. I generated a matcher against an unrelated function with 0 parameters:\r\n\r\n```python\r\ndef match_MediumLevelILSSA_140001194_0(insn):\r\n # mem#1 = 0x14000d49c() @ mem#0\r\n if insn.operation != MediumLevelILOperation.MLIL_CALL_SSA:\r\n return False\r\n\r\n # invalid\r\n if insn.output.operation != MediumLevelILOperation.MLIL_CALL_OUTPUT_SSA:\r\n return False\r\n\r\n if insn.output.dest_memory != 0x1:\r\n return False\r\n\r\n if len(insn.output.dest) != 0:\r\n return False\r\n\r\n # 0x14000d49c\r\n if insn.dest.operation != MediumLevelILOperation.MLIL_CONST_PTR:\r\n return False\r\n\r\n if insn.dest.constant != 0x14000d49c:\r\n return False\r\n\r\n if len(insn.params) != 0:\r\n return False\r\n\r\n if insn.src_memory != 0x0:\r\n return False\r\n\r\n return True\r\n```\r\n\r\nWe can modify this to remove some specific constraints:\r\n\r\n```python\r\ndef match_MediumLevelILSSA_140001194_0(insn):\r\n # mem#1 = 0x14000d49c() @ mem#0\r\n if insn.operation != MediumLevelILOperation.MLIL_CALL_SSA:\r\n return False\r\n\r\n # invalid\r\n if insn.output.operation != MediumLevelILOperation.MLIL_CALL_OUTPUT_SSA:\r\n return False\r\n\r\n # 0x14000d49c\r\n if insn.dest.operation != MediumLevelILOperation.MLIL_CONST_PTR:\r\n return False\r\n\r\n if len(insn.params) != 0:\r\n return False\r\n\r\n return True\r\n```\r\n\r\nWe removed the call destination and the memory versioning constraints. Next, update the params check to check for 3 parameters:\r\n\r\n```python\r\ndef match_3_param_MLIL_CALL_SSA(insn):\r\n if insn.operation != MediumLevelILOperation.MLIL_CALL_SSA:\r\n return False\r\n\r\n if insn.output.operation != MediumLevelILOperation.MLIL_CALL_OUTPUT_SSA:\r\n return False\r\n\r\n if insn.dest.operation != MediumLevelILOperation.MLIL_CONST_PTR:\r\n return False\r\n\r\n if len(insn.params) != 3:\r\n return False\r\n\r\n return True\r\n```\r\n\r\nNow, we have a matcher which will identify MLIL\\_CALL\\_SSA instructions with 3 parameters! Now iterate over MLIL SSA instructions and call the matcher and we're done:\r\n\r\n```python\r\nif __name__ == '__main__':\r\n bv = binaryninja.BinaryViewType.get_view_of_file(sys.argv[1])\r\n bv.update_analysis_and_wait()\r\n\r\n for func in bv.functions:\r\n mlil = func.medium_level_il\r\n\r\n for block in mlil.ssa_form:\r\n for insn in block:\r\n if match_3_param_MLIL_CALL_SSA(insn):\r\n print \"Match: {}\".format(insn)\r\n```\r\n\r\nExample matcher:\r\n\r\n![Example Matcher](https://raw.githubusercontent.com/withzombies/bnil-graph/master/images/matcher.png)\r\n\r\n\r\n## License\r\n\r\nThis project copyright Ryan Stortz (@withzombies) and is available under the Apache 2.0 LICENSE.\r\n", + "minimumbinaryninjaversion": 2096, + "name": "BNIL Instruction Graph", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/20f567c1-92c9-4a32-8b10-45f3373a9aca/versions/75372b5c-9a46-412f-afff-095039751a75/platforms/1959/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/20f567c1-92c9-4a32-8b10-45f3373a9aca/versions/75372b5c-9a46-412f-afff-095039751a75/platforms/1959/download?notrack=1", + "path": "withzombies_bnilgraph", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 89, + "updated_at": "2023-07-19 15:06:16+00:00" + }, + "projectUrl": "https://github.com/withzombies/bnil-graph", + "subdir": "", + "type": [ + "ui" + ], + "version": "1.4.2", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "mechanicalnull", + "dependencies": "", + "description": "Synchronized source code pane for debug binaries", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1563159566, + "license": { + "name": "MIT", + "text": "Copyright 2019 mechanicalnull\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "`Sourcery Pane` uses the magic of debug builds and having access to source code to translate the current location in disassembly into a synchronized view of source code. The only dependency is `addr2line`, which is what is used to do the translation between offsets and source lines. Also features local translation paths for binaries built on other systems and a sync pause/resume button.", + "minimumbinaryninjaversion": 1689, + "name": "Sourcery Pane", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/2812f1a3-4792-4928-81a4-c2971d933b9a/versions/08a5726a-3ae3-43bf-aac0-5b392c603599/platforms/1964/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/2812f1a3-4792-4928-81a4-c2971d933b9a/versions/08a5726a-3ae3-43bf-aac0-5b392c603599/platforms/1964/download?notrack=1", + "path": "mechanicalnull_sourcery_pane", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2019-07-15 02:59:26+00:00" + }, + "projectUrl": "https://github.com/mechanicalnull/sourcery_pane", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Chame1eon", + "dependencies": "", + "description": "A plugin to integrate the Frida dynamic instrumentation toolkit into Binary Ninja.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1591033894, + "license": { + "name": "MIT", + "text": "Copyright (c) 2017 Chame1eon\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin makes use of the Frida dynamic instrumentation framework to simplify dynamic analysis within Binary Ninja. The plugin uses function definitions and type information, either identified by Binary Ninja or user inputted, to define Frida native functions automatically. To intercept a function, all a user needs to do is select the intercept button from the option menu. Once a function is being intercepted, whenever that function is called, by default, the arguments and return value will be logged to the Binary Ninja log. The behaviour of the Frida hooks can also be modified by a user. A demonstration video of the plugin in use in the following video:\n\n[Binary Ninja - Frida Plugin](http://sendvid.com/vw7froy5)\n\n\n### Use Guide\n\n#### Start Plugin\n\nAfter installing the plugin, from either the tools menu or by right clicking on the binary view window, you can select the option \"Frida: Start Plugin\". Selecting this option will bring up a window asking you to select the device you want the plugin to use, any device supported by Frida should also be supported by this plugin. For example, Android and iOS devices should also appear listed here if they are plugged in via USB.\n\n#### Attach to Process\n\nOnce you have the process you want to analyse running, you can select the option \"Frida: Attach to Process\". Choosing this option will provide you with a list of currently running processes on the system you are targeting. Selecting one of those processes will trigger the plugin to use Frida to attach to that process.\n\n#### Select Module (Optional)\n\nBy default, this plugin will use the name of the binary you are analysing to select the target module. For example, if you currently have libssl.so loaded into Binary Ninja, then the plugin will look for that module in the process address. However, if the binary name cannot be found in the process' address space, then the module must be selected manually by running the \"Frida: Select Target Module\" menu option.\n\n#### Intercept Function\n\nNow that the plugin is running, you can start intercepting functions within the binary. To intercept a function all you need to do is right click within that function and select \"Frida: Intercept Function\". Providing there were no errors, that function will now be intercepted by Frida and any time that function is called a log message will be printed with the argument values and return value.\n\n#### Modify Intercept\n\nTo change the default behaviour for an intercepted function, you can use the option \"Frida: Modify Intercept\". Opening this window opens two Multiline input fields. Inside those fields you can enter JavaScript to be executed before and after the function has been run. Above each of the fields is a label to show what the existing hook looks like.\n\n#### Remove Intercept\n\nUsing \"Frida: Remove Intercept\" will safely remove the intercept from the Frida agent.\n\n#### Frida: Reload\n\nWhen modifying function information in Binary Ninja, such as parameter types, there is currently no way to be notified of these events. Therefore, to update the Frida intercepts, in these cases, you will need to manually call \"Frida: Reload\".\n\n#### Frida: Stop Plugin\n\nSafely removes all the hooks from the attached process, before disconnecting from the process.\n\n\n### Future:\n* Allow instruction level interception\n* Add support for using the Frida Stalker\n* Support process patching using Frida\n* Frida Spawn\n\n### Warnings:\n* The Binary Ninja interaction API is, currently, does not support injecting text into a Multiline Field. As a result, hook modification requires a user to retype what they had previously.", + "minimumbinaryninjaversion": 576, + "name": "Frida", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/f4523f68-22cc-4807-ad6f-6f9a60a93d05/versions/93b76a05-fb2d-4d35-88ed-35ce7a1b5a16/platforms/1971/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/f4523f68-22cc-4807-ad6f-6f9a60a93d05/versions/93b76a05-fb2d-4d35-88ed-35ce7a1b5a16/platforms/1971/download?notrack=1", + "path": "chame1eon_binaryninjafrida", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 62, + "updated_at": "2020-06-01 17:51:34+00:00" + }, + "projectUrl": "https://github.com/chame1eon/binaryninja-frida", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.3.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "jofra", + "dependencies": "", + "description": "Finds format string vulnerabilities", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1563202677, + "license": { + "name": "MIT", + "text": "Copyright 2019 jofra\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin will detect format string vulnerabilities and 'format string like' functions.\n\n## Example\n![](https://raw.githubusercontent.com/Vasco-jofra/format-string-finder-binja/master/images/example.gif)\n\n## How it work\n 1. Loads [known functions](https://raw.githubusercontent.com/Vasco-jofra/format-string-finder-binja/master/src/data/default_printf_like_functions.data) that receive a format parameter.\n 2. For each xref of these functions find where the fmt parameter comes from:\n 1. If it comes from an **argument** we mark it as a **'format string like'** function and test its xrefs\n 2. If it is a **constant** value located in a **read-only** area we mark it as **safe**\n 3. If it comes from a known **'safe' function call result** (functions from the `dgettext` family) we mark it as **safe**\n 4. Otherwise we mark it as **vulnerable**\n 3. Prints a markdown report\n\n## Settings\n - `format_string_finder.should_highlight_variable_trace`:\n - Highlight instructions that are used in the trace of the format parameter origin.\n - `format_string_finder.should_enable_tests_plugin`\n - Enable the tests plugin. Only for development.", + "minimumbinaryninjaversion": 1689, + "name": "Format String Finder", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/b58f24d6-2eb8-4bad-bb4c-efd17e12c6f4/versions/b8b41f28-e529-440b-b76e-cbefc6e89534/platforms/1975/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/b58f24d6-2eb8-4bad-bb4c-efd17e12c6f4/versions/b8b41f28-e529-440b-b76e-cbefc6e89534/platforms/1975/download?notrack=1", + "path": "Vascojofra_formatstringfinderbinja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 25, + "updated_at": "2019-07-15 14:57:57+00:00" + }, + "projectUrl": "https://github.com/Vasco-jofra/format-string-finder-binja", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "shareef12", + "dependencies": "", + "description": "Find IRP dispatch routines and valid IOCTLs in a Windows kernel driver", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1565226626, + "license": { + "name": "MIT", + "text": "Copyright (c) 2019 shareef12.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin will try to find and label IRP dispatch routines initialized in the\nDriverEntry routine. Additionally, this plugin will attempt to identify valid\nIOCTL control codes that the driver supports. Handler code for detected IOCTLs\nwill be labeled, and CTL\\_CODE macros will be generated.", + "minimumbinaryninjaversion": 1689, + "name": "Windows Driver Analyzer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/1df48b00-f0fe-47af-9ba3-97e999f17ab2/versions/f157157a-4aa7-4c9f-9c2a-a801b595c3ba/platforms/1982/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/1df48b00-f0fe-47af-9ba3-97e999f17ab2/versions/f157157a-4aa7-4c9f-9c2a-a801b595c3ba/platforms/1982/download?notrack=1", + "path": "shareef12_driveranalyzer", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 20, + "updated_at": "2019-08-08 01:10:26+00:00" + }, + "projectUrl": "https://github.com/shareef12/driveranalyzer", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Michal Melewski", + "dependencies": "", + "description": "Decorate encountered syscalls with details like name and arguments", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1563231878, + "license": { + "name": "MIT", + "text": "Copyright 2019 Michal Melewski\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "BinaryNinja Syscall annotator\n====================\nThis is a plugin for Binary Ninja Reversing Platform.\nUpon encountering a syscall it gets annotated with retrieved arguments.\n", + "minimumbinaryninjaversion": 776, + "name": "Syscaller", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/ace65fb7-cfa1-4a3d-9de4-adb293a57f67/versions/80329347-2361-44a3-9b14-caae24bc227a/platforms/1991/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/ace65fb7-cfa1-4a3d-9de4-adb293a57f67/versions/80329347-2361-44a3-9b14-caae24bc227a/platforms/1991/download?notrack=1", + "path": "carstein_Syscaller", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 46, + "updated_at": "2019-07-15 23:04:38+00:00" + }, + "projectUrl": "https://github.com/carstein/Syscaller", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "404'd", + "dependencies": "", + "description": "Binary Ninja plugin providing various niche utilities for working with PE binaries", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1607802699, + "license": { + "name": "MIT", + "text": "Copyright (c) 2017-2019 Simen Lybekk\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Binary Ninja PE Utils\nBunch'a niche utilities for working with PE-based binaries.\n\n## Features\n\n### Resolve ordinal imports\nOrdinal imports can be resolved to symbol names from external BNDBs.\nIf you rename an exported function in the external BNDB, the name you\ndefined will be used instead of the original export name.\n\nGiven an example import as shown below:\n\n![Import table with unresolved ordinals](https://raw.githubusercontent.com/404d/peutils/master/screens/table_not_loaded.png)\n\n![IAT with unresolved ordinals](https://raw.githubusercontent.com/404d/peutils/master/screens/iat_unsynced.png)\n\nBy loading a binary view for `OLEAUT32.dll`, we can update the import\nnames for the target binary view with the real name behind the import:\n\n![Import table with resolved ordinals](https://raw.githubusercontent.com/404d/peutils/master/screens/table_loaded.png)\n\n![IAT with resolved ordinals](https://raw.githubusercontent.com/404d/peutils/master/screens/iat_synced.png)\n\n\n### Synchronize symbol names and types across binaries\nTypes defined in external BNDBs can be transferred to the current binary\nview in order to aid with reversing.\n\nContinuing from the above example, we can rename the arg of the function\n`SysStringLen` from the external BNDB `OLEAUT32.dll`:\n\n![Function with renamed argument](https://raw.githubusercontent.com/404d/peutils/master/screens/func_renamed_arg.png)\n\nWhen synced, the IAT will be updated with the new argument:\n\n![IAT with renamed argument](screens/iat_renamed.png)\n\nWe can also see that the new argument is exposed through other\ndisassembly views, like MLIL:\n\n![MLIL call with renamed argument](https://raw.githubusercontent.com/404d/peutils/master/screens/mlil_renamed_arg.png)\n\nAs mentioned earlier, symbol names also get transferred between loaded BNDBs.\nRenaming the export from the external BNDB then resyncing, we can see that the\nchanges is transferred to the target binary view:\n\n![Function with renamed symbol](https://raw.githubusercontent.com/404d/peutils/master/screens/func_renamed_sym.png)\n\n![MLIL call with renamed symbol](https://raw.githubusercontent.com/404d/peutils/master/screens/mlil_renamed_sym.png)\n", + "minimumbinaryninjaversion": 2576, + "name": "peutils", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/e05003ab-b5bc-4bfe-bc41-1e44def946e4/versions/020c999f-a60f-41dc-80d8-bf11ec0c8e5a/platforms/1994/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/e05003ab-b5bc-4bfe-bc41-1e44def946e4/versions/020c999f-a60f-41dc-80d8-bf11ec0c8e5a/platforms/1994/download?notrack=1", + "path": "404d_peutils", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 10, + "updated_at": "2020-12-12 19:51:39+00:00" + }, + "projectUrl": "https://github.com/404d/peutils", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "404'd", + "dependencies": "", + "description": "Various auto analysis utilities", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1607801316, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 Simen Lybekk\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Binary Ninja Auto Utils\nAuto Utils provides various helpers for automatically discovering features about a binary.\n\nSome examples:\n\n * Renaming of methods based on logging with method names\n * That's it right now, sorry\n\n## Examples\n\n### Automatic symbol name discovery based on call args\nIn cases where you for example have a common logging function that will log the\ncaller's name using an argument passed to it, the plugin will be able to rename\nthe names of all callers based on the strings left in the binary.\n\nGiven an example binary with methods as shown below:\n\n![Subroutines without clear or meaningful names](https://raw.githubusercontent.com/404d/autoutils/master/extras/discover_arg_before.png)\n\nBy running the \"Analysis \u2192 Discover caller names by call parameters\" action\nwhile being inside the `log_msg` subroutine and providing it with the parameter\nname `arg1`, the plugin will change the name of all callers to `log_msg` as such:\n\n![Subroutines after call-argument name discovery](https://raw.githubusercontent.com/404d/autoutils/master/extras/discover_arg_after.png)\n", + "minimumbinaryninjaversion": 2096, + "name": "Auto Utils", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/23fa3e22-4088-4ca8-b3f5-7b089fd5ae0b/versions/1347404c-405f-43db-a0f9-f3fb8690611f/platforms/2001/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/23fa3e22-4088-4ca8-b3f5-7b089fd5ae0b/versions/1347404c-405f-43db-a0f9-f3fb8690611f/platforms/2001/download?notrack=1", + "path": "404d_autoutils", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 12, + "updated_at": "2020-12-12 19:28:36+00:00" + }, + "projectUrl": "https://github.com/404d/autoutils", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Mark Griffin", + "dependencies": "msgpack\n", + "description": "Scriptable code coverage analysis and visualization plugin", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1676487002, + "license": { + "name": "MIT", + "text": "Copyright 2023 ForAllSecure, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# bncov - Scriptable Binary Ninja plugin for coverage analysis and visualization\n\nbncov provides a scriptable interface for bringing together coverage\ninformation with Binary Ninja's static analysis and visualization. Beyond\nvisualization, the abstractions in bncov allow for programmatic reasoning\nabout coverage. It was designed for interactive GUI use as well as for\nfactoring into larger analysis tasks and standalone scripts.\n\n![Demo Overview](https://github.com/ForAllSecure/bncov/raw/master/pictures/bncov_demo.png)\n\nThis plugin is provided as a way to give back to the community,\nand is not part of the Mayhem product. If you're interested in Mayhem, the\ncombined symbolic execution and fuzzing system, check us out at\n[forallsecure.com](http://forallsecure.com).\n\n## CHANGELOG\nFeb 2023: drcov format version 3 now supported.\nOct 2021: Some changes in the API:\n\n- Added a `ctx` object that is keyed off the Binary View and helpers\n `bncov.get_ctx` and `bncov.get_covdb` to support multibinary use case in the\n UI, so now you can interactively use bncov across tabs!\n- Changed old helpers `bncov.get_bv`/`bncov.get_covdb` to\n `bncov.make_bv`/`bncov.make_covdb` for making a Binary View from a target file\n and covdb from a binary and a coverage directory, respectively\n- All function-related covdb member functions now default to keying off of\n function start addresses rather than names since function starts are unique\n and more usable for many applications. Extra optional args or helper functions\n implement the existing behavior.\n- Abandoning Python2 suport\n- Added `download_dynamorio.py` for the sloths\n- Minor quality-of-life fixes\n\n## Installation\n\nThe easiest way is to install via the Binary Ninja plugin manager!\nThe only difference when installing via plugin manager is that wherever\nyou see `import bncov`, you may have to do `import ForAllSecure_bncov as bncov`.\n\nAlternatively:\n\n - Clone or copy this directory into your binja plugins folder.\n([More detailed instructions here](https://docs.binary.ninja/guide/plugins/index.html#using-plugins))\n - (Optional) pip install msgpack if you want to enable loading/saving\ncoverage database files.\n\n## Usage\n\nCheck out the [tutorial](/tutorial/) for a complete walkthrough or how to get\nstarted right away using data that's already included in this repo!\n\nFirst collect coverage information in DynamoRIO's drcov format\n([example script](/dr_block_coverage.py)).\n\nTo use in Binary Ninja GUI:\n\n1. Open the target binary, then import coverage files using one of\nthe commands in `bncov/Coverage Data/Import *`\neither from the Tools menu or from the context (right-click) menu.\n2. Explore the coverage visualization and explore additional analyses from\nthe right-click menu or with the built-in interpreter and `import bncov`\nfollowed by `covdb = bncov.get_covdb(bv)`.\n\nScripting:\n\n1. Ensure bncov's parent directory is in your module search path\nOR add it to sys.path at the top of your script like this:\n`sys.path.append(os.path.split(os.path.normpath('/path/to/bncov'))[0])`\n2. `import bncov` and write scripts with the CoverageDB class in\n`coverage.py`, check out the `scripts` folder for examples.\n\n## Screenshots\n\nImport a coverage directory containing trace files to see blocks colored in\nheat map fashion: blocks covered by most traces (blue) or by few traces\n(red). Additional context commands (right-click menu) include frontier\nhighlighting and a per-function block coverage report.\n\n* Watch a directory to have new coverage results get automatically highlighted\nwhen new coverage files appear\n* See at a glance which blocks are only covered by one or a few traces\n(redder=rarer, bluer=more common)\n* Quickly discover rare functionality visually or with scripting\n* Identify which blocks have outgoing edges not covered in the traces\n* See coverage reports on functions of interest or what functionality may not\nbe hit, or write your own analyses for headless scripting.\n\n![Block Coverage Report](https://github.com/ForAllSecure/bncov/raw/master/pictures/Coverage-Report.png)\n\n## Notes\n\nCurrently the plugin only deals with block coverage and ingests files in the\ndrcov format or module+offset format. Included in the repo is\n`dr_block_coverage.py` which can be used for generating coverage files, just\nspecify your DynamoRIO install location with an environment variable (or\nmodify the script) and it can process a directory of inputs. DynamoRIO binary\npackages can be found\n[here](https://github.com/DynamoRIO/dynamorio/wiki/Downloads) or you can use the\nincluded `download_dynamorio.py` script. See the\n[tutorial](/tutorial/) for a complete walkthrough.\n\nPlease file any feature requests/bugs as issues on GitHub, we welcome any input\nor feedback.\n\n## Scripting\n\nbncov was designed so users can interact directly with the data structures\nthe plugin uses. See the `scripts/` directory for more ideas.\n\n* Helpful CoverageDB members:\n * trace_dict (maps filenames to set of basic block start addresses)\n * block_dict (maps basic block start addresses to files containing it)\n * total_coverage (set of start addresses of the basic blocks covered)\n\n* Helpful CoverageDB functions:\n * get_traces_from_block(addr) - get files that cover the basic block\n starting at addr.\n * get_rare_blocks(threshold) - get blocks covered by <= 'threshold' traces\n * get_frontier() - get blocks that have outgoing edges that aren't covered\n * get_functions_from_blocks(blocks, by_name=False) - return dict mapping\n function starts/names to blocks they contain\n * get_traces_from_function(function_start) - return set of traces that have\n coverage in the specified function\n * get_traces_from_function_name(function_name, demangle=False) - return set\n of traces that have coverage in the specified function\n\n* You can use Binary Ninja's python console and built-in python set operations with\nbncov.highlight_set() to do custom highlights in the Binary Ninja UI.\n", + "minimumbinaryninjaversion": 1470, + "name": "bncov", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/0156f433-da0d-4824-b0f8-a5e7d6f3eb37/versions/f130288d-d247-4abf-a927-cc7ee6d5efb5/platforms/2006/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/0156f433-da0d-4824-b0f8-a5e7d6f3eb37/versions/f130288d-d247-4abf-a927-cc7ee6d5efb5/platforms/2006/download?notrack=1", + "path": "ForAllSecure_bncov", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 136, + "updated_at": "2023-02-15 18:50:02+00:00" + }, + "projectUrl": "https://github.com/ForAllSecure/bncov", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.4.2", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "whitequark", + "dependencies": "", + "description": "A plugin providing an analysis for Itanium C++ ABI.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1677683692, + "license": { + "name": "BSD-0-clause", + "text": "Copyright (C) 2018 by whitequark\n\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE." + }, + "longdescription": "This plugin provides a custom demangler, an analysis that decodes mangled names and updates function signatures, and an analysis that decodes RTTI and vtables and discovers new procedures based on virtual function pointers.", + "minimumbinaryninjaversion": 555, + "name": "Itanium C++ ABI", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/511c3ae7-de2b-435e-ae8a-6f21e3b8efd2/versions/f0c51a06-04ac-480e-9dd1-e4f3a6da405b/platforms/2020/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/511c3ae7-de2b-435e-ae8a-6f21e3b8efd2/versions/f0c51a06-04ac-480e-9dd1-e4f3a6da405b/platforms/2020/download?notrack=1", + "path": "whitequark_binja_itanium_cxx_abi", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 71, + "updated_at": "2023-03-01 15:14:52+00:00" + }, + "projectUrl": "https://github.com/whitequark/binja_itanium_cxx_abi", + "subdir": "", + "type": [ + "analysis" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "whitequark", + "dependencies": "", + "description": "A plugin providing the 16-bit Intel architecture.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1567626763, + "license": { + "name": "BSD-0-clause", + "text": "Copyright (C) 2018 by whitequark\n\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE." + }, + "longdescription": "# Binary Ninja Intel 8086 plugin\n\nThe Intel 8086 plugin provides a 16-bit x86 architecture for Binary Ninja.\n\n## Features\n\nThis plugin decodes and lifts all original 8086 instructions. However, 80186 (and more recent) instructions such as `enter` and `leave` are not recognized. Non-well-formed instructions (including unrecognized opcodes and invalid addressing modes) are displayed as `unrecognized` and rejected during lifting.\n\nThe `pascal` and `cdecl` calling conventions are provided.\n\n![](screenshot.png)\n\n## License\n\n[0-clause BSD](LICENSE-0BSD.txt)\n", + "minimumbinaryninjaversion": 555, + "name": "Intel 8086 Architecture", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/2e5049e4-4525-4f55-861f-f85e1422f928/versions/bea4c72a-66c6-4267-b19f-ac399fe61b8d/platforms/2025/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/2e5049e4-4525-4f55-861f-f85e1422f928/versions/bea4c72a-66c6-4267-b19f-ac399fe61b8d/platforms/2025/download?notrack=1", + "path": "whitequark_binjai8086", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 17, + "updated_at": "2019-09-04 19:52:43+00:00" + }, + "projectUrl": "https://github.com/whitequark/binja-i8086", + "subdir": "", + "type": [ + "arch" + ], + "version": "0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "whitequark", + "dependencies": "", + "description": "A plugin providing the Renesas M16C architecture.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1579432976, + "license": { + "name": "BSD-0-clause", + "text": "Copyright (C) 2020 by whitequark\n\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE." + }, + "longdescription": "The Renesas M16C plugin provides the corresponding architecture for Binary Ninja.\n\nThis plugin decodes all M16C instructions and provides control flow analysis. It also detects with a high degree of confidence, and relocates raw binary M16C ROM dumps.\n\nThis plugin does not currently provide lifting or SFR definitions.", + "minimumbinaryninjaversion": 1921, + "name": "Renesas M16C Architecture", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/d2698155-6765-40c3-b9e0-fddda6ca5bd6/versions/3f6476b8-9bbd-4548-b9c3-80020d99365f/platforms/2029/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/d2698155-6765-40c3-b9e0-fddda6ca5bd6/versions/3f6476b8-9bbd-4548-b9c3-80020d99365f/platforms/2029/download?notrack=1", + "path": "whitequark_binjam16c", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 16, + "updated_at": "2020-01-19 11:22:56+00:00" + }, + "projectUrl": "https://github.com/whitequark/binja-m16c", + "subdir": "", + "type": [ + "architecture" + ], + "version": "0.1", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "Andrea Ferraris", + "dependencies": "", + "description": "Forward and backward instruction slicer", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1606311678, + "license": { + "name": "MIT", + "text": "Copyright 2019 Andrea Ferraris\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin allows to highlight the backward and forward slicing thanks to amazing _MLIL_ Binary Ninja rappresentation.\n\n It is based on the work of [Josh Watson](https://gist.github.com/joshwatson/f28b7a2d3356a0ed39823aaea66b50d0).", + "minimumbinaryninjaversion": 1904, + "name": "Instruction Slicer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/37da6cca-67a8-4cbe-9e4e-16464ca4ccac/versions/c89d4f54-e71b-4b20-95b8-c448e85fba74/platforms/2035/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/37da6cca-67a8-4cbe-9e4e-16464ca4ccac/versions/c89d4f54-e71b-4b20-95b8-c448e85fba74/platforms/2035/download?notrack=1", + "path": "c3r34lk1ll3r_Instruction_Slicer", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 18, + "updated_at": "2020-11-25 13:41:18+00:00" + }, + "projectUrl": "https://github.com/c3r34lk1ll3r/Instruction_Slicer", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Hugo Porcher (@icecr4ck)", + "dependencies": "", + "description": "A loader and diassembler for Game Boy ROMs.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1605619920, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 Hugo Porcher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Game Boy loader and architecture plugin for Binary Ninja\nAuthor: **Hugo Porcher (icecr4ck)**\n\n## Description\n\nA Binary Ninja plugin to load Game Boy ROMs and disassemble Game Boy architecture bytecode (Sharp LR35902).\n\nThis plugin is based on the description of Game Boy CPU opcodes from [here](https://github.com/lmmendes/game-boy-opcodes).\n\n## Game Boy characteristics\n\n* CPU: 8-bit\n* RAM size: 8KB\n* Similar to Intel 8080 and 8085 as well as [Zilog Z80](https://en.wikipedia.org/wiki/Zilog_Z80) microprocessors\n* ROM structure\n\t* 0-0x100: program executed when the Game Boy is powered up\n\t* 0x100-0x103: entrypoint\n\t* 0x104-0x133: scrolling Nintendo graphic (needs to remain unchanged)\n\t* 0x134-0x14f: ROM header\n\t\t* 0x134-0x142: ROM title in uppercase ASCII\n\t\t* 0x143: GB Color (0x80) or GB classic (0)\n\t\t* 0x144-0x145: Licensee code (new)\n\t\t* 0x146: GB (0) or Super GB (3)\n\t\t* 0x147: cartridge type\n\t\t* 0x148: ROM size (number of banks from 2 to 96)\n\t\t* 0x149: RAM size (nb of banks from 0 to 16)\n\t\t* 0x14a: japanese code (0) or not (1)\n\t\t* 0x14b: licensee code (old)\n\t\t* 0x14c: mask ROM version number\n\t\t* 0x14d: complement check\n\t\t* 0x14e-014f: checksum \n\n## Installation\n\nRun the following command in your Binary Ninja plugins directory:\n```bash\ngit clone https://github.com/icecr4ck/bnGB.git\n```\n\n## Minimum version\n\nThis plugin has only been tested on the following version of Binary Ninja:\n\n* release - 1.2.1921\n\n## References\n\n* [Game Boy CPU manual](http://marc.rawer.de/Gameboy/Docs/GBCPUman.pdf)\n* [GB opcodes](https://github.com/lmmendes/game-boy-opcodes) \n* [Using and writing Binary Ninja plugins](https://docs.binary.ninja/guide/plugins/index.html)\n* [Gameboy ROM header](https://www.zophar.net/fileuploads/2/10597teazh/gbrom.txt)\n\n## License\n\nThis plugin is released under a [MIT](LICENSE) license.\n", + "minimumbinaryninjaversion": 1200, + "name": "Game Boy Loader and Architecture Plugin", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/1744e4b1-056d-4bdf-836c-51f5e4404c5e/versions/06807eb0-81d6-4da3-b904-1512add8b17c/platforms/2042/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/1744e4b1-056d-4bdf-836c-51f5e4404c5e/versions/06807eb0-81d6-4da3-b904-1512add8b17c/platforms/2042/download?notrack=1", + "path": "icecr4ck_bnGB", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 22, + "updated_at": "2020-11-17 13:32:00+00:00" + }, + "projectUrl": "https://github.com/icecr4ck/bnGB", + "subdir": "", + "type": [ + "architecture", + "binaryview" + ], + "version": "1.0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Galen Williamson", + "dependencies": "", + "description": "A disassembler and lifter for the Motorola 68k architecture.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1654890437, + "license": { + "name": "MIT", + "text": "Copyright 2022 Alex Forencich, Galen Williamson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin disassembles Motorola 68k machine code and generates LLIL.\\n\\nTo install this plugin, navigate to your Binary Ninja plugins directory, and run\\n\\n```git clone https://github.com/galenbwill/binaryninja-m68k.git m68k```", + "minimumbinaryninjaversion": 3469, + "name": "Motorola 68k Architecture Plugin", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/9cf9549d-55d7-4bf5-981e-b56ea8187f52/versions/96f15734-b7ba-4937-b813-6a6333f080b1/platforms/2049/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/9cf9549d-55d7-4bf5-981e-b56ea8187f52/versions/96f15734-b7ba-4937-b813-6a6333f080b1/platforms/2049/download?notrack=1", + "path": "galenbwill_binaryninjam68k", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2022-06-10 19:47:17+00:00" + }, + "projectUrl": "https://github.com/galenbwill/binaryninja-m68k", + "subdir": "", + "type": [ + "architecture" + ], + "version": "v0.5", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Jan Beck", + "dependencies": "", + "description": "This plugin removes some simple known obfuscation techniques to cut down on the tedium.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1591624575, + "license": { + "name": "MIT", + "text": "Copyright (c) \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Binary Ninja plugin to clean up some common obfuscation techniques (dirty tricks).

There is an empty template included as well to be able to easily add your own, because there are many many obfuscations out there. However, often they get reused or slightly modified, and then it is useful to have a starting point/example. Pull requests are very welcome.

More details available at:
https://www.janbeck.com/cybersecurity-challenges-ctfs-and-more/cleantricks-to-deal-with-dirty-tricks-binary-ninja-deobfuscation-plugin

But as a simple example of what this is for, consider the following code:



The overlapping code is hidden in the literal value, 0x5ebcbff49c3ff49. It simply increases r11, then decreases it again, then jumps to the address right behind the JZ check. I have come across a binary that uses this same trick on different registers thousands of times. This plugin allows automating this patch:



And then, after the patch, the code is much simpler. In many cases this allows binary ninja to reanalyze the program flow into a much more convienient form.

", + "minimumbinaryninjaversion": 1200, + "name": "Clean Tricks", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/2808e83b-a3cd-4978-86c7-5c8d05e547d4/versions/21e10df5-bddf-400e-8bb5-0d91b3865993/platforms/2053/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/2808e83b-a3cd-4978-86c7-5c8d05e547d4/versions/21e10df5-bddf-400e-8bb5-0d91b3865993/platforms/2053/download?notrack=1", + "path": "janbbeck_CleanTricks", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 22, + "updated_at": "2020-06-08 13:56:15+00:00" + }, + "projectUrl": "https://github.com/janbbeck/CleanTricks", + "subdir": "", + "type": [ + "architecture", + "binaryview", + "core", + "helper", + "ui" + ], + "version": "1.4", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "Katharina Utz", + "dependencies": "", + "description": "RISC-V architecture plugin.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1610977007, + "license": { + "name": "Apache-2.0", + "text": "Copyright 2020 Katharina Utz\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\n\thttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + }, + "longdescription": "# bn-riscv\n\nAn architecture plug-in that allows binary ninja to load RISC-V ELF binaries.\n\n## Installation\n\nFirst, you will need an installation of [capstone](https://github.com/aquynh/capstone) that supports RISC-V. Currently you have to install the `next` branch, e.g.,:\n\n```\npip install --user 'git+https://github.com/aquynh/capstone.git@next#subdirectory=bindings/python'\n```\n\nThen drop this repository into your plugins directory manually. Note that you should use it from master if possible, releases are somewhat rare.\n", + "minimumbinaryninjaversion": 0, + "name": "bn-riscv", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/93b888e7-18b7-44af-a681-c3fcf8e8aa5f/versions/3648c4d2-a604-4fc2-8ea8-db4e6ea0dadd/platforms/2060/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/93b888e7-18b7-44af-a681-c3fcf8e8aa5f/versions/3648c4d2-a604-4fc2-8ea8-db4e6ea0dadd/platforms/2060/download?notrack=1", + "path": "uniduesyssec_bnriscv", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 14, + "updated_at": "2021-01-18 13:36:47+00:00" + }, + "projectUrl": "https://github.com/uni-due-syssec/bn-riscv", + "subdir": "", + "type": [ + "architecture" + ], + "version": "0.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "SpecterDev", + "dependencies": "", + "description": "Allows users to import idc database dumps from IDA into Binary Ninja.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1665625261, + "license": { + "name": "MIT", + "text": "Copyright (c) \n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Making the switch from IDA to Binary Ninja but need your function names and symbols to carry over? This plugin will take an IDC file and automatically import the functions, strings, and comments. It doesn't require any additional plugins for IDA, just export from IDA to an IDC script file, and let this plugin do the work on Binary Ninja's end.", + "minimumbinaryninjaversion": 2015, + "name": "IDC Importer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/0cc76483-0580-417d-96f9-868397e0669a/versions/6f79971c-c53d-40f3-b9b8-11f86c8f18f8/platforms/2065/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/0cc76483-0580-417d-96f9-868397e0669a/versions/6f79971c-c53d-40f3-b9b8-11f86c8f18f8/platforms/2065/download?notrack=1", + "path": "Cryptogenic_idc_importer", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 40, + "updated_at": "2022-10-13 01:41:01+00:00" + }, + "projectUrl": "https://github.com/Cryptogenic/idc_importer", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.2", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "atxsinn3r", + "dependencies": "", + "description": "Dumps HLIL code to a directory", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1591511295, + "license": { + "name": "BSD-3-Clause", + "text": "Copyright (c) 2020, Wei Chen\nAll rights reserved.\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n1. Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n2. Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation\nand/or other materials provided with the distribution.\n3. Neither the name of the copyright holder nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." + }, + "longdescription": "# Binary Ninja HLIL Dump\n\n## Description\n\nThis is a Binary Ninja plugin written in Python that allows you to decompile the whole binary,\nand then dump all that in a directory. There are some scenarios where this might be helpful,\nfor example:\n\n* Using your favorite text editor (such as Sublime) to read/find code.\n* Being able to `diff -u` source.\n* etc.\n", + "minimumbinaryninjaversion": 2096, + "name": "HLIL Dump", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/68ddaefb-0945-401e-a9a1-fdc79f98a07b/versions/2957b89c-9cfb-46ae-9348-87759e5504d0/platforms/2073/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/68ddaefb-0945-401e-a9a1-fdc79f98a07b/versions/2957b89c-9cfb-46ae-9348-87759e5504d0/platforms/2073/download?notrack=1", + "path": "atxsinn3r_BinjaHLILDump", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 22, + "updated_at": "2020-06-07 06:28:15+00:00" + }, + "projectUrl": "https://github.com/atxsinn3r/BinjaHLILDump", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.1", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "lunixbochs", + "dependencies": "", + "description": "Realtime IDA Pro and Binary Ninja sync plugin", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1589418636, + "license": { + "name": "MIT", + "text": "Copyright (c) 2019 lunixbochs\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "revsync\n=======\n\nRealtime IDA Pro and Binary Ninja sync plugin\n\nSyncs:\n\n- Comments\n- Symbol names\n- Stack var names\n- Structs\n- Code coverage (how much time was spent looking at a block)\n\n\nBinary Ninja Installation\n-------------------------\n\n- Install via the Plugin Manager (CMD/CTL-SHIFT-M)\n\nor:\n\n- Clone to [your plugin folder](https://github.com/Vector35/binaryninja-api/tree/dev/python/examples#loading-plugins).\n\nThen:\n\n- Restart if required.\n- Fill in config when prompted.\n- Load your binary, wait for analysis to finish\n- Use the Tools Menu, Right-Click or command-palette (CMD/CTL-P) to trigger revsync/Load\n-Done!\n", + "minimumbinaryninjaversion": 1528, + "name": "revsync", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/34ea8f9a-21e1-4ad8-9b85-8b6235371538/versions/57dc7d9a-0a83-4a44-9554-8687651ac329/platforms/2077/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/34ea8f9a-21e1-4ad8-9b85-8b6235371538/versions/57dc7d9a-0a83-4a44-9554-8687651ac329/platforms/2077/download?notrack=1", + "path": "lunixbochs_revsync", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 102, + "updated_at": "2020-05-14 01:10:36+00:00" + }, + "projectUrl": "https://github.com/lunixbochs/revsync", + "subdir": "", + "type": [ + "ui" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "toolCHAINZ", + "dependencies": "", + "description": "DUMB: An Example Architecture for Binary Ninja", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1583087498, + "license": { + "name": "MIT", + "text": "Copyright 2020 toolCHAINZ\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "![DUMB logo](https://raw.githubusercontent.com/toolCHAINZ/DUMB/master/dumb.svg?sanitize=true =400x800)\r\n\r\nThis is a very simple architecture (and executable format) made for the purpose of teaching how to write Binja loaders and architectures.\r\n\r\nMy hope for this repo is that it can be a simple teaching resource for this topic. While it covers the basics, it leaves some important topics (like flags) uncovered. PRs welcome!\r\n\r\nAn example \"firmware image\" is included [here](https://github.com/toolCHAINZ/DUMB/blob/master/test.bin)\r\n\r\n# DUMB Architecture\r\n\r\nFollowing is a description of the architecture. In this document, we use the following format to specify bitfields:\r\n\r\n`0:xxyy` represents a single byte: `0` means that the first (upper) nibble of the byte is zero, while `xxyy` indicates two 2-bit fields making up the lower nibble of the byte.\r\n\r\n## Registers\r\n\r\n* `sp` (stack pointer)\r\n* `r0` (GPR)\r\n* `r1` (GPR)\r\n* `r2` (GPR)\r\n* `r3` (GPR)\r\n\r\n## Instructions\r\n\r\n### One Byte Instructions\r\n\r\n| Format | Tokenization | Meaning |\r\n| -------- | ------------ | ------------------------------------ |\r\n| `0:xxyy` | `mov rx ry` | Move the value in `ry` into `rx` |\r\n| `1:xxyy` | `add rx ry` | Add the values of `ry` and `rx` and store the result in `rx` |\r\n| `2:xxyy` | `and rx ry` | And the values of `ry` and `rx` and store the result in `rx` |\r\n| `3:xxyy` | `or rx ry` | Or the values of `ry` and `rx` and store the result in `rx` |\r\n| `4:xxyy` | `xor rx ry` | Xor the values of `ry` and `rx` and store the result in `rx` |\r\n| `9:____` | `ret` | Return from the current function to the address stored on the stack. |\r\n\r\n### Five Byte Instructions\r\n| Format | Tokenization | Meaning |\r\n| -------------------- | ---------------------- | -------------------------------------------------------------------------------- |\r\n| `a0 XX XX XX XX` | `call XXXXXXXXX` | Push `addr + 5` onto the stack and transfer execution to `XXXXXXXX` (little endian dword) |\r\n| `7:xxyy XX XX XX XX` | `jlt rx, ry, XXXXXXXX` | If `rx` is less than `ry`, jump to `XXXXXXXX`, otherwise continue to next instr |\r\n| `8:__rr XX XX XX XX` | `mov rr, XXXXXXXX` | Move the immediate `XXXXXXXX` into `rr` |\r\n\r\n# DUMB Format\r\n\r\nDUMB files are extremely simple, containing only magic, and metadata for a single section. The format is as follows:\r\n\r\n| Offset | Length | Contents (if applicable) | Description |\r\n| ------ | ------ | ------------------------ | --------------------------------------------- |\r\n| 0 | 4 | \"`DUMB`\" | Magic |\r\n| 4 | 4 | N/A | Section length stored as little endian dword |\r\n| 8 | 4 | N/A | Address to load section at, stored as little endian dword |\r\n\r\n", + "minimumbinaryninjaversion": 1921, + "name": "DUMB", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/689f8c62-0e2f-44a7-ad46-a8ddda687142/versions/54ad720b-458e-4890-a83b-2e9490c6ef8e/platforms/2084/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/689f8c62-0e2f-44a7-ad46-a8ddda687142/versions/54ad720b-458e-4890-a83b-2e9490c6ef8e/platforms/2084/download?notrack=1", + "path": "toolCHAINZ_DUMB", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 16, + "updated_at": "2020-03-01 18:31:38+00:00" + }, + "projectUrl": "https://github.com/toolCHAINZ/DUMB", + "subdir": "", + "type": [ + "architecture", + "binaryview" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "toolCHAINZ", + "dependencies": "argparse-addons==0.12.0 ; python_version >= \"3.10\" and python_version < \"4.0\"\nbincopy==17.14.5 ; python_version >= \"3.10\" and python_version < \"4.0\"\nhumanfriendly==10.0 ; python_version >= \"3.10\" and python_version < \"4.0\"\npyelftools==0.31 ; python_version >= \"3.10\" and python_version < \"4.0\"\npyreadline3==3.4.1 ; sys_platform == \"win32\" and python_version >= \"3.10\" and python_version < \"4.0\"\n", + "description": "A simple loader for Motorola SREC, Intel HEX, and TI-TXT files.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1712700818, + "license": { + "name": "MIT", + "text": "Copyright 2020-2023 toolCHAINZ\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Hexfiles\n\n `hexfiles` provides a simple `BinaryView` for \"Hex\" files (Motorola SREC, Intel Hex, TI-TXT). The actual parsing of hex files is offloaded to the excellent Python library `bincopy`. For now, this `BinaryView` is read-only (patches will not be saved back into the source hex file). Will hopefully add that soon.", + "minimumbinaryninjaversion": 2170, + "name": "hexfiles", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/eeca882b-b88b-492c-a76c-e0e1340e09b7/versions/4be9063f-283a-4957-81f3-873009d9911d/platforms/2090/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/eeca882b-b88b-492c-a76c-e0e1340e09b7/versions/4be9063f-283a-4957-81f3-873009d9911d/platforms/2090/download?notrack=1", + "path": "toolCHAINZ_hexfiles", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 10, + "updated_at": "2024-04-09 22:13:38+00:00" + }, + "projectUrl": "https://github.com/toolCHAINZ/hexfiles", + "subdir": "", + "type": [ + "binaryview" + ], + "version": "1.3.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Meador Inge", + "dependencies": "wasamole==0.5.0\n", + "description": "This is a plugin for disassembling and lifting WASM images..", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1593544951, + "license": { + "name": "MIT", + "text": "Copyright (c) 2019 Meador Inge\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This is a plugin for disassembling and lifting WASM images..", + "minimumbinaryninjaversion": 2170, + "name": "WASM Plugin", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/c78cf764-912d-45ff-a620-549e30700380/versions/9d245584-1235-40be-92ec-e4eead8f3c80/platforms/2095/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/c78cf764-912d-45ff-a620-549e30700380/versions/9d245584-1235-40be-92ec-e4eead8f3c80/platforms/2095/download?notrack=1", + "path": "ivisionresearch_binjawa", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 15, + "updated_at": "2020-06-30 19:22:31+00:00" + }, + "projectUrl": "https://github.com/ivision-research/binjawa", + "subdir": "", + "type": [ + "architecture", + "binaryview" + ], + "version": "0.5.0", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "Layle", + "dependencies": "", + "description": "Integrates the VTIL (Virtual-machine Translation Intermediate Language) Project with Binary Ninja", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1593911011, + "license": { + "name": "BSD-3-Clause", + "text": "Copyright (c) 2020, Can B\u00f6l\u00fck\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\nthis list of conditions and the following disclaimer in the documentation\nand/or other materials provided with the distribution.\n\n* Neither the name of [project] nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + }, + "longdescription": "# VTIL-BinaryNinja\nVTIL meets Binary Ninja and provides you with a solution to analyze VTIL code in a less painful manner.\n\nNote: If you default to an IL view, you will need to manaually make sure you select an Assembly view as this plugin does not have any lifting at this time.\n\n## Installation\nInstall via the Plugin Manager in Binary Ninja, or clone this repository into your [plugin folder](https://docs.binary.ninja/guide/plugins.html#using-plugins).\n\n## Screenshots\n![](https://raw.githubusercontent.com/psifertex/VTIL-BinaryNinja/master/images/example.png)\n\n## Dislcaimer\nThis is a **very early proof of concept**. Expect bugs. \n\nKnown issues:\n- Only one VTIL file supported per Binary Ninja process\n- Goto labels are not clickable\n", + "minimumbinaryninjaversion": 1528, + "name": "VTIL Plugin", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/5d2971f1-bf2d-49d8-8460-7f82a460f6a7/versions/6c3de980-2b82-42c8-b373-f19a59812e25/platforms/2101/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/5d2971f1-bf2d-49d8-8460-7f82a460f6a7/versions/6c3de980-2b82-42c8-b373-f19a59812e25/platforms/2101/download?notrack=1", + "path": "vtilproject_VTILBinaryNinja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 93, + "updated_at": "2020-07-05 01:03:31+00:00" + }, + "projectUrl": "https://github.com/vtil-project/VTIL-BinaryNinja", + "subdir": "", + "type": [ + "architecture", + "binaryview" + ], + "version": "1.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "EliseZeroTwo", + "dependencies": "lz4>=3.1.0 ", + "description": "Loader for common Nintendo Switch binaries", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1595425782, + "license": { + "name": "ISC", + "text": "Copyright 2020 EliseZeroTwo\n\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE." + }, + "longdescription": "# Switch-Binja-Loader\n### Author: **EliseZeroTwo**\n\nWork In Progress Binary Ninja Loader for common Nintendo Switch binaries\n\n![Image demoing SMO in Binja](https://github.com/EliseZeroTwo/Switch-Binja-Loader/blob/master/images/home.png)\n\n### Currently Supports\n- NSO\n- KIP\n\n## Credits\n- [ReSwitched for their nxo64.py loader](https://github.com/reswitched/loaders/blob/master/nxo64.py)\n- [Adubbz for his Ghidra Switch Loader](https://github.com/Adubbz/Ghidra-Switch-Loader)\n- [SwitchBrew](https://switchbrew.org/)\n\n## Installation Instructions\n\nInstall all needed packages from pip in requirements.txt (Windows and MacOS Binja ship with an embedded python, [read here on how the docs say to install pip packages](https://docs.binary.ninja/guide/plugins.html#installing-prerequisites), or what I reccomend doing is just changing the python interpreter to a system install of python3 in settings)\n### Windows\n\nClone this repository into `%APPDATA%/Binary Ninja/plugins/`\n\n### Darwin\n\nClone this repository into `~/Library/Application Support/Binary Ninja/plugins/`\n\n### Linux\n\nClone this repository into `~/.binaryninja/plugins/`\n## Minimum Version\n\nBinary Ninja v1200\n\n\n\n## License\n\nThis plugin is released under the [ISC license](https://github.com/EliseZeroTwo/Switch-Binja-Loader/blob/master/LICENSE.txt)\n\n## Metadata Version\n\n2\n", + "minimumbinaryninjaversion": 1200, + "name": "Switch Loader", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/ae9c176c-4253-47a6-afcc-3cd11354962c/versions/b34919de-b302-4ec3-b008-4b38d9ab488a/platforms/2107/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/ae9c176c-4253-47a6-afcc-3cd11354962c/versions/b34919de-b302-4ec3-b008-4b38d9ab488a/platforms/2107/download?notrack=1", + "path": "EliseZeroTwo_SwitchBinjaLoader", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 19, + "updated_at": "2020-07-22 13:49:42+00:00" + }, + "projectUrl": "https://github.com/EliseZeroTwo/Switch-Binja-Loader", + "subdir": "", + "type": [ + "binaryview", + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Luca Borzacchiello", + "dependencies": "z3-solver\n", + "description": "Symbolic execution plugin for BinaryNinja", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1708789429, + "license": { + "name": "2-Clause BSD", + "text": "Copyright 2019-2024 Luca Borzacchiello\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." + }, + "longdescription": "# SENinja - Symbolic Execution Plugin for Binary Ninja\n\n![](https://github.com/borzacchiello/seninja/raw/master/media/pictures/screenshot.png)\nThis is a binary ninja plugin that implements a symbolic execution engine based only on z3, highly inspired by the _angr framework_ (https://angr.io/). \nThe plugin is implemented as an emulator of LLIL instructions that builds and manipulates z3 formulas.\n\nSENinja simulates a debugger: the execution is _path driven_, only one state is _active_ and executes instructions. The other states, generated at branches, are saved in a _deferred queue_. At any time, the active state can be changed with a deferred one.\n\n### UI Widgets\n\nSENinja comes with a side-panel widget that can be used to start and control the execution using the following buttons:\n- \"\": start the execution\n- \"\": step the current state\n- \"\": run until branch\n- \"\": execute the current state until the currently selected address\n- \"\": start a DFS search\n- \"\": start a BFS search\n- \"\": set the currently selected address as the target of the search\n- \"\": avoid the currently selected address during a search\n- \"\": reset targets and avoid addresses\n- \"\": stop a search\n- \"\": reset SENinja\n", + "minimumbinaryninjaversion": 3500, + "name": "SENinja", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/9e54e33f-3026-4fd8-a5de-2dfad5449fdb/versions/3a156488-4ea5-464b-9633-1fc71b3bdcd5/platforms/2114/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/9e54e33f-3026-4fd8-a5de-2dfad5449fdb/versions/3a156488-4ea5-464b-9633-1fc71b3bdcd5/platforms/2114/download?notrack=1", + "path": "borzacchiello_seninja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 345, + "updated_at": "2024-02-24 15:43:49+00:00" + }, + "projectUrl": "https://github.com/borzacchiello/seninja", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.5.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "ArcaneNibble", + "dependencies": "", + "description": "Plugin for ar (.a) archives of object files", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1766290141, + "license": { + "name": "BSD-0-clause", + "text": "Copyright (C) 2018 by ArcaneNibble\r\n \r\n Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.\r\n \r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE." + }, + "longdescription": "# Binary Ninja `.a` plugin\n\nThis plugin processes `.a` files, which are a collection of multiple object files, using the 5.2 container support\n\n\n### Changelog\nFix some metadata fields", + "minimumbinaryninjaversion": 3164, + "name": "ar (.a) archive container transform", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/06073e05-680b-4b47-aefc-9b336b6bbf50/versions/4bd00e53-2c14-4469-b890-fc9e48bcd815/platforms/3001/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/06073e05-680b-4b47-aefc-9b336b6bbf50/versions/4bd00e53-2c14-4469-b890-fc9e48bcd815/platforms/3001/download?notrack=1", + "path": "ArcaneNibble_binja_ar", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 1, + "updated_at": "2025-12-21 04:09:01+00:00" + }, + "projectUrl": "https://github.com/ArcaneNibble/binja-ar", + "subdir": "", + "type": [ + "binaryview" + ], + "version": "0.1", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "Ben Pottier", + "dependencies": "", + "description": "A plugin to detect several common crypto constructs and magic vars.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1695375186, + "license": { + "name": "MIT", + "text": "Copyright (c) 2018 Ben Pottier\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "BinaryNinja CryptoScan\n======================\nPlugin for [Binary Ninja](https://binary.ninja/) platform\n\n## General\nThis Binja plugin is effectively trying to replicate [findcrypt](https://github.com/you0708/ida/tree/master/idapython_tools/findcrypt) functionality. It supports a larger range of constants.\n\n## Features\n### Overview\nThe plugin registers a single call that is accessible from the 'Tools' menu or by right-clicking in the main binary view window. \n\nScan configurations are reloaded on _every_ call to the scan function. This means you can CRUD json config files and rescan immediately. \n\nThe plugin supports the following types of scans:\n\n - Scanning for constants in data \n - Scanning for constants in the IL \n\n Will additionally add a tag at each identified location with the family name as the data.\n\n### Supported cryptography\n\nThe following constants are defined in scan configurations:\n\n - AES: sboxes, td0-4, te0-4\n - ARIA: sbox2, sbox4 (1 and 3 are equal to Rijndael)\n - BLAKE: 224, 256, 384 and 512 inits \n - Blowfish: p_array and sbox\n - CRC32: lzma tables 0-7, m_tab_le and m_tab_be, ms_table0-6\n - DES: p32i, pc1_left, pc1_right, pc2, sbox1-8\n - DFC: sbox\n - Elliptic Curves: p-192, p-224, p-256, p-384, p-521, Curve25519\n - IKE: modp group shared component\n - KASUMI: key expansion mod, sbox_s7, sbox_s9\n - MD5: initstate and md5_t\n - NewDES: sbox\n - RC5/RC6: combined constant\n - Salsa20: sigma and tau\n - SHA1: h\n - SHA224: h\n - SHA256: both k and h \n - SHA512: h\n - SM3: init\n - SM4: sbox, ck and fk\n - TEA: delta\n - Mersenne Twister: 19937 edition\n - Zlib: distance_starts, distance_extrabits, length_starts, length_extrabits\n\n### Reporting\nIf any matches are identified a Markdown (for GUI) or text (for CLI) report will be shown, listing which scans were matched, what family they belong to as well as the address in the binary.\nThe aim of the report was to allow easy copy-pasting of the address for use with the 'Go to address...' function. \n\nWhilst data matches only contain the address at which the constant is defined, IL matches will also indicate the function they were discovered in.\n\n### Configuration\nIndividual scan configurations are kept in the scans subfolder. The following fields are required in the JSON:\n\n - name: short name for the scan\n - description: long name or description, only for author's quality of life \n - threshold: for multi-byte constants, minimum amount of n-sized chunks that must be found (e.g. when loading chunked in registers) \n - type: static or signature (signatures are currently not implemented though)\n - flags: array of single byte strings, usually 4 bytes but no upper bound is set. You can now add null bytes. \n - on_match: object with subfields\n - type: symbol is the only supported value right now, adds a symbol at the detected address\n - name: name to give to the symbol\n\n## TODO\n- [x] Add more constants \n- [x] Make CryptoScan run in the background\n- [x] Deal with null bytes in the flags better\n- [ ] Flesh out how signature detection will work\n- [ ] Refactor data scanning to improve speed on very large binaries \n", + "minimumbinaryninjaversion": 4526, + "name": "cryptoscan", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/634d52f0-4eae-4b0f-b7c6-5810ec1b97cf/versions/e95359b1-6254-476a-b7a9-c5b786debe5a/platforms/2121/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/634d52f0-4eae-4b0f-b7c6-5810ec1b97cf/versions/e95359b1-6254-476a-b7a9-c5b786debe5a/platforms/2121/download?notrack=1", + "path": "Rami114_cryptoscan", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 70, + "updated_at": "2023-09-22 09:33:06+00:00" + }, + "projectUrl": "https://github.com/Rami114/cryptoscan", + "subdir": "", + "type": [ + "ui", + "binaryview" + ], + "version": "1.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Francesco Muroni", + "dependencies": "", + "description": "Deobufscate API calls and strings in unpacked Emotet samples.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1600725169, + "license": { + "name": "MIT", + "text": "Copyright (c) 2020 Francesco Muroni\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Helper plugin for the analysis of unpacked Emotet samples. Locate dynamically imported API functions and add tags to make them easily searchable. Replace obfuscated strings with their original value.", + "minimumbinaryninjaversion": 1200, + "name": "Emotet API+string deobfuscator", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/2604547d-e435-4153-b181-fd12ae10c8b8/versions/7d61fec4-e34b-4cc5-b958-fa812376a4b0/platforms/2127/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/2604547d-e435-4153-b181-fd12ae10c8b8/versions/7d61fec4-e34b-4cc5-b958-fa812376a4b0/platforms/2127/download?notrack=1", + "path": "mauronz_binjaemotet", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 19, + "updated_at": "2020-09-21 21:52:49+00:00" + }, + "projectUrl": "https://github.com/mauronz/binja-emotet", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Blackwing Intelligence", + "dependencies": "", + "description": "Binary View for loading iBoot, SecureROM, etc. firmware", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1601588122, + "license": { + "name": "MIT", + "text": "Copyright 2020 Blackwing Intelligence\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# iBoot64Binja (v1.0.1)\n\n_Binary View for loading iBoot, SecureROM, etc. firmware_\n\n![](https://user-images.githubusercontent.com/6217759/94852197-83531e00-03f7-11eb-95c7-0f0f500fb004.png)\n\n## Description \nBinary Ninja Binary View plugin for analyzing iBoot, SecureROM, etc. heavily inspired by [argp's iBoot64helper IDA loader](https://github.com/argp/iBoot64helper). \n- Identifies iBoot / SecureROM firmwares \n- Finds target load address and performs rebase for accurate analysis \n- Restores some interesting symbols based on various heuristics\n\n## Installation Instructions\n\n### Darwin\n\nCopy to `~/Library/Application Support/Binary Ninja/plugins/` or use Plugin Manager\n\n### Windows\n\nCopy to `%APPDATA%\\Binary Ninja\\plugins` or use Plugin Manager\n\n### Linux\n\nCopy to `~/.binaryninja/plugins/` or use Plugin Manager\n\n## Minimum Version\n\nThis plugin has been tested with the following minimum version of Binary Ninja:\n\n* 2.1.2263\n\n## Documentation\n\nDocumentation on current heuristics, etc. is [here](docs/docs.md).\n\n## License\n\nThis plugin is released under a MIT license.\n\n## Acknowledgments\n\n- Argp's [iBoot64Helper](https://github.com/argp/iBoot64helper) iBoot loader for IDA Pro inspired the initial development of this plugin\n- [binja_sigmaker](https://github.com/apekros/binja_sigmaker) inspired the current wildcard signature matching for the `bytesig` heuristic", + "minimumbinaryninjaversion": 2170, + "name": "iBoot64 Loader", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/5c52828d-706f-41f9-b916-aa8d1ecd22df/versions/c758687b-7bda-4dad-8fda-3270e13ae688/platforms/2131/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/5c52828d-706f-41f9-b916-aa8d1ecd22df/versions/c758687b-7bda-4dad-8fda-3270e13ae688/platforms/2131/download?notrack=1", + "path": "BlackwingHQ_iBoot64Binja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 54, + "updated_at": "2020-10-01 21:35:22+00:00" + }, + "projectUrl": "https://github.com/BlackwingHQ/iBoot64Binja", + "subdir": "", + "type": [ + "binaryview" + ], + "version": "1.0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "catnip", + "dependencies": "", + "description": "binary ninja plugin for abusing logging functions", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1615283793, + "license": { + "name": "MIT", + "text": "Copyright 2020 log rename\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Logrn\r\n## binary ninja plugin for abusing logging functions\r\nbasically the same as [this plugin](https://github.com/404d/autoutils) but improved\r\n\r\nyou find a logging function which takes the current function as an argument. example:\r\n\r\n![](https://cdn.discordapp.com/attachments/675073564508028968/760946073542983710/unknown.png)\r\n\r\nwhile the logging function is selected, you run the command `rename callers to arg`\r\n\r\n![](https://cdn.discordapp.com/attachments/675073564508028968/760946299943124992/unknown.png)\r\n\r\nit asks you what the name of the param is which will get the function name\r\n\r\n![](https://cdn.discordapp.com/attachments/675073564508028968/760946419254689873/unknown.png)\r\n\r\nin this case `func_str`.\r\nthen it searches for every call of this logging function in the binary, get the parameter which holds the name of the function and renames the caller to that string. boom 2500 new symbols\r\n\r\n\r\n# Important\r\n\r\nKeep in mind functions you have already named will get renamed. Why? because func.auto had a huge amount of false positives in my testing leading to a huge amount of functions not getting renamed. I dont know why thats a thing.\r\n\r\nFunctions with multiple calls to the logging function will get the name of the first call. Why? because in my experience, most of the time the log function will get called multiple times with the same function name. If i were to ignore ambiguous calls, id miss a whole lot of symbols. Inlines tend to not be at the beginning of the function which is also good. Now i could check if all calls are the same but i would miss functions with inline calls that are not at the beginning of the function and a few wrongly named functions are worth that compromise imo. Just keep in mind the name is not guarenteed to be correct.\r\n\r\nIts a background task so it wont freeze binja.\r\n\r\nI know that when entering nothing in the prompt, there will be an exception. I dont care :p. If you do, make a pull request.", + "minimumbinaryninjaversion": 2263, + "name": "logrn", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/533b2a4a-b01f-4bfa-8e8a-1d1ba13f800d/versions/8bdd545a-ed59-49cc-99ba-9a1ed16e8259/platforms/2138/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/533b2a4a-b01f-4bfa-8e8a-1d1ba13f800d/versions/8bdd545a-ed59-49cc-99ba-9a1ed16e8259/platforms/2138/download?notrack=1", + "path": "sumcatnip_logrn", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 2, + "updated_at": "2021-03-09 09:56:33+00:00" + }, + "projectUrl": "https://github.com/sum-catnip/logrn", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.2", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "lwerdna", + "dependencies": "", + "description": "Add \"call shellcode\" menu option which executes highlighted bytes.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1617425565, + "license": { + "name": "Unlicense", + "text": "This is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, compile, sell, or\ndistribute this software, either in source code form or as a compiled\nbinary, for any purpose, commercial or non-commercial, and by any\nmeans.\n\nIn jurisdictions that recognize copyright laws, the author or authors\nof this software dedicate any and all copyright interest in the\nsoftware to the public domain. We make this dedication for the benefit\nof the public at large and to the detriment of our heirs and\nsuccessors. We intend this dedication to be an overt act of\nrelinquishment in perpetuity of all present and future rights to this\nsoftware under copyright law.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\nOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\nFor more information, please refer to " + }, + "longdescription": "Add \"call shellcode\" menu option which executes highlighted bytes.\n\n![preview](./preview.gif)\n\n## How does it work?\n\n1. plugin (__init__.py) calls thunk.doit() with your selection\n2. thunk (thunk.py) uses ctypes to load one of {callbuf.dylib, callbuf.dll, callbuf.so}\n3. thunk (thunk.py) uses ctypes to call callbuf!doit() with your selection\n4. callbuf (callbuf/callbuf.c) allocates memory, sets permissions, and calls your selection\n\n## Installation Instructions\n\nThe prebuild and included callbuf.dylib, callbuf.dll, and callbuf.so are provided for the three OS's.\n\nIf they don't work, you can compile them yourself. It's less than 100 lines and there are no dependencies. See Makefile-macos, Makefile-linux, and Makefile-windows in the callbuf directory.\n\n\n", + "minimumbinaryninjaversion": 2660, + "name": "Call Shellcode", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/5c83050d-9988-4136-a10e-b2b1cb653db1/versions/85d7d5b3-86b1-4df9-a82f-b26f67090672/platforms/2143/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/5c83050d-9988-4136-a10e-b2b1cb653db1/versions/85d7d5b3-86b1-4df9-a82f-b26f67090672/platforms/2143/download?notrack=1", + "path": "lwerdna_call_shellcode", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2021-04-03 04:52:45+00:00" + }, + "projectUrl": "https://github.com/lwerdna/call_shellcode", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "alden (@birchb0y)", + "dependencies": "", + "description": "Let's you copy sections of disassembly formatted for YARA.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1744657085, + "license": { + "name": "MIT", + "text": "Copyright (c) 2025 Alden Schmidt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Copy as YARA\n\nAuthor: **alden**\n\n_Copy disassembly nicely formatted for YARA rules._\n\n## Description:\n\nThis is a really simple plugin that allows you to copy disassembly in a way that can be used in [YARA](https://virustotal.github.io/yara/) rules. You have the option to either copy the assembly code as it is or use address wildcarding to create more robust rules.\n\n## Usage:\n\nTo copy the disassembly you desire, select it regardless of the view. Next, navigate to Plugins > Copy for YARA > [Options]. The resulting formatted text will then be automatically copied to your clipboard.\n\n### Address Wildcards\n\nThis format will attempt to wildcard possible address tokens to make rules more robust. It uses two strategies to accomplish this:\n\n**x86**\n\n```\n49 8b 5e 08 // mov rbx, qword [r14+0x8]\n48 8d bd 48 ff ff ff // lea rdi, [rbp-0xb8 {var_c0}]\n4c 89 fe // mov rsi, r15\n4c 89 f2 // mov rdx, r14\ne8 ?? ?? ?? ?? // call sub_1000ca056\n```\n\n**ARM**\n\n```\nf7 03 01 aa // mov x23, x1\ne0 03 01 aa // mov x0, x1\nca ?? ?? ?? // bl sub_100128728\nf9 03 00 aa // mov x25, x0\nf8 03 01 aa // mov x24, x1\n9a ?? ?? ?? // bl sub_1001bd674\nf9 03 00 36 // tbz w25, #0, 0x10012788c\n```\n\n### Compact Format\n\nThis will simply copy the bytes of assembly in a compact way with no comments if that's your jam.\n\n```\n49 8b 5e 08 48 8d bd 48 ff ff ff 4c 89 fe 4c 89 f2 e8 ff 0c 00 00\n```\n\n### Normal\n\nCopies all the bytes with comments but no wildcarding.\n\n```\n49 8b 5e 08 // mov rbx, qword [r14+0x8]\n48 8d bd 48 ff ff ff // lea rdi, [rbp-0xb8 {var_c0}]\n4c 89 fe // mov rsi, r15\n4c 89 f2 // mov rdx, r14\ne8 ff 0c 00 00 // call sub_1000ca056\n```\n\n### Full Rule\n\nThis will generate a quick complete rule that you can use, in the future the metadata will be customizable with settings.\n\n```yara\nrule binary_ninja_export {\n meta:\n description = \"Auto generated by Binary Ninja YARA plugin\"\n architecture = \"aarch64\"\n\n strings:\n $bytes = { f7 03 01 aa e0 03 01 aa ca ?? ?? ?? f9 03 00 aa f8 03 01 aa 9a ?? ?? ?? f9 03 00 36 }\n\n condition:\n $bytes\n}\n```\n\n## Demo:\n\n![demo](/docs/demo.gif)\n\n## License\n\nThis plugin is released under an [MIT license](./license).\n", + "minimumbinaryninjaversion": 3164, + "name": "Copy As YARA", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/88c53dfb-448b-4388-9c3c-595c43339106/versions/9c103cad-30de-4095-9ceb-bad986b5ffff/platforms/2270/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/88c53dfb-448b-4388-9c3c-595c43339106/versions/9c103cad-30de-4095-9ceb-bad986b5ffff/platforms/2270/download?notrack=1", + "path": "ald3ns_copyasyara", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 48, + "updated_at": "2025-04-14 18:58:05+00:00" + }, + "projectUrl": "https://github.com/ald3ns/copy-as-yara", + "subdir": "", + "type": [ + "helper" + ], + "version": "2.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "lwerdna", + "dependencies": "capstone\nkeystone-engine\n", + "description": "Remake of keypatch plugin for Binary Ninja", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1706199641, + "license": { + "name": "Unlicense", + "text": "This is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, compile, sell, or\ndistribute this software, either in source code form or as a compiled\nbinary, for any purpose, commercial or non-commercial, and by any\nmeans.\n\nIn jurisdictions that recognize copyright laws, the author or authors\nof this software dedicate any and all copyright interest in the\nsoftware to the public domain. We make this dedication for the benefit\nof the public at large and to the detriment of our heirs and\nsuccessors. We intend this dedication to be an overt act of\nrelinquishment in perpetuity of all present and future rights to this\nsoftware under copyright law.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\nOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\nFor more information, please refer to " + }, + "longdescription": "Remake of [keypatch](https://github.com/keystone-engine/keypatch) plugin for Binary Ninja.\n\nPython != 3.10 is needed on arm64 macs to avoid install issues with keystone-engine.\n\n![](./preview.png)\n\n* assemble using [keystone](https://www.keystone-engine.org/)\n* fill areas with instructions or arbitrary bytes\n* search for instructions or bytes, with regular expressions\n\nThe plugin manager only installs and updates at release boundaries. If you want the hottest freshest code, navigate to your [plugins folder](https://docs.binary.ninja/guide/plugins.html) and clone this repo to get started, pull to update.\n\n## Developer Notes\n\nhttps://docs.binary.ninja/dev/plugins.html\n\nTests that must pass before PR considered, release made, etc.\n\n* file -> new binary data -> 1f 20 03 d5 1f 20 03 d5 1f 20 03 d5 1f 20 03 d5 (right click, paste from, raw hex)\n* create aarch64 function, now use keypatch to assemble at 0, 4, 8, and C the instruction `bl 0x1000`\n* fill from [0x4, 0xc) with manually entered bytes AA AA AA AA and get two `orn x10, x21, x10, asr #0x2a`\n* now fill from [0x4, 0xc) with assembled `nop`\n* now search for `1f .*? d5` and it should hit at every nop (at 4 and 8)\n", + "minimumbinaryninjaversion": 2660, + "name": "keypatch", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/bd1e1999-acdf-4724-8f40-9d16cf31e979/versions/7a840e48-369c-4950-9599-3caa06cd3836/platforms/2150/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/bd1e1999-acdf-4724-8f40-9d16cf31e979/versions/7a840e48-369c-4950-9599-3caa06cd3836/platforms/2150/download?notrack=1", + "path": "lwerdna_keypatch_binja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 22, + "updated_at": "2024-01-25 16:20:41+00:00" + }, + "projectUrl": "https://github.com/lwerdna/keypatch_binja", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "1.7", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Jordan Wiens", + "dependencies": "matplotlib\n", + "description": "Shows statistics about your Binary Ninja usage. Also includes a 'Time Wasted Debugging' timer widget for the status bar (disabled by default, enable in settings).", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1765086455, + "license": { + "name": "MIT", + "text": "Copyright (c) 2025 Jordan Wiens\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Binary Ninja Wrapped (v1.3.1)\r\n\r\nA fun \"Spotify Wrapped\" style visualization tool for your Binary Ninja usage.\r\n\r\n![Binary Ninja Wrapped Screenshot](./wrapped.png)\r\n\r\n## Overview\r\n\r\nBinary Ninja Wrapped provides a stylish visualization of your reverse engineering habits in Binary Ninja. Inspired by Spotify's annual \"Wrapped\" feature, it analyzes your recently opened files and generates personalized stats and charts about:\r\n\r\n- File format distribution (PE, ELF, Mach-O, etc.)\r\n- CPU architecture preferences\r\n- Binary size statistics\r\n- Static vs. dynamic linking patterns\r\n\r\nEach chart comes with personalized, sometimes humorous commentary on your binary analysis habits.\r\n\r\n## Frequently Asked Questions\r\n\r\n**Q: Is this a joke?**\r\n\r\n**A:** Well, yes. I mean, it's intended to be a non-serious, funny plugin.\r\n\r\n**Q: So it doesn't actually work?**\r\n\r\n**A:** Oh no, it's very much a real plugin that will really do what it says and involves several thousand lines of vibe coding.\r\n\r\n**Q: But why was it released on April 1 if it's a prank?**\r\n\r\n**A:** You got the part where it was supposed to be non-serious and funny, right?\r\n\r\n## Features\r\n\r\n- **Interactive UI**: Browse different stats through an intuitive tabbed interface\r\n- **Dynamic Visualizations**: Colorful charts and graphs display your binary analysis patterns\r\n- **Personalized Quotes**: Each section features unique, context-aware commentary\r\n- **Exportable Results**: Save a beautiful collage of all your charts in a grid layout\r\n\r\n## Installation\r\n\r\n1. Install via the Plugin Manager! \r\n1. Alternatively, clone this repository into your Binary Ninja plugins directory:\r\n ```\r\n cd ~/.binaryninja/plugins/ # Linux\r\n cd ~/Library/Application\\ Support/Binary\\ Ninja/ # macOS\r\n cd %APPDATA%\\Binary Ninja\\plugins # Windows\r\n git clone https://github.com/vector35/bnwrap.git\r\n ```\r\n\r\n1. Restart Binary Ninja.\r\n\r\n## Usage\r\n\r\n1. Open Binary Ninja\r\n2. Go to the **Plugins** menu\r\n3. Select **Binja Wrapped**\r\n4. Browse through the tabs to explore different aspects of your binary analysis habits\r\n5. Use the **Export Combined Image** button to save a shareable collage\r\n\r\n## Example\r\n\r\n![example image](./example.png)\r\n\r\n## Requirements\r\n\r\n- Binary Ninja (recent version)\r\n- PySide6 (included with Binary Ninja)\r\n\r\n## Development\r\n\r\n### Running Tests\r\n\r\nThe plugin includes a comprehensive test suite to ensure cross-platform compatibility and functionality.\r\n\r\n**Install test dependencies:**\r\n```bash\r\npip install -r tests/requirements.txt\r\n```\r\n\r\n**Run all tests:**\r\n```bash\r\nBNWRAP_TESTING=1 python -m pytest tests/ -v\r\n```\r\n\r\n**Run specific test file:**\r\n```bash\r\nBNWRAP_TESTING=1 python -m pytest tests/test_utils.py -v\r\n```\r\n\r\nThe `BNWRAP_TESTING` environment variable prevents Binary Ninja UI initialization, allowing tests to run without the full Binary Ninja installation.\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Feel free to submit pull requests or open issues for bugs or feature requests.\r\n\r\n## License\r\n\r\nThis project is released under the MIT License. See the LICENSE file for details.\n\n### Changelog\nsmall stats graph tweak", + "minimumbinaryninjaversion": 6666, + "name": "Binary Ninja Wrapped", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/ea873fa9-b9e2-4efc-965b-d0dfbcad4b53/versions/a988dad2-8e4e-4ea6-840f-69fb427c259e/platforms/2887/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/ea873fa9-b9e2-4efc-965b-d0dfbcad4b53/versions/a988dad2-8e4e-4ea6-840f-69fb427c259e/platforms/2887/download?notrack=1", + "path": "psifertex_bnwrap", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2025-12-07 05:47:35+00:00" + }, + "projectUrl": "https://github.com/psifertex/bnwrap", + "subdir": "", + "type": [ + "ui" + ], + "version": "1.3.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Known Rabbit", + "dependencies": "binaryninja-mcp==0.3.1\n", + "description": "MCP Server for Binary Ninja.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1746948737, + "license": { + "name": "Apache-2.0", + "text": "Copyright 2025 Known Rabbit.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License." + }, + "longdescription": "\n\n### Changelog\n## What's Changed\r\n* infra: use requirements.txt for installation. fixes #15 by @cybergrind in https://github.com/MCPPhalanx/binaryninja-mcp/pull/16\r\n\r\n## New Contributors\r\n* @cybergrind made their first contribution in https://github.com/MCPPhalanx/binaryninja-mcp/pull/16\r\n\r\n**Full Changelog**: https://github.com/MCPPhalanx/binaryninja-mcp/compare/v0.3.0...v0.3.1", + "minimumbinaryninjaversion": 3164, + "name": "MCP Server", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/6d2e1dd7-0aaf-4702-b78f-c2c0e60b1634/versions/31e474cb-cea0-44d8-a602-a48537401874/platforms/2351/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/6d2e1dd7-0aaf-4702-b78f-c2c0e60b1634/versions/31e474cb-cea0-44d8-a602-a48537401874/platforms/2351/download?notrack=1", + "path": "MCPPhalanx_binaryninjamcp", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 31, + "updated_at": "2025-05-11 07:32:17+00:00" + }, + "projectUrl": "https://github.com/MCPPhalanx/binaryninja-mcp", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "0.3.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "ScriptWare Software", + "dependencies": "requests\nbs4", + "description": "Remove opaque predicates from binaries", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1751235844, + "license": { + "name": "MIT", + "text": "MIT License\n\nCopyright (c) 2025 Script-Ware Software\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "This plugin removes conditional branches that always evaluate to the same value. Written in C++ for speed - faster than the Python version, especially on large binaries. Uses multiple threads to process functions in parallel, and will iteratively perform passes through functions to clean up newly uncovered opaque predicates.\r\n\r\n## Features\r\n\r\n- Fast native C++ implementation\r\n- Multi-threaded parallel processing\r\n- Iterative analysis to catch nested predicates\r\n- Works on individual functions or entire binaries\r\n- Configurable pass limits and thread count\r\n\r\n## Example\r\n\r\n### Before:\r\n![Before example](https://github.com/ScriptWare-Software/native-predicate-solver/blob/master/img/before.png?raw=true)\r\n\r\n### After:\r\n![After example](https://github.com/ScriptWare-Software/native-predicate-solver/blob/master/img/after.png?raw=true)\r\n\r\nThis plugin serves as a loader for the [native C++ plugin](https://github.com/ScriptWare-Software/native-predicate-solver).\n\n### Changelog\nAdded support for builds supporting v5.0.7648", + "minimumbinaryninjaversion": 4100, + "name": "Native Predicate Solver", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/2ee1b324-d871-4387-abe2-93aa49405d8d/versions/4afd098e-2fb2-48c9-b3f3-d1c45ddc7e1f/platforms/2474/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/2ee1b324-d871-4387-abe2-93aa49405d8d/versions/4afd098e-2fb2-48c9-b3f3-d1c45ddc7e1f/platforms/2474/download?notrack=1", + "path": "ScriptWareSoftware_nativepredicatesolver_loader", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 2, + "updated_at": "2025-06-29 22:24:04+00:00" + }, + "projectUrl": "https://github.com/ScriptWare-Software/native-predicate-solver_loader", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "psifertex", + "dependencies": "argostranslate>=1.9.0", + "description": "Translate strings and symbols", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1758900940, + "license": { + "name": "MIT", + "text": "MIT License\r\n\r\nCopyright (c) 2025 Vector 35 Inc.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE." + }, + "longdescription": "# Translation Plugin for Binary Ninja\r\n\r\nA plugin that translates foreign language text in binaries to any supported language using offline translation.\r\n\r\n## IMPORTANT: Enable Correct Unicode Support Required\r\n\r\n**This plugin requires Binary Ninja's Unicode support to be enabled to display non-ASCII characters in the appropriate codepages!**\r\n\r\n**[Enable Unicode Support in Binary Ninja](https://docs.binary.ninja/dev/concepts.html?h=unicode#unicode-support)**\r\n\r\n## Features\r\n\r\n### Modes\r\n\r\n1. **Real-time Translation (Render Layer)**\r\n - Replaces foreign text with translations directly in the disassembly view\r\n - Works in both Linear and Graph views\r\n - Non-destructive - original text preserved in database\r\n - Toggle on/off via View \u2192 Layer menu\r\n\r\nWarning, this method can be slow!\r\n\r\n2. **Manual Changes**\r\n - `Plugins` / `Translate` / `Translate All Symbols`\r\n - `Plugins` / `Translate` / `Translate Current Symbol`\r\n\r\nNote that these changes will be made as user changes so saving them in an analysis database will persist.\r\n\r\n3. **String Translation Comments**\r\n - Adds translation comments at string usage locations\r\n - Comments appear at both string definitions and references\r\n - Preserves existing comments\r\n\r\n\r\n## Installation\r\n\r\n### Step 1: Install the Plugin\r\n\r\n#### Option A: Plugin Manager (Recommended)\r\nInstall from Binary Ninja's Plugin Manager - dependencies will be installed automatically.\r\n\r\n#### Option B: Manual Installation\r\n1. Clone or download this repository\r\n2. Copy the `translate-layer` folder to your Binary Ninja plugins directory:\r\n - **macOS**: `~/Library/Application Support/Binary Ninja/plugins/`\r\n - **Linux**: `~/.binaryninja/plugins/`\r\n - **Windows**: `%APPDATA%\\Binary Ninja\\plugins\\`\r\n3. Restart Binary Ninja (it will automatically install the required Python packages)\r\n\r\n### Step 2: Install Translation Models\r\n\r\nThe plugin uses [Argos Translate's](https://github.com/argosopentech/argos-translate) offline models. Install models for the language pairs you need:\r\n\r\n```bash\r\n# Update the package index\r\nargospm update\r\n\r\n# List available packages\r\nargospm search\r\n\r\n# Install language pairs (format: translate-[source]_[dest])\r\n# Examples:\r\nargospm install translate-ru_en # Russian to English\r\nargospm install translate-ja_en # Japanese to English\r\nargospm install translate-zh_en # Chinese to English\r\nargospm install translate-en_es # English to Spanish\r\nargospm install translate-fr_de # French to German\r\n```\r\n\r\n## Configuration\r\n\r\nAccess settings via **Edit** \u2192 **Preferences** \u2192 **Settings** \u2192 **Translation**\r\n\r\nAvailable settings:\r\n\r\n- **Destination Language**: Target language for translations (based on installed models)\r\n- **Translated Symbol Prefix**: Prefix for renamed symbols (default: \"\ud83c\udf0e\")\r\n\r\n## Supported Languages\r\n\r\nThe plugin can translate between any languages supported by Argos Translate models.\r\n\r\nCheck available models with `argospm search`.\r\n\r\n## Troubleshooting\r\n\r\n### No destination languages available\r\n- Install translation models: `argospm install translate-[source]_[dest]`\r\n- Restart Binary Ninja after installing models\r\n\r\n### Manual dependency installation\r\nIf Binary Ninja doesn't automatically install dependencies:\r\n```bash\r\npip install argostranslate\r\n```\r\n\r\n### Translations not appearing\r\n- Check that a destination language is selected in settings\r\n- Verify translation models are installed: `argospm list`\r\n- Check the Binary Ninja log for error messages (enable debug logs for more information)\r\n\r\n### Performance\r\n- First translation after loading may be slow as models load\r\n- Subsequent translations use the cache for instant results\n\n### Changelog\ninitial translation plugin commit", + "minimumbinaryninjaversion": 7648, + "name": "Translation Plugin", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/ce756d85-1cbf-4ba5-a611-5e5839308261/versions/b2691114-4dec-40d5-9fb9-0c46772f4f3e/platforms/2689/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/ce756d85-1cbf-4ba5-a611-5e5839308261/versions/b2691114-4dec-40d5-9fb9-0c46772f4f3e/platforms/2689/download?notrack=1", + "path": "translation_plugin", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 3, + "updated_at": "2025-09-26 15:35:40+00:00" + }, + "projectUrl": "https://github.com/psifertex/translation-plugin", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "unknowntrojan", + "dependencies": "", + "description": "Provides a render layer that visually replaces C-style numeric types in HLIL with their Rust equivalents at zero runtime cost. (int64_t => i64)", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1756484968, + "license": { + "name": "AGPLv3", + "text": " GNU AFFERO GENERAL PUBLIC LICENSE\n Version 3, 19 November 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. \n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n Preamble\n\n The GNU Affero General Public License is a free, copyleft license for\nsoftware and other kinds of works, specifically designed to ensure\ncooperation with the community in the case of network server software.\n\n The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works. By contrast,\nour General Public Licenses are intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.\n\n When we speak of free software, we are referring to freedom, not\nprice. Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n Developers that use our General Public Licenses protect your rights\nwith two steps: (1) assert copyright on the software, and (2) offer\nyou this License which gives you legal permission to copy, distribute\nand/or modify the software.\n\n A secondary benefit of defending all users' freedom is that\nimprovements made in alternate versions of the program, if they\nreceive widespread use, become available for other developers to\nincorporate. Many developers of free software are heartened and\nencouraged by the resulting cooperation. However, in the case of\nsoftware used on network servers, this result may fail to come about.\nThe GNU General Public License permits making a modified version and\nletting the public access it on a server without ever releasing its\nsource code to the public.\n\n The GNU Affero General Public License is designed specifically to\nensure that, in such cases, the modified source code becomes available\nto the community. It requires the operator of a network server to\nprovide the source code of the modified version running there to the\nusers of that server. Therefore, public use of a modified version, on\na publicly accessible server, gives the public access to the source\ncode of the modified version.\n\n An older license, called the Affero General Public License and\npublished by Affero, was designed to accomplish similar goals. This is\na different license, not a version of the Affero GPL, but Affero has\nreleased a new version of the Affero GPL which permits relicensing under\nthis license.\n\n The precise terms and conditions for copying, distribution and\nmodification follow.\n\n TERMS AND CONDITIONS\n\n 0. Definitions.\n\n \"This License\" refers to version 3 of the GNU Affero General Public License.\n\n \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n \"The Program\" refers to any copyrightable work licensed under this\nLicense. Each licensee is addressed as \"you\". \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy. The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy. Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies. Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License. If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n 1. Source Code.\n\n The \"source code\" for a work means the preferred form of the work\nfor making modifications to it. \"Object code\" means any non-source\nform of a work.\n\n A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form. A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities. However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work. For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n The Corresponding Source for a work in source code form is that\nsame work.\n\n 2. Basic Permissions.\n\n All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met. This License explicitly affirms your unlimited\npermission to run the unmodified Program. The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work. This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force. You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright. Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n Conveying under any other circumstances is permitted solely under\nthe conditions stated below. Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n 4. Conveying Verbatim Copies.\n\n You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n 5. Conveying Modified Source Versions.\n\n You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n a) The work must carry prominent notices stating that you modified\n it, and giving a relevant date.\n\n b) The work must carry prominent notices stating that it is\n released under this License and any conditions added under section\n 7. This requirement modifies the requirement in section 4 to\n \"keep intact all notices\".\n\n c) You must license the entire work, as a whole, under this\n License to anyone who comes into possession of a copy. This\n License will therefore apply, along with any applicable section 7\n additional terms, to the whole of the work, and all its parts,\n regardless of how they are packaged. This License gives no\n permission to license the work in any other way, but it does not\n invalidate such permission if you have separately received it.\n\n d) If the work has interactive user interfaces, each must display\n Appropriate Legal Notices; however, if the Program has interactive\n interfaces that do not display Appropriate Legal Notices, your\n work need not make them do so.\n\n A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit. Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n 6. Conveying Non-Source Forms.\n\n You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n a) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by the\n Corresponding Source fixed on a durable physical medium\n customarily used for software interchange.\n\n b) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by a\n written offer, valid for at least three years and valid for as\n long as you offer spare parts or customer support for that product\n model, to give anyone who possesses the object code either (1) a\n copy of the Corresponding Source for all the software in the\n product that is covered by this License, on a durable physical\n medium customarily used for software interchange, for a price no\n more than your reasonable cost of physically performing this\n conveying of source, or (2) access to copy the\n Corresponding Source from a network server at no charge.\n\n c) Convey individual copies of the object code with a copy of the\n written offer to provide the Corresponding Source. This\n alternative is allowed only occasionally and noncommercially, and\n only if you received the object code with such an offer, in accord\n with subsection 6b.\n\n d) Convey the object code by offering access from a designated\n place (gratis or for a charge), and offer equivalent access to the\n Corresponding Source in the same way through the same place at no\n further charge. You need not require recipients to copy the\n Corresponding Source along with the object code. If the place to\n copy the object code is a network server, the Corresponding Source\n may be on a different server (operated by you or a third party)\n that supports equivalent copying facilities, provided you maintain\n clear directions next to the object code saying where to find the\n Corresponding Source. Regardless of what server hosts the\n Corresponding Source, you remain obligated to ensure that it is\n available for as long as needed to satisfy these requirements.\n\n e) Convey the object code using peer-to-peer transmission, provided\n you inform other peers where the object code and Corresponding\n Source of the work are being offered to the general public at no\n charge under subsection 6d.\n\n A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling. In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage. For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product. A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source. The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information. But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed. Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n 7. Additional Terms.\n\n \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law. If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit. (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.) You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n a) Disclaiming warranty or limiting liability differently from the\n terms of sections 15 and 16 of this License; or\n\n b) Requiring preservation of specified reasonable legal notices or\n author attributions in that material or in the Appropriate Legal\n Notices displayed by works containing it; or\n\n c) Prohibiting misrepresentation of the origin of that material, or\n requiring that modified versions of such material be marked in\n reasonable ways as different from the original version; or\n\n d) Limiting the use for publicity purposes of names of licensors or\n authors of the material; or\n\n e) Declining to grant rights under trademark law for use of some\n trade names, trademarks, or service marks; or\n\n f) Requiring indemnification of licensors and authors of that\n material by anyone who conveys the material (or modified versions of\n it) with contractual assumptions of liability to the recipient, for\n any liability that these contractual assumptions directly impose on\n those licensors and authors.\n\n All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10. If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term. If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n 8. Termination.\n\n You may not propagate or modify a covered work except as expressly\nprovided under this License. Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License. If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n 9. Acceptance Not Required for Having Copies.\n\n You are not required to accept this License in order to receive or\nrun a copy of the Program. Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance. However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work. These actions infringe copyright if you do\nnot accept this License. Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n 10. Automatic Licensing of Downstream Recipients.\n\n Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License. You are not responsible\nfor enforcing compliance by third parties with this License.\n\n An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations. If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License. For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n 11. Patents.\n\n A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based. The\nwork thus licensed is called the contributor's \"contributor version\".\n\n A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version. For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement). To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients. \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License. You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n 12. No Surrender of Others' Freedom.\n\n If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all. For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n 13. Remote Network Interaction; Use with the GNU General Public License.\n\n Notwithstanding any other provision of this License, if you modify the\nProgram, your modified version must prominently offer all users\ninteracting with it remotely through a computer network (if your version\nsupports such interaction) an opportunity to receive the Corresponding\nSource of your version by providing access to the Corresponding Source\nfrom a network server at no charge, through some standard or customary\nmeans of facilitating copying of software. This Corresponding Source\nshall include the Corresponding Source for any work covered by version 3\nof the GNU General Public License that is incorporated pursuant to the\nfollowing paragraph.\n\n Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU General Public License into a single\ncombined work, and to convey the resulting work. The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the work with which it is combined will remain governed by version\n3 of the GNU General Public License.\n\n 14. Revised Versions of this License.\n\n The Free Software Foundation may publish revised and/or new versions of\nthe GNU Affero General Public License from time to time. Such new versions\nwill be similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n Each version is given a distinguishing version number. If the\nProgram specifies that a certain numbered version of the GNU Affero General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation. If the Program does not specify a version number of the\nGNU Affero General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n If the Program specifies that a proxy can decide which future\nversions of the GNU Affero General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n Later license versions may give you additional or different\npermissions. However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n 15. Disclaimer of Warranty.\n\n THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. Limitation of Liability.\n\n IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n 17. Interpretation of Sections 15 and 16.\n\n If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n END OF TERMS AND CONDITIONS\n\n How to Apply These Terms to Your New Programs\n\n If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n To do so, attach the following notices to the program. It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as published\n by the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see .\n\nAlso add information on how to contact you by electronic and paper mail.\n\n If your software can interact with users remotely through a computer\nnetwork, you should also make sure that it provides a way for users to\nget its source. For example, if your program is a web application, its\ninterface could display a \"Source\" link that leads users to an archive\nof the code. There are many ways you could offer source, and different\nsolutions will be better for different programs; see section 13 for the\nspecific requirements.\n\n You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU AGPL, see\n.\n" + }, + "longdescription": "# CoolTypeOxidizer\n\nThis plugin uses the new [RenderLayer API](https://api.binary.ninja/binaryninja.renderlayer-module.html#binaryninja.renderlayer.RenderLayer) added in [5.0](https://binary.ninja/2025/04/23/5.0-gallifrey.html) to *visually* replace the sized C number types with their Rust equivalents in HLIL for easier readability.\n\nExample: (`int64_t` => `i64`)\n\nAs this is a purely *visual* change, it costs us nothing and breaks nothing else.\n\n## Before and After\n\n![Comparison](https://github.com/user-attachments/assets/b14d0865-df41-418c-b724-4490d162c0ec)\n\n## How to Use\n\n![Menu](https://github.com/user-attachments/assets/9536ea90-45fc-4c6b-9bcc-546dad3d6c0b)\n\nSimply tick the `Oxidize Types` entry in the Render Layers section of the Burger Menu.\n\nNote to the author of the [Type Oxidizer](https://github.com/austinzwile/TypeOxidizer) plugin:\nI really want to try whatever you were smoking, it must have been **really** good.\n\n## Known issues\n\n### Overflow bar for function signature not covered by Render Layers\nThe function signature in the locked bar at the top of the BinaryView (that appears when the current function signature is not in view) can not be modified via the RenderLayer API at this time. ~~It will hopefully be added soon, at which point this plugin will be updated.~~\n\nI have been informed that this is **not planned** and therefore, as far as I'm aware, there is nothing I can do about it at this time.\n", + "minimumbinaryninjaversion": 7290, + "name": "CoolTypeOxidizer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/c2f0a33b-7dac-4d0c-98d2-4300c48c46e4/versions/8217d8b1-35f6-46ae-9221-aed274f3e417/platforms/2617/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/c2f0a33b-7dac-4d0c-98d2-4300c48c46e4/versions/8217d8b1-35f6-46ae-9221-aed274f3e417/platforms/2617/download?notrack=1", + "path": "unknowntrojan_binja_cooltypeoxidizer", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 4, + "updated_at": "2025-08-29 16:29:28+00:00" + }, + "projectUrl": "https://github.com/unknowntrojan/binja_cooltypeoxidizer", + "subdir": "", + "type": [ + "binaryview", + "helper", + "ui" + ], + "version": "1.0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Script-Ware Software", + "dependencies": "", + "description": "Automated ScyllaHide injection and setup/configuration for Binary Ninja's debugger", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1759886657, + "license": { + "name": "MIT", + "text": "MIT License\r\n\r\nCopyright (c) 2025 Script-Ware Software\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE." + }, + "longdescription": "Binary Ninja integration for [ScyllaHide](https://github.com/x64dbg/ScyllaHide) by x64dbg. Automatically injects the ScyllaHide DLL when the debugger hits the initial breakpoint, helping bypass anti-debugging techniques commonly found in packed or protected executables.\r\n\r\n**Features:**\r\n- Automatic injection on debug start with status bar progress feedback\r\n- Manual injection via Plugins > ScyllaNinja > Inject ScyllaHide\r\n- Intelligent process detection with fuzzy matching\r\n- Multi-binary support with independent injection state\r\n- Double-injection prevention\r\n\r\n**Setup:**\r\n1. Download ScyllaHide binaries from https://github.com/x64dbg/ScyllaHide/releases/tag/v1.4\r\n2. Extract InjectorCLIx64.exe, InjectorCLIx86.exe, HookLibraryx64.dll, HookLibraryx86.dll\r\n3. Configure in Settings > Debugger > scyllahide\r\n4. Enable automatic injection and select a profile\r\n5. Start debugging - ScyllaHide injects automatically\r\n\r\nScyllaHide handles PEB manipulation, NT API hooking, and timing protection to hide the debugger from anti-debug checks.\n\n### Changelog\nInitial release of scylla-ninja - the ScyllaHide plugin for Binary Ninja.\r\n\r\nTo use this plugin, you must [install ScyllaHide's files](https://github.com/x64dbg/ScyllaHide/releases/tag/v1.4) and extract them somewhere on your device before then setting up the configuration to use those files. This plugin will tell you what to do on initial launch and direct you to the correct website.\r\n\r\nDownload the source file, extract it to your Binary Ninja plugin folder **as a folder itself** and restart Binary Ninja.\r\n\r\n**Experience a bug/problem? Make an Issue or submit a PR!**", + "minimumbinaryninjaversion": 5000, + "name": "scylla-ninja", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/688471db-d269-48d1-bd75-dfc239d31acc/versions/d5e5c980-ee80-4172-979f-c46914165be3/platforms/2713/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/688471db-d269-48d1-bd75-dfc239d31acc/versions/d5e5c980-ee80-4172-979f-c46914165be3/platforms/2713/download?notrack=1", + "path": "scylla_ninja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 5, + "updated_at": "2025-10-08 01:24:17+00:00" + }, + "projectUrl": "https://github.com/ScriptWare-Software/scylla-ninja", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Ashleigh Johannes", + "dependencies": "tree-sitter==0.23.2\ntree-sitter-c==0.23.4", + "description": "Import C header file types and function parameters from unprocessed or partial header files", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1744860248, + "license": { + "name": "MIT", + "text": "Copyright (c) 2025 Interrupt Labs\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# HeaderQuery\r\n\r\nHeaderQuery is a Binary Ninja plugin designed to annotate functions and import types from unprocessed or incomplete C header files which you otherwise are unable to import through the builtin `Import Header Files...` \r\n\r\nUsing [Tree-Sitter](https://tree-sitter.github.io/tree-sitter/) the plugin will search the header files for any functions that appear in the Binary View. It will then query the parameters of those functions and import all dependencies, including nested dependencies.\r\nIf this information isn't in the given directory of headers the plugin will create a blank type in the BNDB to allow function/type annotation. \r\n\r\n## Installation\r\n\r\n1. Clone the this repository into the [Binary Ninja plugins](https://docs.binary.ninja/guide/plugins.html) directory.\r\n2. Install the Python dependencies: \r\n```\r\npip install -r requirements.txt\r\n```\r\n\r\n## Usage\r\n\r\n1. Open a binary file in Binary Ninja. \r\n2. From the Plugins drop-down menu select `Partial Header Importer`\r\n3. Select a directory that contains all C header files you want to import from.\r\n**NOTE**: It is not necessary to flatten the directory; the plugin will recursively search nested directories. \r\n4. When prompted select whether you would like to overwrite types that are already defined in your BNDB.\r\nYou may also select individual types to import. \r\n5. Upon completion, a new tab will be opened with a list of types and/or functions that you may like to manually review, along with some guidance on why you may wish to review them. \r\n\r\n![](assets/HeaderQuery_screen-grab.gif)\r\n\r\n## Caveats\r\n\r\nThis plugin is designed specifically to work on unprocessed C header files.\r\nIt does not consider pre-processor directives and will ignore types that rely on macros.\r\nIf you have access to the entire library and are able to import through the existing Binary Ninja `Import Header File` functionality, you will get more accurate results. \r\n\r\nIt is the users reponsibility to ensure that the headers imported contain valid C code. C code with syntax errors will yield some results, but C++ code will not yield useful results.", + "minimumbinaryninjaversion": 0, + "name": "header-query", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/f21284b9-8bb0-488c-9da7-8c1c1b115367/versions/fc9ac86a-5f9c-41e9-9cf6-eb11b69a3e8f/platforms/2287/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/f21284b9-8bb0-488c-9da7-8c1c1b115367/versions/fc9ac86a-5f9c-41e9-9cf6-eb11b69a3e8f/platforms/2287/download?notrack=1", + "path": "interruptlabs_header_query_bn", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 6, + "updated_at": "2025-04-17 03:24:08+00:00" + }, + "projectUrl": "https://github.com/interruptlabs/header_query_bn", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "CX330Blake", + "dependencies": "pygments>=2.12\nkeystone-engine>=0.9.2\n", + "description": "Shellcode IDE makes developing and analyzing shellcode much more convenient.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1763595221, + "license": { + "name": "MIT", + "text": "MIT License\r\n\r\nCopyright (c) 2025 CX330\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE." + }, + "longdescription": "## Demo\n\nhttps://github.com/user-attachments/assets/8a0cbc62-4f29-417f-a1d1-6d3005a1be41\n\n## What the project does\n\nShellcode-IDE is a powerful Binary Ninja plugin designed for reverse engineers, CTF players, exploit developers, and security researchers. It provides a comprehensive environment for developing and analyzing shellcode with a user-friendly GUI that combines Binary Ninja's assembler/disassembler capabilities for rapid iteration and safe validation of shellcode.\n\n### Key Features\n\n- **Two-way conversion**: Raw bytes/hex \u2194 assembly text\n- **Multi-architecture support**: Assemble for any Binary Ninja architecture/platform\n- **Multiple export formats**: Inline `\\x..`, raw hex, C stub, Python stub, Zig stub, Rust stub, Go stub\n- **Live metadata**: Byte length, instruction count, null count, endianness, architecture\n- **Configurable bad-pattern detection**: e.g., `00`, `0a`, `ff`, sequences, regex\n- **Peephole optimizations**: With preview/confirm (e.g., `push 0` \u2192 `xor reg, reg; push reg`)\n- **Validation rules**: No variables/labels, no absolute addresses/relocations, no nulls (unless allowed)\n- **Binary Ninja integration**: Menu + toolbar + dockable/floating Qt window with shortcuts\n\n## Why the project is useful\n\nShellcode-IDE streamlines the shellcode development workflow by providing:\n\n- **Rapid iteration**: Quickly test and validate shellcode snippets without external tools\n- **Architecture flexibility**: Work across different architectures with a single interface\n- **Safety checks**: Built-in validation prevents common shellcode issues like null bytes\n- **Optimization**: Improve your shellcode with intelligent peephole optimizations\n- **Multi-format export**: Generate code snippets for various programming languages\n- **Integration**: Seamlessly integrates into Binary Ninja's ecosystem\n\n## Quick Start\n\n#### To disassemble bytes/hex to assembly\n\n1. Open Shellcode IDE from `Tools \u2192 Shellcode IDE` or toolbar icon\n2. Select target `Architecture`/`Platform` (defaults to active view when available)\n3. Paste hex/bytes into the \"Hex/Bytes\" tab (supports whitespace, `0x` prefixes, and `\\x..` forms)\n4. Click \"Disassemble\". View assembly in the output panel and stats in the status bar\n5. Export via the \"Formats\" tab (copy or save to file)\n\n#### To assemble assembly to shellcode\n\n1. Switch to the \"Assembly\" tab and enter one instruction per line\n2. Click \"Assemble\". Errors (if any) show inline with line/column info\n3. Review live stats, run \"Optimize\" (optional), \"Validate\", and export in your preferred format\n\n### Usage Examples\n\n**Basic Assembly:**\n\n```\nmov rax, 0x3b\nmov rdi, 0x68732f6e69622f\npush rdi\nmov rsi, rsp\nxor rdx, rdx\nsyscall\n```\n\n**Hex Input:**\n\n```\n90 90 48 c7 c0 3b 00 00 00 48 c7 c7 2f 62 69 6e 2f 73 68 57 48 89 e6 48 31 d2 0f 05\n```\n\nor\n\n```\n\\x90\\x90\\x48\\xc7\\xc0\\x3b\\x00\\x00\\x00\\x48\\xc7\\xc7\\x2f\\x62\\x69\\x6e\\x2f\\x73\\x68\\x57\\x48\\x89\\xe6\\x48\\x31\\xd2\\x0f\\x05\n```\n\n## Where users can get help\n\n- **Documentation**: Refer to the detailed information in this README\n- **Issues**: Report bugs or request features at [GitHub Issues](https://github.com/CX330Blake/Shellcode-IDE/issues)\n- **Binary Ninja Community**: Join the Binary Ninja community forums for plugin-related questions\n- **Source Code**: Browse the source code in this repository for implementation details\n\n## Who maintains and contributes\n\n### Maintainer\n\n- **CX330Blake** - Original author and current maintainer\n\n### Contributing\n\nContributions are welcome! Please open issues for bugs/ideas and submit focused PRs.\n\n#### Development Setup\n\n1. Clone the repository into your Binary Ninja plugins directory\n2. Install dependencies: `pip install -r requirements.txt`\n3. Restart Binary Ninja or use \"Reload Plugins\"\n\n#### For Developers\n\n- **Tech stack**: Python 3.8+, Binary Ninja Python API, PySide2\n- Keep changes minimal and scoped to the task\n- Match the existing code style and structure\n- Include tests for new logic where practical\n\n", + "minimumbinaryninjaversion": 3164, + "name": "Shellcode-IDE", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/8878de59-f798-42ef-923d-a0e6d7960f3e/versions/34617ed8-f681-446b-9abb-72ff0aff2f06/platforms/2839/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/8878de59-f798-42ef-923d-a0e6d7960f3e/versions/34617ed8-f681-446b-9abb-72ff0aff2f06/platforms/2839/download?notrack=1", + "path": "CX330Blake_Shellcode_IDE", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 112, + "updated_at": "2025-11-19 23:33:41+00:00" + }, + "projectUrl": "https://github.com/CX330Blake/Shellcode-IDE", + "subdir": "", + "type": [ + "binaryview", + "helper", + "ui" + ], + "version": "0.1.16", + "view_only": false + }, + { + "api": [ + "python3", + "rust" + ], + "author": "xorhex", + "dependencies": "", + "description": "BinYars provides YARA-X scanning ability and a rule editor. When running commerical or higher Binary Ninja edition, it can sort files in the project view.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1768852275, + "license": { + "name": "MIT", + "text": "MIT License\r\n\r\nCopyright (c) 2025 xorhex\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE." + }, + "longdescription": "BinYars intergrates YARA-X with Binary Ninja. BinYars comes in two parts, the rust library which is used for the YARA-X scanning and a Python sidewidget which acts as a front end to the Rust component. The Python sidewidget provides both an interactive scanning interface along with a rule editor. For the commerical and higher Binary Ninja editions, the Rust component also will re-organize the binaries in the project view based off of metadata set in the YARA-X rules.\n\n### Changelog\n## Updates:\r\n\r\n - Updated Yara-X to 1.11.0\r\n\r\n## New Feature:\r\n\r\n - New metadata field, BNTrigger; which allows for code snippets to be included with the rule. What makes this special is the fact that console.log messages (following this format `console.hex(\"BN|rule:|: \", )`) are prepended to the script as variables, thus allowing the embedded script to make use of the values extracted by the rule. The code must be base64 encoded in the rule itself. \r\n\r\nThe format is \"\\|\\\"; for example:\r\n\r\n```\r\nBNTrigger = \"Extract File|ZnJvbSBiaW5hcnluaW5qYSBpbXBvcnQgVHJhbnNmb3JtOyAKaW1wb3J0IGhhc2hsaWI7IAoKc2hhMjU2ID0gaGFzaGxpYi5zaGEyNTYoYnYuZmlsZS5yYXcucmVhZCgwLCBidi5maWxlLnJhdy5sZW5ndGgpKS5oZXhkaWdlc3QoKQoKY3VycmVudF9wcm9qZWN0LmNyZWF0ZV9maWxlKFRyYW5zZm9ybVsnWE9SJ10uZGVjb2RlKGJ2LnJlYWQoT2Zmc2V0LCBTaXplKSwgeydrZXknOiBieXRlcyhbS2V5XSl9KSwgZm9sZGVyPU5vbmUsIG5hbWU9ZiJleHRyYWN0ZWRfZnJvbV97YnYucHJvamVjdF9maWxlLm5hbWUuc3BsaXQoJy4nKVswXX0uYmluIiwgZGVzY3JpcHRpb249ZiJFeHRyYWN0ZWQgZnJvbToge3NoYTI1Nn0iKQ==\"\r\n```\r\n\r\nMore details can be found here: https://github.com/xorhex/BinYars-SideWidget/blob/main/README.md\r\n\r\n\r\n\r\nBelow is an example of the code snippet, decoded along with the values extracted from the rule. The `Key`, `Size`, and `Offset` in this example are the variables added to the snippet. Notice the snippet (which starts at the first import statement) makes use of those variables.\r\n ![](https://github.com/xorhex/BinYars-SideWidget/blob/222bab4e50253e32dbee731bf9c98f786bceb44f/pictures/BinYars_ActionPopUpModule.png)\r\n\r\nThe plugin does not yet allow for the user to click a button to automatically execute the code; however, until that feature is added, the plugin let's you copy and paste that code into the console to execute it. \r\n\r\n## General Info\r\n\r\nTargets the Stable Binary Ninja Version: 5.2\r\n\r\nDue to included rust binaries, this release only supports:\r\n\r\n - Windows AMD64\r\n - Linux x64\r\n - Mac ARM64\r\n\r\nTo build the Rust component manually, see: https://github.com/xorhex/BinYars", + "minimumbinaryninjaversion": 8722, + "name": "BinYars", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/e8fcccda-98cd-4895-a04e-3fe19e7834da/versions/d885f026-dee7-4a59-9086-f6e8a809e8d4/platforms/3085/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/e8fcccda-98cd-4895-a04e-3fe19e7834da/versions/d885f026-dee7-4a59-9086-f6e8a809e8d4/platforms/3085/download?notrack=1", + "path": "xorhex_BinYars_SideWidget", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 1, + "updated_at": "2026-01-19 19:51:15+00:00" + }, + "projectUrl": "https://github.com/xorhex/BinYars-SideWidget", + "subdir": "", + "type": [ + "helper" + ], + "version": "v1.3.8722", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Damian Pfammatter and Sergio Paganoni", + "dependencies": "PyYAML==6.0.2\nijson==3.3.0\nlark==1.2.2\nnetworkx[default]==3.4.2\nopenai >= 1.78.1 , <2.0.0\npydantic>=2.0.0\ntermcolor==2.4.0\n", + "description": "Uncover interesting paths using static backward slicing", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1769179594, + "license": { + "name": "Apache-2.0", + "text": "Copyright (c) 2025 Damian Pfammatter and Sergio Paganoni\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License." + }, + "longdescription": "

\n \"Mole\n

\n\n**_Mole_** is a *Binary Ninja* plugin designed to identify **interesting paths** in binaries. It performs **static backward slicing** on variables using *Binary Ninja*'s *Medium Level Intermediate Language* (*MLIL*) in its *Static Single Assignment* (*SSA*) form.\n\nIn *Mole*, a **path** refers to the flow of data between a defined source and sink. What constitutes an \"interesting\" path depends on the analysis goals. For instance, when searching for **vulnerabilities**, one might look for paths where untrusted inputs (sources) influence sensitive operations (sinks) in potentially dangerous ways.\n\nThe following list highlights some of *Mole*'s current **features**:\n- **Operation Mode**: *Mole* can be run either within *Binary Ninja*'s UI or in headless mode. Headless mode is particularly useful for scripted analysis across a large number of binaries. Conversely, using *Mole* within the UI is ideal for closely investigating detected paths.\n- **Path Identification**:\n - **Configuration**: *Mole* allows users to define source and sink functions through Binary Ninja\u2019s UI or configuration files (see Usage). This provides flexibility in selecting sources and sinks based on the specific usage scenario.\n - **Exploration**: To better understand a path and examine its characteristics, all instructions along the path can be printed or visually highlighted within *Binary Ninja*. Additionally, a side-by-side comparison of two paths can be displayed to quickly identify differences. Similar to instructions, a path's sequence of function calls can be printed or even visualized as a graph.\n - **Grouping**: To facilitate the identification of similar paths, *Mole* supports multiple grouping strategies. Currently, paths can be grouped based on matching source and sink functions, or by identical call sequences. New custom grouping strategies can easily be added to extend and customize this functionality (see Customization).\n - **Persistence**: Discovered paths can be annotated for clarity or removed if deemed irrelevant. To preserve analysis progress, paths can be saved directly to the target binary's database (*Binary Ninja*'s `.bndb` format). Paths can also be exported - for example, when performing headless analysis across many binaries on a file system, allowing identified paths to be later imported for easier exploration within *Binary Ninja*.\n- **Path Analysis With AI**: *Mole* can interact with local or remote *Large Language Models* (*LLMs*) via the *OpenAI API* (see Usage). The models are used to analyze identified paths and reason whether a given path corresponds to an exploitable vulnerability or not. The *LLM* attempts to classify the vulnerability and assign a severity level, which can help prioritize which paths are worth further investigation by an analyst. *Mole* provides a basic set of tools that the *LLM* can use to request additional information about the binary under analysis. This feature is an initial prototype and has not yet undergone systematic evaluation (e.g., models, prompts, tools). If it proves useful, we plan to improve it in future releases.\n\n- **Inter-Procedural Variable Slicing**: *Mole* supports slicing *MLIL variables* across function boundaries - a task that presents several challenges. For instance, statically determining a function's effective caller(s) is often difficult or even impossible. As a result, the implemented approach is an approximation. While not perfect, it performs reasonably well across a wide range of practical scenarios.\n- **Basic Pointer Analysis**: *Mole* currently implements a simplified strategy for tracking pointer usage. Like inter-procedural slicing, this approach is a simplification with inherent limitations (e.g. it cannot track global variables). Nevertheless, it performs well in many practical cases and is planned to be improved in future versions.\n\n### Changelog\nNew release for tag refs/tags/v0.5.2\r\n## What's Changed\r\n* Increase Minimum Binja Version from 6455 to 7290 by @pdamian in https://github.com/cyber-defence-campus/mole/pull/245\r\n* Add Output Parameters to The Set of Known Pointer Variables by @pdamian in https://github.com/cyber-defence-campus/mole/pull/247\r\n\r\n\r\n**Full Changelog**: https://github.com/cyber-defence-campus/mole/compare/v0.5.1...v0.5.2", + "minimumbinaryninjaversion": 7290, + "name": "Mole", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/d02c5134-777a-483f-96c9-af1b7c770e71/versions/ea4100f4-1c40-4aae-8d08-b4cc15838e3b/platforms/3091/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/d02c5134-777a-483f-96c9-af1b7c770e71/versions/ea4100f4-1c40-4aae-8d08-b4cc15838e3b/platforms/3091/download?notrack=1", + "path": "cyberdefencecampus_mole", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 74, + "updated_at": "2026-01-23 14:46:34+00:00" + }, + "projectUrl": "https://github.com/cyber-defence-campus/mole", + "subdir": "", + "type": [ + "ui", + "helper" + ], + "version": "0.5.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "fosdick.io", + "dependencies": "", + "description": "A Binary Ninja plugin that provides a MCP (Model Context Protocol) server with HTTP endpoints for LLM integration.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1765911170, + "license": { + "name": "GPL-3.0", + "text": "Copyright 2025 fosdick.io\n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see ." + }, + "longdescription": "# Binary Ninja MCP\n\nThis repository contains a Binary Ninja plugin, MCP server, and bridge that enables seamless integration of Binary Ninja's capabilities with your favorite LLM client.\n\n![Binary Ninja MCP Logo](images/logo-small.png)\n\n## Features\n\n- Seamless, real-time integration between Binary Ninja and MCP clients\n- Enhanced reverse engineering workflow with AI assistance\n- Support for every MCP client (Cline, Claude desktop, Roo Code, etc.)\n- Open multiple binaries and switch the active target automatically\n\n## Examples\n\n### Solving a CTF Challenge\n\nCheck out [this demo video on YouTube](https://www.youtube.com/watch?v=0ffMHH39L_M) that uses the extension to solve a CTF challenge.\n\n## Components\n\nThis repository contains two separate components:\n\n1. A Binary Ninja plugin that provides an MCP server that exposes Binary Ninja's capabilities through HTTP endpoints. This can be used with any client that implements the MCP protocol.\n2. A separate MCP bridge component that connects your favorite MCP client to the Binary Ninja MCP server.\n\n## Prerequisites\n\n- [Binary Ninja](https://binary.ninja/)\n- Python 3.12+\n- MCP client (those with auto-setup support are listed below)\n\n## Installation\n\n### MCP Client\n\nPlease install the MCP client before you install Binary Ninja MCP so that the MCP clients can be auto-setup. We currently support auto-setup for these MCP clients:\n\n 1. Cline (recommended)\n 2. Roo Code\n 3. Claude Desktop (recommended)\n 4. Cursor\n 5. Windsurf\n 6. Claude Code\n 7. LM Studio\n\n### Extension Installation\n\nAfter the MCP client is installed, you can install the MCP server using the Binary Ninja Plugin Manager or manually. Both methods support auto-setup of MCP clients.\n\nIf your MCP client is not set, you should install it first then try to reinstall the extension.\n\n#### Binary Ninja Plugin Manager\n\nYou may install the extension through Binary Ninja's Plugin Manager (`Plugins > Manage Plugins`).\n\n![Plugin Manager](images/plugin-manager-listing.png)\n\n#### Manual Install\n\nTo manually install the extension, this repository can be copied into the [Binary Ninja plugins folder](https://docs.binary.ninja/guide/plugins.html).\n\n### [Optional] Manual Setup of the MCP Client\n\n*You do NOT need to set this up manually if you use a supported MCP client and follow the installation steps before.*\n\nYou can also manage MCP client entries from the command line:\n\n```bash\npython scripts/mcp_client_installer.py --install # auto setup supported MCP clients\npython scripts/mcp_client_installer.py --uninstall # remove entries and delete `.mcp_auto_setup_done`\npython scripts/mcp_client_installer.py --config # print a generic JSON config snippet\n```\n\nFor other MCP clients, this is an example config:\n\n```json\n{\n \"mcpServers\": {\n \"binary_ninja_mcp\": {\n \"command\": \"/ABSOLUTE/PATH/TO/Binary Ninja/plugins/repositories/community/plugins/fosdickio_binary_ninja_mcp/.venv/bin/python\",\n \"args\": [\n \"/ABSOLUTE/PATH/TO/Binary Ninja/plugins/repositories/community/plugins/fosdickio_binary_ninja_mcp/bridge/binja_mcp_bridge.py\"\n ]\n }\n }\n}\n```\n\nNote: Replace `/ABSOLUTE/PATH/TO` with the actual absolute path to your project directory. The virtual environment's Python interpreter must be used to access the installed dependencies.\n\n## Usage\n\n1. Open Binary Ninja and load a binary\n2. Click the button shown at left bottom corner\n3. Start using it through your MCP client\n\nYou may now start prompting LLMs about the currently open binary (or binaries). Example prompts:\n\n### CTF Challenges\n\n```txt\nYou're the best CTF player in the world. Please solve this reversing CTF challenge in the folder using Binary Ninja. Rename ALL the function and the variables during your analyzation process (except for main function) so I can better read the code. Write a python solve script if you need. Also, if you need to create struct or anything, please go ahead. Reverse the code like a human reverser so that I can read the decompiled code that analyzed by you.\n```\n\n### Malware Analysis\n\n```txt\nYour task is to analyze an unknown file which is currently open in Binary Ninja. You can use the existing MCP server called \"binary_ninja_mcp\" to interact with the Binary Ninja instance and retrieve information, using the tools made available by this server. In general use the following strategy:\n\n- Start from the entry point of the code\n- If this function call others, make sure to follow through the calls and analyze these functions as well to understand their context\n- If more details are necessary, disassemble or decompile the function and add comments with your findings\n- Inspect the decompilation and add comments with your findings to important areas of code\n- Add a comment to each function with a brief summary of what it does\n- Rename variables and function parameters to more sensible names\n- Change the variable and argument types if necessary (especially pointer and array types)\n- Change function names to be more descriptive, using vibe_ as prefix.\n- NEVER convert number bases yourself. Use the convert_number MCP tool if needed!\n- When you finish your analysis, report how long the analysis took\n- At the end, create a report with your findings.\n- Based only on these findings, make an assessment on whether the file is malicious or not.\n```\n\n## Supported Capabilities\n\nThe following table lists the available MCP functions for use:\n\n| Function | Description |\n| -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |\n| `decompile_function` | Decompile a specific function by name and return HLIL-like code with addresses. |\n| `get_il(name_or_address, view, ssa)` | Get IL for a function in `hlil`, `mlil`, or `llil` (SSA supported for MLIL/LLIL). |\n| `define_types` | Add type definitions from a C string type definition. |\n| `delete_comment` | Delete the comment at a specific address. |\n| `delete_function_comment` | Delete the comment for a function. |\n| `declare_c_type(c_declaration)` | Create/update a local type from a single C declaration. |\n| `format_value(address, text, size)` | Convert a value and annotate it at an address in BN (adds a comment). |\n| `function_at` | Retrieve the name of the function the address belongs to. |\n| `get_assembly_function` | Get the assembly representation of a function by name or address. |\n| `get_entry_points()` | List entry point(s) of the loaded binary. |\n| `get_binary_status` | Get the current status of the loaded binary. |\n| `get_comment` | Get the comment at a specific address. |\n| `get_function_comment` | Get the comment for a function. |\n| `get_user_defined_type` | Retrieve definition of a user-defined type (struct, enumeration, typedef, union). |\n| `get_xrefs_to(address)` | Get all cross references (code and data) to an address. |\n| `get_data_decl(name_or_address, length)` | Return a C-like declaration and a hexdump for a data symbol or address. |\n| `hexdump_address(address, length)` | Text hexdump at address. `length < 0` reads exact defined size if available. |\n| `hexdump_data(name_or_address, length)` | Hexdump by data symbol name or address. `length < 0` reads exact defined size if available. |\n| `get_xrefs_to_enum(enum_name)` | Get usages related to an enum (matches member constants in code). |\n| `get_xrefs_to_field(struct_name, field_name)` | Get all cross references to a named struct field. |\n| `get_xrefs_to_struct(struct_name)` | Get xrefs/usages related to a struct (members, globals, code refs). |\n| `get_xrefs_to_type(type_name)` | Get xrefs/usages related to a struct/type (globals, refs, HLIL matches). |\n| `get_xrefs_to_union(union_name)` | Get xrefs/usages related to a union (members, globals, code refs). |\n| `get_type_info(type_name)` | Resolve a type and return declaration, kind, and members. |\n| `make_function_at(address, platform)` | Create a function at an address. `platform` optional; use `default` to pick the BinaryView/platform default. |\n| `list_platforms()` | List all available platform names. |\n| `list_binaries()` | List managed/open binaries with ids and active flag. |\n| `select_binary(view)` | Select active binary by id or filename. |\n| `list_all_strings()` | List all strings (no pagination; aggregates all pages). |\n| `list_classes` | List all namespace/class names in the program. |\n| `list_data_items` | List defined data labels and their values. |\n| `list_exports` | List exported functions/symbols. |\n| `list_imports` | List imported symbols in the program. |\n| `list_local_types(offset, count)` | List local Types in the current database (name/kind/decl). |\n| `list_methods` | List all function names in the program. |\n| `list_namespaces` | List all non-global namespaces in the program. |\n| `list_segments` | List all memory segments in the program. |\n| `list_strings(offset, count)` | List all strings in the database (paginated). |\n| `list_strings_filter(offset, count, filter)` | List matching strings (paginated, filtered by substring). |\n| `rename_data` | Rename a data label at the specified address. |\n| `rename_function` | Rename a function by its current name to a new user-defined name. |\n| `rename_single_variable` | Rename a single local variable inside a function. |\n| `rename_multi_variables` | Batch rename multiple local variables in a function (mapping or pairs). |\n| `set_local_variable_type(function_address, variable_name, new_type)` | Set a local variable's type. |\n| `retype_variable` | Retype variable inside a given function. |\n| `search_functions_by_name` | Search for functions whose name contains the given substring. |\n| `search_types(query, offset, count)` | Search local Types by substring (name/decl). |\n| `set_comment` | Set a comment at a specific address. |\n| `set_function_comment` | Set a comment for a function. |\n| `set_function_prototype(name_or_address, prototype)` | Set a function's prototype by name or address. |\n| `patch_bytes(address, data, save_to_file)` | Patch raw bytes at an address (byte-level, not assembly). Can patch entire instructions by providing their bytecode. Address: hex (e.g., \"0x401000\") or decimal. Data: hex string (e.g., \"90 90\"). `save_to_file` (default True) saves to disk and re-signs on macOS. |\n\nThese are the list of HTTP endpoints that can be called:\n\n- `/allStrings`: All strings in one response.\n- `/formatValue?address=&text=&size=`: Convert and set a comment at an address.\n- `/getXrefsTo?address=`: Xrefs to address (code+data).\n- `/getDataDecl?name=|address=&length=`: JSON with declaration-style string and a hexdump for a data symbol or address. Keys: `address`, `name`, `size`, `type`, `decl`, `hexdump`. `length < 0` reads exact defined size if available.\n- `/hexdump?address=&length=`: Text hexdump aligned at address; `length < 0` reads exact defined size if available.\n- `/hexdumpByName?name=&length=`: Text hexdump by symbol name. Recognizes BN auto-labels like `data_`, `byte_`, `word_`, `dword_`, `qword_`, `off_`, `unk_`, and plain hex addresses.\n- `/makeFunctionAt?address=&platform=`: Create a function at an address (idempotent if already exists). `platform=default` uses the BinaryView/platform default.\n- `/platforms`: List all available platform names.\n- `/binaries` or `/views`: List managed/open binaries with ids and active flag.\n- `/selectBinary?view=`: Select active binary for subsequent operations.\n- `/data?offset=&limit=&length=`: Defined data items with previews. `length` controls bytes read per item (capped at defined size). Default behavior reads exact defined size when available; `length=-1` forces exact-size.\n- `/getXrefsToEnum?name=`: Enum usages by matching member constants.\n- `/getXrefsToField?struct=&field=`: Xrefs to struct field.\n- `/getXrefsToType?name=`: Xrefs/usages related to a struct/type name.\n- `/getTypeInfo?name=`: Resolve a type and return declaration and details.\n- `/getXrefsToUnion?name=`: Union xrefs/usages (members, globals, refs).\n- `/localTypes?offset=&limit=`: List local types.\n- `/strings?offset=&limit=`: Paginated strings.\n- `/strings/filter?offset=&limit=&filter=`: Filtered strings.\n- `/searchTypes?query=&offset=&limit=`: Search local types by substring.\n- `/patch` or `/patchBytes?address=&data=&save_to_file=`: Patch raw bytes at an address (byte-level, not assembly). Can patch entire instructions by providing their bytecode. Address: hex (e.g., \"0x401000\") or decimal. Data: hex string (e.g., \"90 90\"). `save_to_file` (default True) saves to disk and re-signs on macOS.\n- `/renameVariables`: Batch rename locals in a function. Parameters:\n - Function: one of `functionAddress`, `address`, `function`, `functionName`, or `name`.\n - Provide renames via one of:\n - `renames`: JSON array of `{old, new}` objects\n - `mapping`: JSON object of `old->new`\n - `pairs`: compact string `old1:new1,old2:new2`\n Returns per-item results plus totals. Order is respected; later pairs can refer to earlier new names.\n\n## Contributing\n\nContributions are welcome. Please feel free to submit a pull request.\n\n\n### Changelog\n## What's Changed\r\n* Add richer binary selection metadata for multi-file workflows by @farvend in https://github.com/fosdickio/binary_ninja_mcp/pull/33\r\n* Add Patch Function by @YunshiuanOAO in https://github.com/fosdickio/binary_ninja_mcp/pull/51\r\n\r\n## New Contributors\r\n* @farvend made their first contribution in https://github.com/fosdickio/binary_ninja_mcp/pull/33\r\n* @YunshiuanOAO made their first contribution in https://github.com/fosdickio/binary_ninja_mcp/pull/51\r\n\r\n**Full Changelog**: https://github.com/fosdickio/binary_ninja_mcp/compare/v1.0.1...v1.1.0", + "minimumbinaryninjaversion": 4000, + "name": "Binary Ninja MCP", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/27645210-6117-4885-b96f-ef5fce9d52b9/versions/1b755115-16e5-4316-a46e-4bc9c6d27157/platforms/2972/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/27645210-6117-4885-b96f-ef5fce9d52b9/versions/1b755115-16e5-4316-a46e-4bc9c6d27157/platforms/2972/download?notrack=1", + "path": "fosdickio_binary_ninja_mcp", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 202, + "updated_at": "2025-12-16 18:52:50+00:00" + }, + "projectUrl": "https://github.com/fosdickio/binary_ninja_mcp", + "subdir": "", + "type": [ + "architecture", + "binaryview", + "core", + "helper" + ], + "version": "1.1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "redthing1", + "dependencies": "", + "description": "Game ROM Loader for Binary Ninja", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1769511023, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024 redthing1\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "\n# Game ROM Loader\n\nBinary Ninja loader for some game ROMs.\n\n## features\n\n+ [x] load GBA (GameBoy Advance) ROMs (`armv4`)\n+ [x] load NDS (Nintendo DS) ROMs (`armv4`/`armv5`)\n+ [x] load: PSP (PlayStation Portable) ELF (`mipsel32`)\n+ [ ] planned: Wii (Nintendo Wii) binary (`powerpc`)\n+ [x] load: PS2 (PlayStation 2) ELF (`r5900l`)\n+ [x] load: 3DS (Nintendo 3DS) binary (`armv5`/`armv6`)\n\n\n### Changelog\n**Full Changelog**: https://github.com/redthing1/binja_gameroms_plugin/compare/0.0.10...v0.2.0", + "minimumbinaryninjaversion": 3164, + "name": "Game ROM Loader", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/cdc2a366-c45d-460b-9498-63df4d75bf7f/versions/36bf2bf4-646b-4dc8-8c04-052df0750789/platforms/3115/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/cdc2a366-c45d-460b-9498-63df4d75bf7f/versions/36bf2bf4-646b-4dc8-8c04-052df0750789/platforms/3115/download?notrack=1", + "path": "redthing1_binja_gameroms_plugin", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 2, + "updated_at": "2026-01-27 10:50:23+00:00" + }, + "projectUrl": "https://github.com/redthing1/binja_gameroms_plugin", + "subdir": "", + "type": [ + "architecture", + "binaryview", + "core", + "ui" + ], + "version": "0.2.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Koh M. Nakagawa", + "dependencies": "", + "description": "Binary Ninja plugin that fills missing indirect branch information", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1760943077, + "license": { + "name": "Apache version 2.0", + "text": "Apache License\r\n Version 2.0, January 2004\r\n http://www.apache.org/licenses/\r\n\r\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\r\n\r\n 1. Definitions.\r\n\r\n \"License\" shall mean the terms and conditions for use, reproduction,\r\n and distribution as defined by Sections 1 through 9 of this document.\r\n\r\n \"Licensor\" shall mean the copyright owner or entity authorized by\r\n the copyright owner that is granting the License.\r\n\r\n \"Legal Entity\" shall mean the union of the acting entity and all\r\n other entities that control, are controlled by, or are under common\r\n control with that entity. For the purposes of this definition,\r\n \"control\" means (i) the power, direct or indirect, to cause the\r\n direction or management of such entity, whether by contract or\r\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\r\n outstanding shares, or (iii) beneficial ownership of such entity.\r\n\r\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\r\n exercising permissions granted by this License.\r\n\r\n \"Source\" form shall mean the preferred form for making modifications,\r\n including but not limited to software source code, documentation\r\n source, and configuration files.\r\n\r\n \"Object\" form shall mean any form resulting from mechanical\r\n transformation or translation of a Source form, including but\r\n not limited to compiled object code, generated documentation,\r\n and conversions to other media types.\r\n\r\n \"Work\" shall mean the work of authorship, whether in Source or\r\n Object form, made available under the License, as indicated by a\r\n copyright notice that is included in or attached to the work\r\n (an example is provided in the Appendix below).\r\n\r\n \"Derivative Works\" shall mean any work, whether in Source or Object\r\n form, that is based on (or derived from) the Work and for which the\r\n editorial revisions, annotations, elaborations, or other modifications\r\n represent, as a whole, an original work of authorship. For the purposes\r\n of this License, Derivative Works shall not include works that remain\r\n separable from, or merely link (or bind by name) to the interfaces of,\r\n the Work and Derivative Works thereof.\r\n\r\n \"Contribution\" shall mean any work of authorship, including\r\n the original version of the Work and any modifications or additions\r\n to that Work or Derivative Works thereof, that is intentionally\r\n submitted to Licensor for inclusion in the Work by the copyright owner\r\n or by an individual or Legal Entity authorized to submit on behalf of\r\n the copyright owner. For the purposes of this definition, \"submitted\"\r\n means any form of electronic, verbal, or written communication sent\r\n to the Licensor or its representatives, including but not limited to\r\n communication on electronic mailing lists, source code control systems,\r\n and issue tracking systems that are managed by, or on behalf of, the\r\n Licensor for the purpose of discussing and improving the Work, but\r\n excluding communication that is conspicuously marked or otherwise\r\n designated in writing by the copyright owner as \"Not a Contribution.\"\r\n\r\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\r\n on behalf of whom a Contribution has been received by Licensor and\r\n subsequently incorporated within the Work.\r\n\r\n 2. Grant of Copyright License. Subject to the terms and conditions of\r\n this License, each Contributor hereby grants to You a perpetual,\r\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r\n copyright license to reproduce, prepare Derivative Works of,\r\n publicly display, publicly perform, sublicense, and distribute the\r\n Work and such Derivative Works in Source or Object form.\r\n\r\n 3. Grant of Patent License. Subject to the terms and conditions of\r\n this License, each Contributor hereby grants to You a perpetual,\r\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r\n (except as stated in this section) patent license to make, have made,\r\n use, offer to sell, sell, import, and otherwise transfer the Work,\r\n where such license applies only to those patent claims licensable\r\n by such Contributor that are necessarily infringed by their\r\n Contribution(s) alone or by combination of their Contribution(s)\r\n with the Work to which such Contribution(s) was submitted. If You\r\n institute patent litigation against any entity (including a\r\n cross-claim or counterclaim in a lawsuit) alleging that the Work\r\n or a Contribution incorporated within the Work constitutes direct\r\n or contributory patent infringement, then any patent licenses\r\n granted to You under this License for that Work shall terminate\r\n as of the date such litigation is filed.\r\n\r\n 4. Redistribution. You may reproduce and distribute copies of the\r\n Work or Derivative Works thereof in any medium, with or without\r\n modifications, and in Source or Object form, provided that You\r\n meet the following conditions:\r\n\r\n (a) You must give any other recipients of the Work or\r\n Derivative Works a copy of this License; and\r\n\r\n (b) You must cause any modified files to carry prominent notices\r\n stating that You changed the files; and\r\n\r\n (c) You must retain, in the Source form of any Derivative Works\r\n that You distribute, all copyright, patent, trademark, and\r\n attribution notices from the Source form of the Work,\r\n excluding those notices that do not pertain to any part of\r\n the Derivative Works; and\r\n\r\n (d) If the Work includes a \"NOTICE\" text file as part of its\r\n distribution, then any Derivative Works that You distribute must\r\n include a readable copy of the attribution notices contained\r\n within such NOTICE file, excluding those notices that do not\r\n pertain to any part of the Derivative Works, in at least one\r\n of the following places: within a NOTICE text file distributed\r\n as part of the Derivative Works; within the Source form or\r\n documentation, if provided along with the Derivative Works; or,\r\n within a display generated by the Derivative Works, if and\r\n wherever such third-party notices normally appear. The contents\r\n of the NOTICE file are for informational purposes only and\r\n do not modify the License. You may add Your own attribution\r\n notices within Derivative Works that You distribute, alongside\r\n or as an addendum to the NOTICE text from the Work, provided\r\n that such additional attribution notices cannot be construed\r\n as modifying the License.\r\n\r\n You may add Your own copyright statement to Your modifications and\r\n may provide additional or different license terms and conditions\r\n for use, reproduction, or distribution of Your modifications, or\r\n for any such Derivative Works as a whole, provided Your use,\r\n reproduction, and distribution of the Work otherwise complies with\r\n the conditions stated in this License.\r\n\r\n 5. Submission of Contributions. Unless You explicitly state otherwise,\r\n any Contribution intentionally submitted for inclusion in the Work\r\n by You to the Licensor shall be under the terms and conditions of\r\n this License, without any additional terms or conditions.\r\n Notwithstanding the above, nothing herein shall supersede or modify\r\n the terms of any separate license agreement you may have executed\r\n with Licensor regarding such Contributions.\r\n\r\n 6. Trademarks. This License does not grant permission to use the trade\r\n names, trademarks, service marks, or product names of the Licensor,\r\n except as required for reasonable and customary use in describing the\r\n origin of the Work and reproducing the content of the NOTICE file.\r\n\r\n 7. Disclaimer of Warranty. Unless required by applicable law or\r\n agreed to in writing, Licensor provides the Work (and each\r\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r\n implied, including, without limitation, any warranties or conditions\r\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\r\n PARTICULAR PURPOSE. You are solely responsible for determining the\r\n appropriateness of using or redistributing the Work and assume any\r\n risks associated with Your exercise of permissions under this License.\r\n\r\n 8. Limitation of Liability. In no event and under no legal theory,\r\n whether in tort (including negligence), contract, or otherwise,\r\n unless required by applicable law (such as deliberate and grossly\r\n negligent acts) or agreed to in writing, shall any Contributor be\r\n liable to You for damages, including any direct, indirect, special,\r\n incidental, or consequential damages of any character arising as a\r\n result of this License or out of the use or inability to use the\r\n Work (including but not limited to damages for loss of goodwill,\r\n work stoppage, computer failure or malfunction, or any and all\r\n other commercial damages or losses), even if such Contributor\r\n has been advised of the possibility of such damages.\r\n\r\n 9. Accepting Warranty or Additional Liability. While redistributing\r\n the Work or Derivative Works thereof, You may choose to offer,\r\n and charge a fee for, acceptance of support, warranty, indemnity,\r\n or other liability obligations and/or rights consistent with this\r\n License. However, in accepting such obligations, You may act only\r\n on Your own behalf and on Your sole responsibility, not on behalf\r\n of any other Contributor, and only if You agree to indemnify,\r\n defend, and hold each Contributor harmless for any liability\r\n incurred by, or claims asserted against, such Contributor by reason\r\n of your accepting any such warranty or additional liability.\r\n\r\n END OF TERMS AND CONDITIONS\r\n\r\n APPENDIX: How to apply the Apache License to your work.\r\n\r\n To apply the Apache License to your work, attach the following\r\n boilerplate notice, with the fields enclosed by brackets \"[]\"\r\n replaced with your own identifying information. (Don't include\r\n the brackets!) The text should be enclosed in the appropriate\r\n comment syntax for the file format. We also recommend that a\r\n file or class name and description of purpose be included on the\r\n same \"printed page\" as the copyright notice for easier\r\n identification within third-party archives.\r\n\r\n Copyright 2025 FFRI Security, Inc.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License." + }, + "longdescription": "# Binja Missing Link\n\nA Binary Ninja plugin for analyzing indirect branch targets in x86_64 binaries.\n\n## Description\n\nBinja Missing Link is a plugin for Binary Ninja that helps analyze indirect branch targets in x86_64 binaries. It provides detailed information about branch targets, function calls, and virtual table references, making it easier to understand program control flow and function relationships.\n\n### Before applying the Binja Missing Link plugin\n![before](./assets/before.png)\n\n### After applying the Binja Missing Link plugin\n![after](./assets/after.png)\n\n### Cross reference between branch points\n![demo](./assets/demo.gif)\n\n## Features\n\n**Comment Generation**\n- Adds detailed comments at branch sources and destinations\n- Includes:\n - Target addresses in hexadecimal\n - Function names (when available)\n - Virtual table information (when applicable)\n- Supports cross-referencing between branch points\n\n## Usage\n\n1. Load your x86_64 binary in Binary Ninja\n2. Run the plugin command \"Binja Missing Link\"\n3. Select the JSON file containing branch tracking information\n - The JSON file can be generated by running the LLDB commands (`brt_set_bps` and `brt_save`) provided by [my LLDB plugin repository](https://github.com/kohnakagawa/LLDB).\n4. The plugin will analyze the binary and add comments showing:\n - Branch destinations (BML_dst)\n - Branch sources (BML_src)\n - Virtual table references (when applicable)\n\n### Input Format\n\nThe plugin expects a JSON file with the following structure:\n```json\n{\n \"modules\": [\n {\n \"name\": \"module_name\",\n \"addr\": \"0xbase_address\"\n }\n ],\n \"branches\": [\n {\n \"before\": {\n \"module\": \"module_name\",\n \"func\": \"function_name\",\n \"registers\": {\n \"rip\": \"0xaddress\",\n // other register values\n }\n },\n \"after\": {\n \"module\": \"module_name\",\n \"func\": \"function_name\",\n \"registers\": {\n \"rip\": \"0xaddress\",\n // other register values\n }\n }\n }\n ]\n}\n```\n\n### Test\n\n```bash\n# Install pytest\npip install -r test/requirements-test.txt\npython3 /Applications/Binary\\ Ninja.app/Contents/Resources/scripts/install_api.py --force\n\n# Run tests\npytest test/test_binja_missinglink.py\n```\n\n## Author\n\nKoh M. Nakagawa (@tsunek0h) © FFRI Security, Inc. 2025\n\n## License\n\nThis plugin is released under an [Apache 2.0 license](./LICENSE).\n\n\n### Changelog\nInitial release", + "minimumbinaryninjaversion": 3164, + "name": "Binja Missing Link", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/6579c8f3-7ec0-4bac-8b02-f6c0c9c0869c/versions/3a0062c4-e359-4805-918d-188b19e0c5ff/platforms/2749/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/6579c8f3-7ec0-4bac-8b02-f6c0c9c0869c/versions/3a0062c4-e359-4805-918d-188b19e0c5ff/platforms/2749/download?notrack=1", + "path": "FFRI_binja_missinglink", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 1, + "updated_at": "2025-10-20 06:51:17+00:00" + }, + "projectUrl": "https://github.com/FFRI/binja-missinglink", + "subdir": "", + "type": [ + "core", + "helper" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Remco Sprooten", + "dependencies": "capstone>=5.0.0\n", + "description": "Generate YARA rules from selected assembly instructions with intelligent architecture-aware wildcarding. Features real-time preview, per-instruction wildcard control, and Capstone Engine integration for accurate opcode preservation across x86/x64, ARM/A...", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1751379754, + "license": { + "name": "MIT", + "text": "Copyright 2025 Remco Sprooten\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Simple YARA Generator - Binary Ninja YARA Rule Generator\r\n\r\nA Binary Ninja plugin that allows you to generate YARA rules from selected assembly instructions with intelligent architecture-aware wildcarding.\r\n\r\n## Features\r\n\r\n- Select assembly instructions in Binary Ninja and generate YARA rules\r\n- Architecture-aware wildcarding using Capstone Engine\r\n- Three-column view showing:\r\n - Raw bytes (hex format)\r\n - Wildcarded bytes with intelligent opcode preservation\r\n - Assembly instruction text\r\n- Individual checkbox control for each instruction to toggle wildcarding\r\n- Real-time YARA rule preview with one instruction per line\r\n- Copy to clipboard functionality\r\n- Support for multiple architectures (x86, x64, ARM, ARM64, MIPS)\r\n\r\n## Architecture Support\r\n\r\nThe plugin uses Capstone Engine for intelligent instruction analysis:\r\n\r\n- **x86/x64**: Analyzes operands to identify and wildcard immediate values and displacements\r\n- **ARM**: Wildcards all but the last byte (configurable)\r\n- **ARM64**: Preserves opcode bits, wildcards immediate values in middle bytes\r\n- **Thumb**: Conservative wildcarding of operands\r\n- **MIPS**: Basic operand wildcarding\r\n- **Fallback**: Simple heuristics when Capstone analysis fails\r\n\r\n## Architecture-Specific Wildcarding\r\n\r\nSimple YARA Generator uses Capstone Engine to provide intelligent, architecture-aware wildcarding:\r\n\r\n### ARM64/AArch64\r\n- **Opcode Preservation**: Automatically preserves critical opcode bytes (e.g., the `40 f9` pattern in `ldr` instructions)\r\n- **Operand Wildcarding**: Intelligently wildcards register fields and immediate values\r\n- **Example**: `ldr x16, [x16]` (bytes: `10 02 40 f9`) becomes `?? ?? 40 f9`\r\n\r\n### x86/x64\r\n- **Operand Detection**: Uses byte-pattern matching to locate immediate values and displacements\r\n- **Prefix Handling**: Preserves instruction prefixes and opcodes\r\n- **Memory Operands**: Automatically wildcards displacement values in memory references\r\n\r\n### ARM/Thumb\r\n- **Conservative Approach**: Preserves condition codes and primary opcode information\r\n- **Size Awareness**: Handles both 2-byte and 4-byte instructions appropriately\r\n\r\n## Installation (if not using the plugin manager)\r\n\r\n1. Copy the `YaraBN` folder to your Binary Ninja plugins directory:\r\n - **macOS**: `~/Library/Application Support/Binary Ninja/plugins/`\r\n - **Windows**: `%APPDATA%\\Binary Ninja\\plugins\\`\r\n - **Linux**: `~/.binaryninja/plugins/`\r\n\r\n2. Install dependencies:\r\n ```bash\r\n pip install capstone\r\n ```\r\n\r\n3. Restart Binary Ninja or reload plugins\r\n\r\n## Usage\r\n\r\n1. Open a binary in Binary Ninja\r\n2. Select the assembly instructions you want to include in your YARA rule (click and drag in the disassembly view)\r\n3. Right-click and select **Generate YARA Rule** from the context menu, or access it via **Plugins** \u2192 **Generate YARA Rule**\r\n4. A dialog will open showing three columns:\r\n - **Wildcard**: Checkbox to enable/disable wildcarding for each instruction\r\n - **Raw Bytes**: The actual bytes of the instruction in hex format\r\n - **Wildcarded Bytes**: The intelligently wildcarded version of the bytes\r\n - **Assembly**: The assembly instruction text\r\n5. Check/uncheck the boxes to control which instructions should use wildcarded bytes\r\n6. View the real-time YARA rule preview at the bottom\r\n7. Click \"Copy to Clipboard\" to copy the generated YARA rule\r\n\r\n## YARA Rule Format\r\n\r\nThe generated YARA rules follow this format:\r\n\r\n```yara\r\nrule generated_rule {\r\n meta:\r\n description = \"Auto-generated YARA rule from Binary Ninja\"\r\n author = \"Simple YARA Generator Plugin\"\r\n \r\n strings:\r\n $hex_string = { \r\n 77 06 \t // ja 0x805252d\r\n 83 ?? ?? \t// add esp, 0x4\r\n 5b \t // pop ebx {__saved_ebx}\r\n 5d \t // pop ebp {__saved_ebp}\r\n c3 \t // retn {__return_addr}\r\n }\r\n \r\n condition:\r\n $hex_string\r\n}\r\n\r\n```\r\n\r\nEach instruction appears on its own line with its assembly comment for easy identification.\r\n\r\n## Customization\r\n\r\n### YARA Rule Templates\r\n\r\nSimple YARA Generator uses a customizable template for generating YARA rules. The plugin includes a default template:\r\n\r\n- `yara_template.txt` - Default template with metadata fields\r\n\r\nYou can customize the YARA rule format by editing the `yara_template.txt` file in the plugin directory. The template uses Python's `.format()` syntax with the placeholder `{hex_content}` for the instruction bytes.\r\n\r\n**Example custom template:**\r\n```\r\nrule my_custom_rule {{\r\n meta:\r\n author = \"Your Name\"\r\n date = \"2025-06-29\"\r\n \r\n strings:\r\n $pattern = {{ {hex_content} }}\r\n \r\n condition:\r\n $pattern at entrypoint\r\n}}\r\n```\r\n\r\n## FAQ\r\n\r\n**Q: Is this really necessary?** \r\nA: If I can save 2 clicks by writing a plugin I will. Don't judge me.\r\n\r\n**Q: Why do you use Capstone and not the native BN API?** \r\nA: Unfortunately the BN API doesn't provide information about the bytes that make up the instruction.\r\n\r\n**Q: Can I trust the wildcarding?** \r\nA: TL;DR: No. Longer answer: The automatic wildcard should be considered a somewhat informed suggestion. I find that in most cases, if I need to wildcard part of an instruction I keep the opcode and wildcard the rest. Notice how I said in _most_ cases?\r\n\r\n**Q: Why will it only generate 1 string per rule?** \r\nA: Take the created rule as a suggestion, and either use the output of this plugin as input for your brain, or an external brain like an LLM. Mileage may vary.\r\n\r\n## Requirements\r\n\r\n- Binary Ninja \r\n- Capstone\r\n\r\n## License\r\n\r\nMIT License - see plugin.json for full license text.", + "minimumbinaryninjaversion": 7648, + "name": "Simple YARA Generator", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/2b68a9e0-71e5-4bce-a0e6-430a2a914106/versions/5eb8c580-ef0e-4b67-95a3-66d1f11d7dcf/platforms/2503/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/2b68a9e0-71e5-4bce-a0e6-430a2a914106/versions/5eb8c580-ef0e-4b67-95a3-66d1f11d7dcf/platforms/2503/download?notrack=1", + "path": "133742_SimpleYaraBN", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 2, + "updated_at": "2025-07-01 14:22:34+00:00" + }, + "projectUrl": "https://github.com/1337-42/SimpleYaraBN", + "subdir": "", + "type": [ + "ui" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Koh M. Nakagawa", + "dependencies": "", + "description": "XProtect Remediator Analyzer is a plugin analyzing XProtect Remediator binaries.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1760942467, + "license": { + "name": "Apache version 2.0", + "text": "Apache License\r\n Version 2.0, January 2004\r\n http://www.apache.org/licenses/\r\n\r\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\r\n\r\n 1. Definitions.\r\n\r\n \"License\" shall mean the terms and conditions for use, reproduction,\r\n and distribution as defined by Sections 1 through 9 of this document.\r\n\r\n \"Licensor\" shall mean the copyright owner or entity authorized by\r\n the copyright owner that is granting the License.\r\n\r\n \"Legal Entity\" shall mean the union of the acting entity and all\r\n other entities that control, are controlled by, or are under common\r\n control with that entity. For the purposes of this definition,\r\n \"control\" means (i) the power, direct or indirect, to cause the\r\n direction or management of such entity, whether by contract or\r\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\r\n outstanding shares, or (iii) beneficial ownership of such entity.\r\n\r\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\r\n exercising permissions granted by this License.\r\n\r\n \"Source\" form shall mean the preferred form for making modifications,\r\n including but not limited to software source code, documentation\r\n source, and configuration files.\r\n\r\n \"Object\" form shall mean any form resulting from mechanical\r\n transformation or translation of a Source form, including but\r\n not limited to compiled object code, generated documentation,\r\n and conversions to other media types.\r\n\r\n \"Work\" shall mean the work of authorship, whether in Source or\r\n Object form, made available under the License, as indicated by a\r\n copyright notice that is included in or attached to the work\r\n (an example is provided in the Appendix below).\r\n\r\n \"Derivative Works\" shall mean any work, whether in Source or Object\r\n form, that is based on (or derived from) the Work and for which the\r\n editorial revisions, annotations, elaborations, or other modifications\r\n represent, as a whole, an original work of authorship. For the purposes\r\n of this License, Derivative Works shall not include works that remain\r\n separable from, or merely link (or bind by name) to the interfaces of,\r\n the Work and Derivative Works thereof.\r\n\r\n \"Contribution\" shall mean any work of authorship, including\r\n the original version of the Work and any modifications or additions\r\n to that Work or Derivative Works thereof, that is intentionally\r\n submitted to Licensor for inclusion in the Work by the copyright owner\r\n or by an individual or Legal Entity authorized to submit on behalf of\r\n the copyright owner. For the purposes of this definition, \"submitted\"\r\n means any form of electronic, verbal, or written communication sent\r\n to the Licensor or its representatives, including but not limited to\r\n communication on electronic mailing lists, source code control systems,\r\n and issue tracking systems that are managed by, or on behalf of, the\r\n Licensor for the purpose of discussing and improving the Work, but\r\n excluding communication that is conspicuously marked or otherwise\r\n designated in writing by the copyright owner as \"Not a Contribution.\"\r\n\r\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\r\n on behalf of whom a Contribution has been received by Licensor and\r\n subsequently incorporated within the Work.\r\n\r\n 2. Grant of Copyright License. Subject to the terms and conditions of\r\n this License, each Contributor hereby grants to You a perpetual,\r\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r\n copyright license to reproduce, prepare Derivative Works of,\r\n publicly display, publicly perform, sublicense, and distribute the\r\n Work and such Derivative Works in Source or Object form.\r\n\r\n 3. Grant of Patent License. Subject to the terms and conditions of\r\n this License, each Contributor hereby grants to You a perpetual,\r\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r\n (except as stated in this section) patent license to make, have made,\r\n use, offer to sell, sell, import, and otherwise transfer the Work,\r\n where such license applies only to those patent claims licensable\r\n by such Contributor that are necessarily infringed by their\r\n Contribution(s) alone or by combination of their Contribution(s)\r\n with the Work to which such Contribution(s) was submitted. If You\r\n institute patent litigation against any entity (including a\r\n cross-claim or counterclaim in a lawsuit) alleging that the Work\r\n or a Contribution incorporated within the Work constitutes direct\r\n or contributory patent infringement, then any patent licenses\r\n granted to You under this License for that Work shall terminate\r\n as of the date such litigation is filed.\r\n\r\n 4. Redistribution. You may reproduce and distribute copies of the\r\n Work or Derivative Works thereof in any medium, with or without\r\n modifications, and in Source or Object form, provided that You\r\n meet the following conditions:\r\n\r\n (a) You must give any other recipients of the Work or\r\n Derivative Works a copy of this License; and\r\n\r\n (b) You must cause any modified files to carry prominent notices\r\n stating that You changed the files; and\r\n\r\n (c) You must retain, in the Source form of any Derivative Works\r\n that You distribute, all copyright, patent, trademark, and\r\n attribution notices from the Source form of the Work,\r\n excluding those notices that do not pertain to any part of\r\n the Derivative Works; and\r\n\r\n (d) If the Work includes a \"NOTICE\" text file as part of its\r\n distribution, then any Derivative Works that You distribute must\r\n include a readable copy of the attribution notices contained\r\n within such NOTICE file, excluding those notices that do not\r\n pertain to any part of the Derivative Works, in at least one\r\n of the following places: within a NOTICE text file distributed\r\n as part of the Derivative Works; within the Source form or\r\n documentation, if provided along with the Derivative Works; or,\r\n within a display generated by the Derivative Works, if and\r\n wherever such third-party notices normally appear. The contents\r\n of the NOTICE file are for informational purposes only and\r\n do not modify the License. You may add Your own attribution\r\n notices within Derivative Works that You distribute, alongside\r\n or as an addendum to the NOTICE text from the Work, provided\r\n that such additional attribution notices cannot be construed\r\n as modifying the License.\r\n\r\n You may add Your own copyright statement to Your modifications and\r\n may provide additional or different license terms and conditions\r\n for use, reproduction, or distribution of Your modifications, or\r\n for any such Derivative Works as a whole, provided Your use,\r\n reproduction, and distribution of the Work otherwise complies with\r\n the conditions stated in this License.\r\n\r\n 5. Submission of Contributions. Unless You explicitly state otherwise,\r\n any Contribution intentionally submitted for inclusion in the Work\r\n by You to the Licensor shall be under the terms and conditions of\r\n this License, without any additional terms or conditions.\r\n Notwithstanding the above, nothing herein shall supersede or modify\r\n the terms of any separate license agreement you may have executed\r\n with Licensor regarding such Contributions.\r\n\r\n 6. Trademarks. This License does not grant permission to use the trade\r\n names, trademarks, service marks, or product names of the Licensor,\r\n except as required for reasonable and customary use in describing the\r\n origin of the Work and reproducing the content of the NOTICE file.\r\n\r\n 7. Disclaimer of Warranty. Unless required by applicable law or\r\n agreed to in writing, Licensor provides the Work (and each\r\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r\n implied, including, without limitation, any warranties or conditions\r\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\r\n PARTICULAR PURPOSE. You are solely responsible for determining the\r\n appropriateness of using or redistributing the Work and assume any\r\n risks associated with Your exercise of permissions under this License.\r\n\r\n 8. Limitation of Liability. In no event and under no legal theory,\r\n whether in tort (including negligence), contract, or otherwise,\r\n unless required by applicable law (such as deliberate and grossly\r\n negligent acts) or agreed to in writing, shall any Contributor be\r\n liable to You for damages, including any direct, indirect, special,\r\n incidental, or consequential damages of any character arising as a\r\n result of this License or out of the use or inability to use the\r\n Work (including but not limited to damages for loss of goodwill,\r\n work stoppage, computer failure or malfunction, or any and all\r\n other commercial damages or losses), even if such Contributor\r\n has been advised of the possibility of such damages.\r\n\r\n 9. Accepting Warranty or Additional Liability. While redistributing\r\n the Work or Derivative Works thereof, You may choose to offer,\r\n and charge a fee for, acceptance of support, warranty, indemnity,\r\n or other liability obligations and/or rights consistent with this\r\n License. However, in accepting such obligations, You may act only\r\n on Your own behalf and on Your sole responsibility, not on behalf\r\n of any other Contributor, and only if You agree to indemnify,\r\n defend, and hold each Contributor harmless for any liability\r\n incurred by, or claims asserted against, such Contributor by reason\r\n of your accepting any such warranty or additional liability.\r\n\r\n END OF TERMS AND CONDITIONS\r\n\r\n APPENDIX: How to apply the Apache License to your work.\r\n\r\n To apply the Apache License to your work, attach the following\r\n boilerplate notice, with the fields enclosed by brackets \"[]\"\r\n replaced with your own identifying information. (Don't include\r\n the brackets!) The text should be enclosed in the appropriate\r\n comment syntax for the file format. We also recommend that a\r\n file or class name and description of purpose be included on the\r\n same \"printed page\" as the copyright notice for easier\r\n identification within third-party archives.\r\n\r\n Copyright 2025 FFRI Security, Inc.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License." + }, + "longdescription": "# Binja XProtect Remediator Analyzer\n\nA Binary Ninja plugin for analyzing XProtect Remediator binaries.\n\n## Description\n\nXProtect Remediator Analyzer is a Binary Ninja plugin developed to assist in the analysis of XProtect Remediator. It has been tested with XProtect Remediator versions 145 and 149.\n\n## Features\n\n### Annotate `_assess` functions command\n\nThe RemediationBuilder DSL defines several structures used to describe detection and remediation conditions. These structures are type-erased and converted into generalized types such as `AnyFileCondition`, `AnyServiceCondition`, `AnyProcessCondition`, and `AnySafariAppExtensionCondition`.\nEach condition structure includes a property named `_assess`, which evaluates whether the condition is satisfied for a given subject.\n\n```swift\nlet _assess: (Subject) -> Bool\n```\n\nFor more details on the RemediationBuilder DSL, please refer to the [RemediationBuilderDSLSpec repository](https://github.com/FFRI/RemediationBuilderDSLSpec).\n\nIn XProtectRemediator binaries, symbols for the `_assess` functions are stripped. However, their addresses can still be identified by analyzing the Protocol Witness Tables (PWTs) of protocols such as `FileConditionConvertible`, `ServiceConditionConvertible`, `ProcessConditionConvertible`, and `SafariAppExtensionConditionConvertible`.\nThe \u201cAnnotate `_assess` functions\u201d command locates these functions and assigns descriptive names to them accordingly.\n\n![Annotated `_assess` functions](./images/annotate_assess_functions.png)\n\nThis function is useful for understanding how conditions are evaluated during threat detection and remediation.\n\n### Annotate RemediationBuilder dump command\n\nWhen dumping array elements in LLDB\u2014such as those collected via `buildBlock` and `buildArray` functions of `FileRemediationBuilder`, `ServiceRemediationBuilder`, `ProcessRemediationBuilder`, or `SafariAppExtensionRemediationBuilder`\u2014the output is displayed as follows. Here, the custom LLDB command `p_boxed_array` (available [here](https://github.com/kohnakagawa/LLDB)) is used.\n\n```\n(lldb) p_boxed_array $arg1\n```\n\nThe dumped output is as follows.\n\n```\n(lldb) r\n... (omitted)\nProcess 40414 stopped\n* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1\n frame #0: 0x0000000100097255 XProtectRemediatorEicar` ___lldb_unnamed_symbol4984 + 197\nXProtectRemediatorEicar`___lldb_unnamed_symbol4984:\n-> 0x100097255 <+197>: call 0x100087e90 ; ___lldb_unnamed_symbol4716\n 0x10009725a <+202>: mov r15, rax\n 0x10009725d <+205>: mov rdi, r14\n 0x100097260 <+208>: call 0x100097c90 ; ___lldb_unnamed_symbol5027\n 0x100097265 <+213>: mov rdi, rbx\n 0x100097268 <+216>: call 0x1000b0308 ; symbol stub for: swift_release\n 0x10009726d <+221>: mov rax, r15\n 0x100097270 <+224>: add rsp, 0x98\nTarget 0: (XProtectRemediatorEicar) stopped.\n(lldb) re read $arg1\n rdi = 0x00007ff7bfefeed8\n(lldb) p_boxed_array 0x00007ff7bfefeed8\n([Empty]) $R0 = 1 value {\n [0] = {\n paths = 1 value {\n [0] = 0x0000600000069060 {\n logger = 0x0000600000069040 {\n logger = 0x00006000015683c0 {\n baseOS_object@0 = {\n baseNSObject@0 = {\n isa = OS_os_log\n }\n }\n }\n }\n url = \"file:///tmp/eicar\"\n }\n }\n predicate = nil\n searchDir = nil\n searchDepth = nil\n regexpArray = 0 values {}\n isFileSearchRemediation = false\n isPredicateSearchRemediation = false\n reportOnlyBool = false\n conditions = 2 values {\n [0] = {\n constraint = 68\n _assess = 0x0000000100083110 XProtectRemediatorEicar`___lldb_unnamed_symbol4233\n }\n [1] = {\n constraint = {\n payload_data_0 = 0x00006000024682a0 {\n description = \"YaraRule[32 bytes]\"\n compiler = 0x7fef1200f400 {\n pointee = {}\n }\n rules = 0x6000023681e0 {\n pointee = {}\n }\n signpost_compile_name = \"YARA_Compile\"\n callbackV3 = {}\n callbackV4 = {}\n }\n payload_data_1 = 0x0000000000000000\n payload_data_2 = 0x0000000000000000\n metadata = 0x00000001000f1c08\n wtable = 0x00007ff85f269ac8 libswiftCore.dylib`InitialAllocationPool + 23976\n }\n _assess = 0x0000000100082ef0 XProtectRemediatorEicar`___lldb_unnamed_symbol4221\n }\n }\n }\n}\n```\n\nIn this output, the address of the `_assess` function within an `AnyFileCondition` is displayed. However, since the symbols are stripped, it is not possible to determine the original structure prior to its conversion to `AnyFileCondition`.\nThe \u201cAnnotate RemediationBuilder dump\u201d command resolves this by identifying the original structure and assigning appropriate names to the corresponding functions.\n\nThe usage is as follows:\n\n1. In LLDB, dump the array elements collected via `buildBlock` or `buildArray` functions of `FileRemediationBuilder`, `ServiceRemediationBuilder`, `ProcessRemediationBuilder`, or `SafariAppExtensionRemediationBuilder`.\n2. Execute the \u201cAnnotate RemediationBuilder dump\u201d command. A text input box will appear\u2014paste the output from step 1 into this box.\n3. The tool will annotate the original structure name prior to its conversion to `AnyFileCondition` for each `_assess` function. (See the conditions array in the annotated output below.)\n\nThe following is the example output of the \u201cAnnotate RemediationBuilder dump\u201d command.\n\n```\n(lldb) r\n... (omitted)\nProcess 40414 stopped\n* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1\n frame #0: 0x0000000100097255 XProtectRemediatorEicar` ___lldb_unnamed_symbol4984 + 197\nXProtectRemediatorEicar`___lldb_unnamed_symbol4984:\n-> 0x100097255 <+197>: call 0x100087e90 ; ___lldb_unnamed_symbol4716\n 0x10009725a <+202>: mov r15, rax\n 0x10009725d <+205>: mov rdi, r14\n 0x100097260 <+208>: call 0x100097c90 ; ___lldb_unnamed_symbol5027\n 0x100097265 <+213>: mov rdi, rbx\n 0x100097268 <+216>: call 0x1000b0308 ; symbol stub for: swift_release\n 0x10009726d <+221>: mov rax, r15\n 0x100097270 <+224>: add rsp, 0x98\nTarget 0: (XProtectRemediatorEicar) stopped.\n(lldb) re read $arg1\n rdi = 0x00007ff7bfefeed8\n(lldb) p_boxed_array 0x00007ff7bfefeed8\n([Empty]) $R0 = 1 value {\n [0] = {\n paths = 1 value {\n [0] = 0x0000600000069060 {\n logger = 0x0000600000069040 {\n logger = 0x00006000015683c0 {\n baseOS_object@0 = {\n baseNSObject@0 = {\n isa = OS_os_log\n }\n }\n }\n }\n url = \"file:///tmp/eicar\"\n }\n }\n predicate = nil\n searchDir = nil\n searchDepth = nil\n regexpArray = 0 values {}\n isFileSearchRemediation = false\n isPredicateSearchRemediation = false\n reportOnlyBool = false\n conditions = 2 values {\n [0] = {\n constraint = 68\n // You can find that the structure before conversion to AnyFileCondition is `MinFileSize`\n _assess = 0x0000000100083110 (Assess of MinFileSize for FileConditionConvertible) XProtectRemediatorEicar`___lldb_unnamed_symbol4233\n }\n [1] = {\n constraint = {\n payload_data_0 = 0x00006000024682a0 {\n description = \"YaraRule[32 bytes]\"\n compiler = 0x7fef1200f400 {\n pointee = {}\n }\n rules = 0x6000023681e0 {\n pointee = {}\n }\n signpost_compile_name = \"YARA_Compile\"\n callbackV3 = {}\n callbackV4 = {}\n }\n payload_data_1 = 0x0000000000000000\n payload_data_2 = 0x0000000000000000\n metadata = 0x00000001000f1c08\n wtable = 0x00007ff85f269ac8 libswiftCore.dylib`InitialAllocationPool + 23976\n }\n // You can find that the structure before conversion to AnyFileCondition is `FileYara`\n _assess = 0x0000000100082ef0 (Assess of FileYara for FileConditionConvertible) XProtectRemediatorEicar`___lldb_unnamed_symbol4221\n }\n }\n }\n}\n```\n\n### Annotate obfuscated strings command\n\nXProtectRemediator stores YARA rules, file paths, regular expressions, and other detection-related information in an encrypted format, which is decrypted at runtime.\nThe \u201cAnnotate obfuscated strings\u201d command displays the contents of these encrypted strings in the Binary Ninja database.\n\nThe usage is as follows:\n\n1. Run [./dump_secret_config/run.sh](./dump_secret_config/run.sh) to output segment data containing decrypted strings.\n2. Execute the \u201cAnnotate obfuscated strings\u201d command. A file selection dialog will appear\u2014select one or more .bin files generated in step 1.\n\nAfter running this plugin, information about the decrypted strings is added to the Binary Ninja database, making them visible within the disassembly and string views.\n\n**Before**\n\n![Annotated obfuscated strings (before)](./images/redpine_before.png)\n\n**After**\n\n![Annotated obfuscated strings (after)](./images/redpine_after.png)\n\n## Author\n\nKoh M. Nakagawa (@tsunek0h). © FFRI Security, Inc. 2025\n\n## License\n\n[Apache version 2.0](LICENSE)\n\n\n### Changelog\nInitial release", + "minimumbinaryninjaversion": 3164, + "name": "XProtect Remediator Analyzer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/0c23bfe0-8949-4b58-b7bc-380a312ffbd4/versions/a673010e-a15a-42e2-a706-6d4c9d6256c8/platforms/2755/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/0c23bfe0-8949-4b58-b7bc-380a312ffbd4/versions/a673010e-a15a-42e2-a706-6d4c9d6256c8/platforms/2755/download?notrack=1", + "path": "FFRI_binja_xpr_analyzer", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 5, + "updated_at": "2025-10-20 06:41:07+00:00" + }, + "projectUrl": "https://github.com/FFRI/binja-xpr-analyzer", + "subdir": "", + "type": [ + "core", + "helper" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "jonpalmisc", + "dependencies": "", + "description": "Segment-accurate iBoot/SecureROM loader", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1765038011, + "license": { + "name": "BSD 3-Clause", + "text": "Copyright (c) 2025 Jon Palmisciano. All rights reserved.\r\n\r\nRedistribution and use in source and binary forms, with or without\r\nmodification, are permitted provided that the following conditions are met:\r\n\r\n 1. Redistributions of source code must retain the above copyright notice,\r\n this list of conditions and the following disclaimer.\r\n\r\n 2. Redistributions in binary form must reproduce the above copyright\r\n notice, this list of conditions and the following disclaimer in the\r\n documentation and/or other materials provided with the distribution.\r\n\r\n 3. Neither the name of the copyright holder nor the names of its\r\n contributors may be used to endorse or promote products derived from\r\n this software without specific prior written permission.\r\n\r\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\nSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\nINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\nARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\nPOSSIBILITY OF SUCH DAMAGE." + }, + "longdescription": "# Ibis\n\nIbis is a Python library with accompanying disassembler plugins for analyzing\n64-bit iBoot-like firmware, e.g. SecureROM, iBoot, AVPBooter, etc.\n\nThe primary goal of Ibis is to provide **accurate memory layout information**\nfor a wide range of iBoot family binaries. Similar public projects map the\nentire binary as a big RWX blob, which negatively affects disassembler analysis.\n\n> [!WARNING]\n> Ibis should be treated as pre-release software. It has been tested against a\n> wide array of binaries, but may have subtle errors. Please file an issue if\n> you spot something wrong!\n\n## Features & Roadmap\n\nWhile Ibis' primary goal is to map segments correctly, some of the current and\nplanned features are detailed as follows:\n\n- [x] Automatic detection and mapping of `TEXT`, `CONST`, `DATA`, and `BSS`\n segments with correct boundaries and permissions.\n- [x] Function prologue detection (helps prevent run-on functions when\n disassemblers fail to identify `noreturn` functions).\n- [ ] Automatic known function identification via string reference heuristics.\n (https://github.com/jonpalmisc/ibis/issues/2)\n- [ ] Automatic detection & marking of outlined functions.\n (https://github.com/jonpalmisc/ibis/issues/4)\n- [ ] \ud83d\udd25\ud83c\udf38\u2049\ufe0f\n\nSee the [issues tab](https://github.com/jonpalmisc/ibis/issues) for a full list\nof planned features or known issues.\n\n## Installing\n\nThe Ibis plugins for Binary Ninja and IDA Pro are included in this repo and can\nbe installed with the included Makefile:\n\n```sh\n$ make install-binja\n$ make install-ida\n```\n\n> [!IMPORTANT]\n> The plugins expect that they have been installed via symlinks! This is done to\n> avoid having to install Ibis' Python package globally or configure your\n> disassembler to use a virtual environment. If you wish to install the plugins\n> manually, replicate what is done in the Makefile.\n\n## Troubleshooting\n\nIf a binary fails to load or the detected segments don't look quite right,\nplease file an issue! Ibis aims to provide widespread and accurate support for\niBoot-like binaries, so any analysis failures are considered a bug.\n\n## Contributing\n\nAny contributions that improve Ibis' analysis or support range are welcome! :)\n\n### Testing\n\nThe included integration tests reference a \"corpus\" and \"gauntlet\", which are\ncollections of binaries I've used whilst developing this plugin. For a variety\nof reasons (repo size, copyright issues, etc.) these are not included in the\nrepo. If you wish to contribute and run these tests, contact me and I can send\nyou the exact set I am using.\n\nIf you wish to assemble your own collection, `util/download.py` can be used to\ndownload iBoot images in bulk, and [securerom.fun](https://securerom.fun/) has a\npublic collection of SecureROM dumps.\n\n## License\n\nCopyright \u00a9 2025 Jon Palmisciano. All rights reserved.\n\nLicensed under the BSD 3-Clause license; the full terms of the license can be\nfound in [LICENSE.txt](LICENSE.txt).\n\n\n### Changelog\n- Fix file offset reporting in IDA (#7, #14; thanks @hnri)\r\n- Auto-determine device page size to correctly-align segments (#15)\r\n- Fix various edge cases triggered by old iBoots", + "minimumbinaryninjaversion": 3164, + "name": "Ibis", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/934c36e7-dccd-4bec-8724-a852ece9b027/versions/3445697e-e8cd-44a6-b9df-8f523575c9c2/platforms/2881/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/934c36e7-dccd-4bec-8724-a852ece9b027/versions/3445697e-e8cd-44a6-b9df-8f523575c9c2/platforms/2881/download?notrack=1", + "path": "jonpalmisc_Ibis", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 45, + "updated_at": "2025-12-06 16:20:11+00:00" + }, + "projectUrl": "https://github.com/jonpalmisc/ibis", + "subdir": "plugin/binja", + "type": [ + "binaryview" + ], + "version": "1.3.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Koh M. Nakagawa", + "dependencies": "", + "description": "Binary Ninja plugin for analyzing Swift binaries", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1760941649, + "license": { + "name": "Apache License, Version 2.0", + "text": "Apache License\r\n Version 2.0, January 2004\r\n http://www.apache.org/licenses/\r\n\r\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\r\n\r\n 1. Definitions.\r\n\r\n \"License\" shall mean the terms and conditions for use, reproduction,\r\n and distribution as defined by Sections 1 through 9 of this document.\r\n\r\n \"Licensor\" shall mean the copyright owner or entity authorized by\r\n the copyright owner that is granting the License.\r\n\r\n \"Legal Entity\" shall mean the union of the acting entity and all\r\n other entities that control, are controlled by, or are under common\r\n control with that entity. For the purposes of this definition,\r\n \"control\" means (i) the power, direct or indirect, to cause the\r\n direction or management of such entity, whether by contract or\r\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\r\n outstanding shares, or (iii) beneficial ownership of such entity.\r\n\r\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\r\n exercising permissions granted by this License.\r\n\r\n \"Source\" form shall mean the preferred form for making modifications,\r\n including but not limited to software source code, documentation\r\n source, and configuration files.\r\n\r\n \"Object\" form shall mean any form resulting from mechanical\r\n transformation or translation of a Source form, including but\r\n not limited to compiled object code, generated documentation,\r\n and conversions to other media types.\r\n\r\n \"Work\" shall mean the work of authorship, whether in Source or\r\n Object form, made available under the License, as indicated by a\r\n copyright notice that is included in or attached to the work\r\n (an example is provided in the Appendix below).\r\n\r\n \"Derivative Works\" shall mean any work, whether in Source or Object\r\n form, that is based on (or derived from) the Work and for which the\r\n editorial revisions, annotations, elaborations, or other modifications\r\n represent, as a whole, an original work of authorship. For the purposes\r\n of this License, Derivative Works shall not include works that remain\r\n separable from, or merely link (or bind by name) to the interfaces of,\r\n the Work and Derivative Works thereof.\r\n\r\n \"Contribution\" shall mean any work of authorship, including\r\n the original version of the Work and any modifications or additions\r\n to that Work or Derivative Works thereof, that is intentionally\r\n submitted to Licensor for inclusion in the Work by the copyright owner\r\n or by an individual or Legal Entity authorized to submit on behalf of\r\n the copyright owner. For the purposes of this definition, \"submitted\"\r\n means any form of electronic, verbal, or written communication sent\r\n to the Licensor or its representatives, including but not limited to\r\n communication on electronic mailing lists, source code control systems,\r\n and issue tracking systems that are managed by, or on behalf of, the\r\n Licensor for the purpose of discussing and improving the Work, but\r\n excluding communication that is conspicuously marked or otherwise\r\n designated in writing by the copyright owner as \"Not a Contribution.\"\r\n\r\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\r\n on behalf of whom a Contribution has been received by Licensor and\r\n subsequently incorporated within the Work.\r\n\r\n 2. Grant of Copyright License. Subject to the terms and conditions of\r\n this License, each Contributor hereby grants to You a perpetual,\r\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r\n copyright license to reproduce, prepare Derivative Works of,\r\n publicly display, publicly perform, sublicense, and distribute the\r\n Work and such Derivative Works in Source or Object form.\r\n\r\n 3. Grant of Patent License. Subject to the terms and conditions of\r\n this License, each Contributor hereby grants to You a perpetual,\r\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r\n (except as stated in this section) patent license to make, have made,\r\n use, offer to sell, sell, import, and otherwise transfer the Work,\r\n where such license applies only to those patent claims licensable\r\n by such Contributor that are necessarily infringed by their\r\n Contribution(s) alone or by combination of their Contribution(s)\r\n with the Work to which such Contribution(s) was submitted. If You\r\n institute patent litigation against any entity (including a\r\n cross-claim or counterclaim in a lawsuit) alleging that the Work\r\n or a Contribution incorporated within the Work constitutes direct\r\n or contributory patent infringement, then any patent licenses\r\n granted to You under this License for that Work shall terminate\r\n as of the date such litigation is filed.\r\n\r\n 4. Redistribution. You may reproduce and distribute copies of the\r\n Work or Derivative Works thereof in any medium, with or without\r\n modifications, and in Source or Object form, provided that You\r\n meet the following conditions:\r\n\r\n (a) You must give any other recipients of the Work or\r\n Derivative Works a copy of this License; and\r\n\r\n (b) You must cause any modified files to carry prominent notices\r\n stating that You changed the files; and\r\n\r\n (c) You must retain, in the Source form of any Derivative Works\r\n that You distribute, all copyright, patent, trademark, and\r\n attribution notices from the Source form of the Work,\r\n excluding those notices that do not pertain to any part of\r\n the Derivative Works; and\r\n\r\n (d) If the Work includes a \"NOTICE\" text file as part of its\r\n distribution, then any Derivative Works that You distribute must\r\n include a readable copy of the attribution notices contained\r\n within such NOTICE file, excluding those notices that do not\r\n pertain to any part of the Derivative Works, in at least one\r\n of the following places: within a NOTICE text file distributed\r\n as part of the Derivative Works; within the Source form or\r\n documentation, if provided along with the Derivative Works; or,\r\n within a display generated by the Derivative Works, if and\r\n wherever such third-party notices normally appear. The contents\r\n of the NOTICE file are for informational purposes only and\r\n do not modify the License. You may add Your own attribution\r\n notices within Derivative Works that You distribute, alongside\r\n or as an addendum to the NOTICE text from the Work, provided\r\n that such additional attribution notices cannot be construed\r\n as modifying the License.\r\n\r\n You may add Your own copyright statement to Your modifications and\r\n may provide additional or different license terms and conditions\r\n for use, reproduction, or distribution of Your modifications, or\r\n for any such Derivative Works as a whole, provided Your use,\r\n reproduction, and distribution of the Work otherwise complies with\r\n the conditions stated in this License.\r\n\r\n 5. Submission of Contributions. Unless You explicitly state otherwise,\r\n any Contribution intentionally submitted for inclusion in the Work\r\n by You to the Licensor shall be under the terms and conditions of\r\n this License, without any additional terms or conditions.\r\n Notwithstanding the above, nothing herein shall supersede or modify\r\n the terms of any separate license agreement you may have executed\r\n with Licensor regarding such Contributions.\r\n\r\n 6. Trademarks. This License does not grant permission to use the trade\r\n names, trademarks, service marks, or product names of the Licensor,\r\n except as required for reasonable and customary use in describing the\r\n origin of the Work and reproducing the content of the NOTICE file.\r\n\r\n 7. Disclaimer of Warranty. Unless required by applicable law or\r\n agreed to in writing, Licensor provides the Work (and each\r\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r\n implied, including, without limitation, any warranties or conditions\r\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\r\n PARTICULAR PURPOSE. You are solely responsible for determining the\r\n appropriateness of using or redistributing the Work and assume any\r\n risks associated with Your exercise of permissions under this License.\r\n\r\n 8. Limitation of Liability. In no event and under no legal theory,\r\n whether in tort (including negligence), contract, or otherwise,\r\n unless required by applicable law (such as deliberate and grossly\r\n negligent acts) or agreed to in writing, shall any Contributor be\r\n liable to You for damages, including any direct, indirect, special,\r\n incidental, or consequential damages of any character arising as a\r\n result of this License or out of the use or inability to use the\r\n Work (including but not limited to damages for loss of goodwill,\r\n work stoppage, computer failure or malfunction, or any and all\r\n other commercial damages or losses), even if such Contributor\r\n has been advised of the possibility of such damages.\r\n\r\n 9. Accepting Warranty or Additional Liability. While redistributing\r\n the Work or Derivative Works thereof, You may choose to offer,\r\n and charge a fee for, acceptance of support, warranty, indemnity,\r\n or other liability obligations and/or rights consistent with this\r\n License. However, in accepting such obligations, You may act only\r\n on Your own behalf and on Your sole responsibility, not on behalf\r\n of any other Contributor, and only if You agree to indemnify,\r\n defend, and hold each Contributor harmless for any liability\r\n incurred by, or claims asserted against, such Contributor by reason\r\n of your accepting any such warranty or additional liability.\r\n\r\n END OF TERMS AND CONDITIONS\r\n\r\n APPENDIX: How to apply the Apache License to your work.\r\n\r\n To apply the Apache License to your work, attach the following\r\n boilerplate notice, with the fields enclosed by brackets \"[]\"\r\n replaced with your own identifying information. (Don't include\r\n the brackets!) The text should be enclosed in the appropriate\r\n comment syntax for the file format. We also recommend that a\r\n file or class name and description of purpose be included on the\r\n same \"printed page\" as the copyright notice for easier\r\n identification within third-party archives.\r\n\r\n Copyright 2025 FFRI Security, Inc.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License." + }, + "longdescription": "A Binary Ninja plugin for analyzing Swift binaries. It uses the SwiftMetadataDump tool to analyze the Swift binaries and provide type annotations for the functions and variables.\n\n### Changelog\nInitial release", + "minimumbinaryninjaversion": 3164, + "name": "Swift Analyzer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/ca757a39-6dc0-4f46-b7b6-df0303aacf49/versions/7d900934-0c01-4ee5-916b-889fb5e38acb/platforms/2762/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/ca757a39-6dc0-4f46-b7b6-df0303aacf49/versions/7d900934-0c01-4ee5-916b-889fb5e38acb/platforms/2762/download?notrack=1", + "path": "FFRI_binja_swift_analyzer", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 25, + "updated_at": "2025-10-20 06:27:29+00:00" + }, + "projectUrl": "https://github.com/FFRI/binja-swift-analyzer", + "subdir": "", + "type": [ + "core", + "helper" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Austyn Krutsinger", + "dependencies": "", + "description": "MCP server for LLM-assisted reverse engineering via code execution", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1767941849, + "license": { + "name": "MIT", + "text": "MIT license\r\n\r\nCopyright (c) 2025\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of this software and associated documentation files (the\r\n\u201cSoftware\u201d), to deal in the Software without restriction, including\r\nwithout limitation the rights to use, copy, modify, merge, publish,\r\ndistribute, sublicense, and/or sell copies of the Software, and to\r\npermit persons to whom the Software is furnished to do so, subject\r\nto the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \u201cAS IS\u201d, WITHOUT WARRANTY OF\r\nANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\r\nTO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\r\nPARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT\r\nSHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR\r\nANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r\nACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE\r\nOR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# Binary Ninja Code Mode MCP\n\nA Model Context Protocol (MCP) server for [Binary Ninja](https://binary.ninja/) that enables LLM-assisted reverse engineering through code execution.\n\n## Overview\n\nThis plugin implements [Anthropic's Code Execution pattern](https://www.anthropic.com/engineering/code-execution-with-mcp). Instead of accessing the typical MCP \"tools\", the LLM writes Python code that executes directly against Binary Ninja's API. This approach ([described by Cloudflare as \"Code Mode\"](https://blog.cloudflare.com/code-mode/)) is more token-efficient and enables more complex multi-step analyses in a single execution.\n\n## Key Features\n\n- Write Python that runs directly against Binary Ninja's API\n- Query and mutate the binary database\n- Checkpoint/rollback, persistent workspace files, and reusable analysis patterns\n- Basic security with API key authentication and some code validation\n\n## Installation\n\n### Method 1: Plugin Manager (Recommended)\n\n1. In Binary Ninja, open the Plugin Manager (`Plugins > Manage Plugins`)\n2. Search for `Code Mode MCP` or `binja_codemode_mcp`\n3. Click `Install`\n4. Restart Binary Ninja\n\nAfter installation, the plugin will be located in the community [plugins](https://docs.binary.ninja/guide/plugins.html) folder:\n\n```bash\n# Linux\n~/.binaryninja/plugins/repositories/community/plugins/akrutsinger_binja_codemode_mcp/\n\n# macOS\n~/Library/Application Support/Binary Ninja/plugins/repositories/community/plugins/akrutsinger_binja_codemode_mcp/\n\n# Windows\n%APPDATA%\\Binary Ninja\\plugins\\repositories\\community\\plugins\\akrutsinger_binja_codemode_mcp\\\n```\n\n### Method 2: Manual Installation\n\nClone or download this repository and copy to your Binary Ninja [plugins](https://docs.binary.ninja/guide/plugins.html) folder:\n\n```bash\n# Linux\ncp -r plugin/ ~/.binaryninja/plugins/binja_codemode_mcp/\n\n# macOS\ncp -r plugin/ ~/Library/Application\\ Support/Binary\\ Ninja/plugins/binja_codemode_mcp/\n\n# Windows\ncopy plugin\\ %APPDATA%\\Binary Ninja\\plugins\\binja_codemode_mcp\\\n```\n\n## MCP Client Configuration\n\nConfigure your MCP client to communicate with the plugin. The path to `mcp_bridge.py` depends on your installation method.\n\n### For Plugin Manager Installation \n\n[**Zed**](https://zed.dev/) (`Agent Panel > ... > Add Custom Server...`):\n```json\n{\n /// The name of your MCP server\n \"binja-codemode-mcp\": {\n /// The command which runs the MCP server\n \"command\": \"python3\",\n /// The arguments to pass to the MCP server\n \"args\": [\"~/.binaryninja/plugins/repositories/community/plugins/akrutsinger_binja_codemode_mcp/bridge/mcp_bridge.py\"],\n /// The environment variables to set\n \"env\": {\n \"BINJA_MCP_URL\": \"http://127.0.0.1:42069\",\n \"BINJA_MCP_KEY\": \"binja-codemode-local\"\n }\n }\n}\n```\n\n[**Claude Desktop**](https://www.claude.com/download) (`Settings > Developer > Edit Config`):\n```json\n{\n \"mcpServers\": {\n \"binja-codemode-mcp\": {\n \"command\": \"python3\",\n \"args\": [\"~/Library/Application Support/Binary Ninja/plugins/repositories/community/plugins/akrutsinger_binja_codemode_mcp/bridge/mcp_bridge.py\"],\n \"env\": {\n \"BINJA_MCP_URL\": \"http://127.0.0.1:42069\",\n \"BINJA_MCP_KEY\": \"binja-codemode-local\"\n }\n }\n }\n}\n```\n\n**Note:** Use absolute paths. Replace `~` with your home directory path if needed, and adjust for your OS.\n\n### For Manual Installation\n\nUse these paths instead:\n- Linux: `~/.binaryninja/plugins/binja_codemode_mcp/bridge/mcp_bridge.py`\n- macOS: `~/Library/Application Support/Binary Ninja/plugins/binja_codemode_mcp/bridge/mcp_bridge.py`\n- Windows: `%APPDATA%\\Binary Ninja\\plugins\\binja_codemode_mcp\\bridge\\mcp_bridge.py`\n\n### Custom API Key (Optional)\n\nTo use a custom API key instead of the default API key, create `~/.binaryninja/codemode_mcp/config.json`:\n```json\n{\n \"api_key\": \"your-custom-key\"\n}\n```\n\nThen update your MCP client config to use the same key in `BINJA_MCP_KEY`.\n\n### Logging Configuration (Optional)\n\nSet `BINJA_MCP_LOG_LEVEL` environment variable to control logging output (stderr):\n```bash\n# Options: DEBUG, INFO (default), WARNING, ERROR, CRITICAL\nexport BINJA_MCP_LOG_LEVEL=DEBUG\n```\n\nOr add to your MCP client config:\n```json\n\"env\": {\n \"BINJA_MCP_URL\": \"http://127.0.0.1:42069\",\n \"BINJA_MCP_KEY\": \"binja-codemode-local\",\n \"BINJA_MCP_LOG_LEVEL\": \"DEBUG\"\n}\n```\n\n## Usage\n\n1. Open Binary Ninja and load a binary\n2. Start the server: `Plugins > MCP Code Mode > Start Server`\n3. In your MCP client (Claude, Zed, etc.), start prompting!\n\n### Example Prompts\n```\n\"List all functions that reference memcpy and check if they validate buffer sizes\"\n\n\"Decompile main() and identify potential security issues\"\n\n\"Create a checkpoint, then rename all sub_* functions based on their behavior\"\n\n\"Find and categhorize all string references by type (URL, file path, error message, etc.)\"\n\n\"Analyze the binary's attack surface by examining input validation in network-facing functions\"\n```\n\n## API Overview\n\nThe Python code written by the LLM has access to the `binja` object with these methods:\n\n### Query\n**Binary Info**\n- `binja.get_binary_status()` - Binary metadata\n- `binja.list_functions()` - All functions\n- `binja.analyze_function_batch()` - Batched function alaysis\n- `binja.list_imports()` - Imported symbols\n- `binja.list_exports()` - Exported symbols\n- `binja.list_segments()` - Memory segments\n- `binja.list_classes()` - Classes\n- `binja.list_namespaces()` - Namespaces\n- `binja.list_data_items()` - Data items\n\n**Code Analysis**\n- `binja.decompile()` - Get pseudocode\n- `binja.get_assembly()` - Get disassembly\n- `binja.get_basic_blocks()` - Basic function info\n\n**Cross References**\n- `binja.get_xrefs_to()` - Find callers\n- `binja.get_function_calls()` - Find callees\n- `binja.get_data_xrefs_to()` - Data references to address\n- `binja.get_data_xrefs_from()` - Data references from address\n\n**Data Reading**\n- `binja.read_bytes()` - Read raw bytes\n- `binja.read_string()` - Read string\n- `binja.get_string_at()` - Get string info\n- `binja.get_data_var_at()` - Get data variable info\n- `binja.list_strings()` - List all strings\n\n**Search & Lookup**\n- `binja.find_bytes()` - Search for byte pattern\n- `binja.function_at()` - Get function by address or name\n- `binja.get_comment()` - Get comment\n- `binja.get_function_comment()` - Get function comment\n- `binja.get_type()` - Get User-defined struct/type info\n\n### Mutations\n\n**Renaming**\n- `binja.rename_function(func, name)` - Rename function\n- `binja.rename_data()` - Rename data\n- `binja.rename_variable(func, old, new)` - Rename variable\n\n**Typing**\n- `binja.retype_variable()` - Retype variable\n- `binja.define_type()` - Define struct/type\n- `binja.set_function_signature()` - Set prototype\n\n**Comments**\n- `binja.set_comment()` - Add comment\n- `binja.set_function_comment()` - Add function comment\n- `binja.delete_comment()` - Delete comment\n- `binja.delete_function_comment()` - Delete function comment\n\n### Workspace\n\n**File Persistence**\n- `binja.write_file()` - Save to workspace\n- `binja.read_file()` - Read from workspace\n- `binja.list_files()` - List workspace files\n- `binja.delete_file()` - Delete workspace \n\n### Skills\n\n**Reusable Code**\n- `binja.save_skill(name, code, desc)` - Save reusable code\n- `binja.load_skill(name)` - Load a skill\n- `binja.list_skills()` - List saved skills\n- `binja.delete_skill()` - Delete a skill\n\n### Helpers\n- `binja.find_functions_calling_unsafe()` - Find functions calling potentially unsafe functions\n- `binja.get_function_complexity()` - Get cyclomatic complexity\n\n## Security\n\nA basic level of security in attempt to prevent some misuse:\n\n- Localhost-only binding (127.0.0.1)\n- API key authentication required\n- Simple code validation blocks potentially dangerous operations\n- 30-second execution timeout\n\n**Note:** This plugin does execute arbitrary Python code. Only use with trusted MCP clients and LLMs.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n\n### Changelog\n### Added\r\n\r\n- Status indicator for MCP server running state\r\n\r\n### Fixed\r\n\r\n- Plugin not running properly in headless mode", + "minimumbinaryninjaversion": 4000, + "name": "Code Mode MCP Server", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/fcbe3323-d2c1-45e3-9e4d-a618ff5a6d08/versions/5ff2e454-a31c-4a32-8cac-140079298e54/platforms/3055/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/fcbe3323-d2c1-45e3-9e4d-a618ff5a6d08/versions/5ff2e454-a31c-4a32-8cac-140079298e54/platforms/3055/download?notrack=1", + "path": "akrutsinger_binja_codemode_mcp", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 5, + "updated_at": "2026-01-09 06:57:29+00:00" + }, + "projectUrl": "https://github.com/akrutsinger/binja-codemode-mcp", + "subdir": "", + "type": [ + "helper" + ], + "version": "0.1.3", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Vector 35 Inc", + "dependencies": "objgraph\n\n", + "description": "A debugging tool for Binary Ninja plugin developers to detect and diagnose memory leaks related to BinaryView objects.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1762895873, + "license": { + "name": "Apache-2.0", + "text": "Copyright 2025 Vector 35 Inc.\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\");\r\nyou may not use this file except in compliance with the License.\r\nYou may obtain a copy of the License at\r\n\r\nhttp://www.apache.org/licenses/LICENSE-2.0\r\n\r\nUnless required by applicable law or agreed to in writing, software\r\ndistributed under the License is distributed on an \"AS IS\" BASIS,\r\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\nSee the License for the specific language governing permissions and\r\nlimitations under the License." + }, + "longdescription": "# Binary Ninja Leak Audit Plugin\r\nThis is a 99% vibe coded plugin created by Peter and ChatGPT 5.\r\n\r\n_A Binary Ninja plugin to audit and visualize leaked BinaryView references in memory._\r\n\r\n## Description:\r\n\r\nA debugging tool for Binary Ninja plugin developers to detect and diagnose memory leaks related to BinaryView objects. The plugin helps identify Python references that prevent BinaryView instances from being garbage collected, which can lead to memory leaks.\r\n\r\n### Features:\r\n\r\n- **List Live BinaryViews**: Display all BinaryView objects currently in memory with reference counts\r\n- **Inspect References**: Drill down into the reference chain for any BinaryView to identify what's holding it in memory\r\n- **Visual Graphs**: Generate reference graphs using objgraph to visualize the complete backref chain\r\n- **Noise Filtering**: Automatically filters out console, interpreter, and traceback references to focus on real leaks\r\n\r\nThe plugin adds a \"Leak Audit\" menu under Tools with three commands:\r\n- **List Live BinaryViews**: Shows all BinaryView instances with refcount and interesting referrer counts\r\n- **Inspect BV by Index...**: Displays a filtered reference tree for a specific BinaryView\r\n- **Backrefs Graphs for All (objgraph)**: Generates visual reference graphs for all BinaryViews and displays them in an HTML report\r\n\r\n### Results\r\n\r\n![image](bv_backrefs.png)\r\n\r\n### Use Cases:\r\n\r\n- Debugging plugin memory leaks\r\n- Understanding why BinaryViews aren't being released after closing files\r\n- Identifying circular references or cached objects holding BinaryView references\r\n- Educational tool for understanding Python garbage collection in Binary Ninja\r\n\r\n\r\n## Required Dependencies\r\n\r\nThe following dependencies are required for this plugin:\r\n\r\n**Core functionality**: No external dependencies\r\n\r\n**Graph visualization (optional)**: \r\n- `objgraph` - Install via: `pip install objgraph`\r\n- `graphviz` - Install via system package manager (e.g., `brew install graphviz`, `apt install graphviz`, or download from [graphviz.org](https://graphviz.org/download/))\r\n\r\nThe graph visualization feature will be disabled if these dependencies are not available, but all other functionality will work normally.\r\n\r\n## Usage\r\n\r\n1. Open Binary Ninja and load any binary. Do things that cause the leak to occur.\r\n2. Go to **Command Palette \u2192 Leak Audit**\r\n3. Choose one of the available commands:\r\n - Start with **List Live BinaryViews** to see what's in memory\r\n - Use **Inspect BV by Index...** to investigate a specific BinaryView's references\r\n - Use **Backrefs Graphs for All** to generate visual diagrams (requires objgraph)\r\n\r\n### Configuration\r\n\r\nEdit the constants at the top of `leak_audit.py` to customize behavior:\r\n\r\n```python\r\nDEFAULT_MAX_DEPTH = 3 # How deep to traverse reference chains\r\nDEFAULT_PER_NODE_LIMIT = 20 # Max referrers to show per object\r\nSHOW_REFCOUNTS = True # Display sys.getrefcount() values\r\n```\r\n\r\n## Tips\r\n\r\n- The plugin filters out console and interpreter references to reduce noise\r\n- Run garbage collection is automatic, but you can force it via the Python console: `import gc; gc.collect()`\r\n\r\n## License\r\n\r\nThis plugin is released under an MIT license.\r\n\r\n## Metadata Version\r\n\r\n2\n\n### Changelog\n**Full Changelog**: https://github.com/Vector35/Leak-Audit/commits/1.0.0", + "minimumbinaryninjaversion": 3164, + "name": "Leak Audit", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/fd44e89a-89ac-4e07-b11d-2068af1f0870/versions/4432e65a-b721-45dc-9e6b-14a18c92ebc5/platforms/2803/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/fd44e89a-89ac-4e07-b11d-2068af1f0870/versions/4432e65a-b721-45dc-9e6b-14a18c92ebc5/platforms/2803/download?notrack=1", + "path": "Vector35_LeakAudit", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 0, + "updated_at": "2025-11-11 21:17:53+00:00" + }, + "projectUrl": "https://github.com/Vector35/Leak-Audit", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Jason Tang", + "dependencies": "# Core MCP framework\nmcp==1.23.3\n\n# Async/ASGI server support\nanyio>=4.0.0\nhypercorn>=0.16.0\n\n# Configuration management\npydantic>=2.0.0\npydantic-settings>=2.0.0\n\n# CLI interface\nclick>=8.0.0\n\n# Binary Ninja API (optional - only needed if Binary Ninja is installed)\n# binaryninja\n\n# Development dependencies (optional)\n# pytest>=7.0.0\n# pytest-cov>=4.0.0\n# pytest-asyncio>=0.21.0\n# ruff>=0.1.0\n# mypy>=1.5.0\n# pre-commit>=3.0.0", + "description": "Comprehensive MCP server for Binary Ninja with dual transport support (SSE and STDIO)", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1769820170, + "license": { + "name": "MIT", + "text": "Copyright (c) 2025 Jason Tang\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# BinAssistMCP\n\n> Comprehensive Model Context Protocol (MCP) server for Binary Ninja with AI-powered reverse engineering capabilities\n\n## Summary\n\nBinAssistMCP is a powerful bridge between Binary Ninja and Large Language Models (LLMs) like Claude, providing comprehensive reverse engineering tools through the Model Context Protocol (MCP). It enables AI-assisted binary analysis by exposing Binary Ninja's advanced capabilities through Server-Sent Events (SSE) and Streamable HTTP transports.\n\n### Key Features\n\n- **MCP 2025-11-25 Compliant**: Full support for tool annotations, resources, and prompts\n- **Dual Transport Support**: SSE (Server-Sent Events) and Streamable HTTP transports\n- **36 Consolidated Tools**: Streamlined Binary Ninja API wrapper with unified tool design\n- **8 MCP Resources**: Browsable, cacheable binary metadata\n- **7 Guided Prompts**: Pre-built workflows for common reverse engineering tasks\n- **Multi-Binary Sessions**: Concurrent analysis of multiple binaries with intelligent context management\n- **Analysis Caching**: LRU cache with binary-scoped invalidation for improved performance\n- **Async Task Support**: Non-blocking execution for long-running operations\n- **Thread-Safe**: RLock-based synchronization for concurrent access\n- **Auto-Integration**: Seamless Binary Ninja plugin with automatic startup capabilities\n\n### Use Cases\n\n- **AI-Assisted Reverse Engineering**: Leverage LLMs for intelligent code analysis and documentation\n- **Protocol Analysis**: Trace network data flows and reconstruct protocol structures\n- **Vulnerability Research**: Systematic security audits with guided workflows\n- **Automated Binary Analysis**: Script complex analysis workflows with natural language\n- **Code Understanding**: Generate comprehensive documentation and explanations\n\n---\n\n## Architecture\n\n```\nsrc/binassist_mcp/\n\u251c\u2500\u2500 server.py # FastMCP server - SSE/Streamable HTTP transport, tool registration\n\u251c\u2500\u2500 tools.py # Binary Ninja API wrapper - 36 MCP tools\n\u251c\u2500\u2500 plugin.py # Binary Ninja plugin integration\n\u251c\u2500\u2500 context.py # Thread-safe multi-binary session management\n\u251c\u2500\u2500 config.py # Pydantic configuration with Binary Ninja settings\n\u251c\u2500\u2500 prompts.py # 7 guided workflow prompts\n\u251c\u2500\u2500 resources.py # 8 MCP resource definitions\n\u251c\u2500\u2500 cache.py # LRU analysis cache with invalidation\n\u251c\u2500\u2500 tasks.py # Async task manager for long-running operations\n\u251c\u2500\u2500 logging.py # Binary Ninja logging integration\n\u2514\u2500\u2500 utils.py # Utility functions\n\n__init__.py # Plugin entry point (root level)\n```\n\n---\n\n## Tools (36 Total)\n\nBinAssistMCP provides 36 tools organized into functional categories. Tools include MCP annotations (`readOnlyHint`, `idempotentHint`) to help clients make informed decisions.\n\n### Binary Management\n| Tool | Description |\n|------|-------------|\n| `list_binaries` | List all loaded binary files |\n| `get_binary_status` | Check analysis status and metadata |\n| `update_analysis_and_wait` | Force analysis update and wait for completion |\n\n### Code Analysis (Consolidated)\n| Tool | Description |\n|------|-------------|\n| `get_code` | **Unified code retrieval** - supports formats: `decompile`, `hlil`, `mlil`, `llil`, `disasm`, `pseudo_c` |\n| `get_function_low_level_il` | Get Low-Level IL for a function |\n| `analyze_function` | Comprehensive function analysis with control flow and complexity metrics |\n| `get_basic_blocks` | Get basic block information for control flow analysis |\n| `get_function_stack_layout` | Get stack frame layout with variable offsets |\n\n### Cross-References (Consolidated)\n| Tool | Description |\n|------|-------------|\n| `xrefs_tool` | **Unified cross-references** - actions: `refs_to`, `refs_from`, `call_graph` |\n\n### Comments (Consolidated)\n| Tool | Description |\n|------|-------------|\n| `comments_tool` | **Unified comment management** - actions: `get`, `set`, `list`, `remove`, `set_function` |\n\n### Variables (Consolidated)\n| Tool | Description |\n|------|-------------|\n| `variables_tool` | **Unified variable management** - actions: `list`, `create`, `rename`, `set_type` |\n\n### Types (Consolidated)\n| Tool | Description |\n|------|-------------|\n| `types_tool` | **Unified type management** - actions: `create`, `create_enum`, `create_typedef`, `create_class`, `add_member`, `get_info`, `list` |\n| `get_classes` | List all classes and structures |\n\n### Function Discovery\n| Tool | Description |\n|------|-------------|\n| `get_functions` | List all functions with metadata (paginated) |\n| `search_functions_by_name` | Find functions by name pattern |\n| `get_functions_advanced` | Advanced filtering by size, complexity, parameters |\n| `search_functions_advanced` | Multi-target search (name, comments, calls, variables) |\n| `get_function_statistics` | Comprehensive statistics for all functions |\n\n### Symbol Management\n| Tool | Description |\n|------|-------------|\n| `rename_symbol` | Rename functions and data variables |\n| `batch_rename` | Rename multiple symbols in one operation |\n| `get_namespaces` | List namespaces and symbol organization |\n\n### Binary Information\n| Tool | Description |\n|------|-------------|\n| `get_imports` | Import table grouped by module |\n| `get_exports` | Export table with symbol information |\n| `get_strings` | String extraction with filtering |\n| `search_strings` | Search strings by pattern |\n| `get_segments` | Memory segment layout |\n| `get_sections` | Binary section information |\n\n### Data Analysis\n| Tool | Description |\n|------|-------------|\n| `create_data_var` | Define data variables at addresses |\n| `get_data_vars` | List all defined data variables |\n| `get_data_at_address` | Read and analyze raw data |\n| `search_bytes` | Search for byte patterns in binary |\n\n### Navigation\n| Tool | Description |\n|------|-------------|\n| `get_current_address` | Get current cursor position with context |\n| `get_current_function` | Identify function at current address |\n\n### Task Management\n| Tool | Description |\n|------|-------------|\n| `get_task_status` | Check status of async operations |\n| `list_tasks` | List all pending/running tasks |\n| `cancel_task` | Cancel a running task |\n\n---\n\n## MCP Resources (8 Total)\n\nResources provide browsable, cacheable data that clients can access without tool calls.\n\n| URI Pattern | Description |\n|-------------|-------------|\n| `binassist://{filename}/triage_summary` | Complete binary overview |\n| `binassist://{filename}/functions` | All functions with metadata |\n| `binassist://{filename}/imports` | Import table |\n| `binassist://{filename}/exports` | Export table |\n| `binassist://{filename}/strings` | String table |\n| `binja://{filename}/info` | Binary metadata (arch, platform, entry point) |\n| `binja://{filename}/segments` | Memory segments with permissions |\n| `binja://{filename}/sections` | Binary sections |\n\n---\n\n## MCP Prompts (7 Total)\n\nPre-built prompts guide LLMs through structured analysis workflows.\n\n| Prompt | Arguments | Description |\n|--------|-----------|-------------|\n| `analyze_function` | `function_name`, `filename` | Comprehensive function analysis workflow |\n| `identify_vulnerability` | `function_name`, `filename` | Security audit checklist (memory safety, input validation, crypto) |\n| `document_function` | `function_name`, `filename` | Generate Doxygen-style documentation |\n| `trace_data_flow` | `address`, `filename` | Track data dependencies and taint propagation |\n| `compare_functions` | `func1`, `func2`, `filename` | Diff two functions for similarity analysis |\n| `reverse_engineer_struct` | `address`, `filename` | Recover structure definitions from usage patterns |\n| `trace_network_data` | `filename` | Trace POSIX/Winsock send/recv for protocol analysis |\n\n### Example: Network Protocol Analysis\n\nThe `trace_network_data` prompt guides analysis of network communication:\n\n1. **Identify Network Functions**: Finds POSIX (`send`/`recv`/`sendto`/`recvfrom`) and Winsock (`WSASend`/`WSARecv`) calls\n2. **Trace Call Stacks**: Maps application handlers down to network I/O\n3. **Analyze Buffers**: Identifies protocol structures (headers, length fields, TLV encoding)\n4. **Reconstruct Protocols**: Generates C struct definitions for message formats\n5. **Security Assessment**: Checks for buffer overflows, integer issues, information disclosure\n\n---\n\n## Installation\n\n### Prerequisites\n\n- **Binary Ninja**: Version 4000 or higher\n- **Python**: 3.8+ (typically bundled with Binary Ninja)\n- **Platform**: Windows, macOS, or Linux\n\nNOTE: Windows users should start with: [BinAssistMCP on Windows](binassistmcp-on-windows.md)\n\n### Option 1: Binary Ninja Plugin Manager (Recommended)\n\n1. Open Binary Ninja\n2. Navigate to **Tools** \u2192 **Manage Plugins**\n3. Search for \"BinAssistMCP\"\n4. Click **Install**\n5. Restart Binary Ninja\n\n### Option 2: Manual Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/jtang613/BinAssistMCP.git\ncd BinAssistMCP\n\n# Install dependencies\npip install -r requirements.txt\n```\n\nCopy to your Binary Ninja plugins directory:\n\n| Platform | Path |\n|----------|------|\n| Windows | `%APPDATA%\\Binary Ninja\\plugins\\` |\n| macOS | `~/Library/Application Support/Binary Ninja/plugins/` |\n| Linux | `~/.binaryninja/plugins/` |\n\n---\n\n## Configuration\n\n### Binary Ninja Settings\n\nOpen **Edit** \u2192 **Preferences** \u2192 **binassistmcp**:\n\n| Setting | Default | Description |\n|---------|---------|-------------|\n| `server.host` | `localhost` | Server bind address |\n| `server.port` | `9090` | Server port |\n| `server.transport` | `streamablehttp` | Transport: `streamablehttp` or `sse` |\n| `binary.max_binaries` | `10` | Maximum concurrent binaries |\n| `plugin.auto_startup` | `true` | Auto-start server on file load |\n\n### Environment Variables\n\n```bash\nexport BINASSISTMCP_SERVER__HOST=localhost\nexport BINASSISTMCP_SERVER__PORT=9090\nexport BINASSISTMCP_SERVER__TRANSPORT=streamablehttp\nexport BINASSISTMCP_BINARY__MAX_BINARIES=10\n```\n\n---\n\n## Usage\n\n### Starting the Server\n\n**Via Binary Ninja Menu:**\n1. **Tools** \u2192 **BinAssistMCP** \u2192 **Start Server**\n2. Check log panel for: `BinAssistMCP server started on http://localhost:9090`\n\n**Auto-Startup:**\nServer starts automatically when Binary Ninja loads a file (configurable).\n\n### Connecting MCP Clients\n\n**Streamable HTTP (Default):**\n```\nhttp://localhost:9090/mcp\n```\n\n**Server-Sent Events:**\n```\nhttp://localhost:9090/sse\n```\n\n### Claude Desktop Configuration\n\nAdd to your Claude Desktop MCP configuration (`claude_desktop_config.json`):\n\n```json\n{\n \"mcpServers\": {\n \"binassist\": {\n \"url\": \"http://localhost:9090/mcp\"\n }\n }\n}\n```\n\n---\n\n## Integration Examples\n\n### Basic Function Analysis\n```\nUser: \"Analyze the main function and explain what it does\"\n\nClaude uses:\n1. get_functions() - find main\n2. get_code(format='decompile') - get readable code\n3. xrefs_tool(action='refs_from') - find called functions\n4. analyze_function() - get complexity metrics\n```\n\n### Vulnerability Research\n```\nUser: \"Find buffer overflow vulnerabilities in input handling functions\"\n\nClaude uses:\n1. search_functions_advanced(search_in='calls') - find memcpy/strcpy callers\n2. get_code(format='decompile') - examine implementations\n3. variables_tool(action='list') - check buffer sizes\n4. comments_tool(action='set') - document findings\n```\n\n### Protocol Reverse Engineering\n```\nUser: \"Analyze the network protocol used by this binary\"\n\nClaude uses the trace_network_data prompt:\n1. Identifies send/recv call sites\n2. Traces data flow from handlers to network I/O\n3. Reconstructs message structures\n4. Checks for network vulnerabilities\n```\n\n---\n\n## Troubleshooting\n\n### Server Issues\n\n| Problem | Solution |\n|---------|----------|\n| Server won't start | Check port 9090 availability, verify dependencies |\n| Connection refused | Ensure server is running, check firewall settings |\n| Tools return errors | Wait for analysis completion, verify binary is loaded |\n\n### Performance\n\n- **Slow decompilation**: Results are cached; second request is faster\n- **Memory usage**: Reduce `max_binaries` setting\n- **Long operations**: Check task status with `get_task_status`\n\n### Logs\n\nCheck Binary Ninja's Log panel for detailed error messages.\n\n---\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Follow existing code patterns (Pydantic models, type hints, docstrings)\n4. Test with multiple binary types\n5. Submit a pull request\n\n---\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n", + "minimumbinaryninjaversion": 5000, + "name": "BinAssistMCP", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/29e66682-c37d-4821-a34a-d358fc2b1cd3/versions/05f2afdd-ffdf-45f1-b6bd-89af85334039/platforms/3133/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/29e66682-c37d-4821-a34a-d358fc2b1cd3/versions/05f2afdd-ffdf-45f1-b6bd-89af85334039/platforms/3133/download?notrack=1", + "path": "jtang613_BinAssistMCP", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 14, + "updated_at": "2026-01-31 00:42:50+00:00" + }, + "projectUrl": "https://github.com/jtang613/BinAssistMCP", + "subdir": "", + "type": [ + "binaryview", + "helper", + "ui" + ], + "version": "2.2.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "redthing1", + "dependencies": "", + "description": "Analyze things on the Moon", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1769680319, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024-2025 redthing1\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# binja_moonanalyzer\r\n\r\nbinja: analyze things on the moon\r\n\r\n## overview\r\n\r\n- the idea of this project is to enable ai-assisted binary analysis in a chat-like fashion.\r\n- unlike many ai-assisted analysis tools, **moonanalyzer** is designed for chat rather than api calls. this tool is for conversational, stateful binary analysis in a way that's closer to the human workflow.\r\n- you, the user, are in the front seat, and can locate interesting code; when you find some, you can use the quick analyze tool to generate a contextualized prompt to send to the moon (your llm chat) for analysis.\r\n- the llm sends back a dsl script that can rename things and add comments based on its analysis of the decompilation.\r\n- it's designed in the way that you can keep adding to a stateful chat in a back-and-forth, gradually analyzing the binary.\r\n\r\n## features\r\n\r\n- smart analyze: send snippets of HLIL and disassembly and get back DSL that can rename and retype things\r\n- smart patch: send snippets of HLIL and disassembly along with an objective and get back a patch\r\n\r\n## guide\r\n\r\n- ensure python dependency `lark` (for parsing) is installed\r\n- go to settings, set scope to project/resource, and set project context under **MoonAnalyzer**\r\n- navigate to a function, and use Plugins > MoonAnalyzer and an analyze command\r\n- paste the prompt into a llm chat interface\r\n- use Plugins > MoonAnalyzer > Execute BN-DSL and run the llm output", + "minimumbinaryninjaversion": 3164, + "name": "Moon Analyzer", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/95719044-7e04-44ba-937f-7b4bb7aa5412/versions/b0c53088-43c3-4f51-b685-36de052853db/platforms/3121/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/95719044-7e04-44ba-937f-7b4bb7aa5412/versions/b0c53088-43c3-4f51-b685-36de052853db/platforms/3121/download?notrack=1", + "path": "redthing1_binja_moonanalyzer", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 5, + "updated_at": "2026-01-29 09:51:59+00:00" + }, + "projectUrl": "https://github.com/redthing1/binja_moonanalyzer", + "subdir": "", + "type": [ + "binaryview", + "core", + "ui" + ], + "version": "0.4.0", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "redthing1", + "dependencies": "", + "description": "Minidump Loader for Binary Ninja", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1746814092, + "license": { + "name": "MIT", + "text": "Copyright (c) 2024 redthing1\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "# binja_minidump\r\n\r\n[minidump](https://learn.microsoft.com/en-us/windows/win32/debug/minidump-files) loader for binja\r\n\r\ni wanted to make a python alternative to this rust minidump loader [plugin](https://github.com/cxiao/minidump_bn).\r\n\r\nthis plugin is based on the [minidump](https://github.com/skelsec/minidump) python library, which is vendored into this repo for maintenance.", + "minimumbinaryninjaversion": 3164, + "name": "Minidump Loader", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/18f1ceca-4f66-42a1-86d8-332788aed993/versions/af28a427-f658-47d9-b43f-eac72f0e9007/platforms/2400/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/18f1ceca-4f66-42a1-86d8-332788aed993/versions/af28a427-f658-47d9-b43f-eac72f0e9007/platforms/2400/download?notrack=1", + "path": "redthing1_binja_minidump", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 0, + "updated_at": "2025-05-09 18:08:12+00:00" + }, + "projectUrl": "https://github.com/redthing1/binja_minidump", + "subdir": "", + "type": [ + "binaryview", + "core", + "ui" + ], + "version": "0.0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "Nicolae Binica", + "dependencies": "", + "description": "Xtensa Architecture Support and ESP8266 Image Loader", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1756581413, + "license": { + "name": "MIT", + "text": "Copyright 2025 Nicolae Binica\\n\\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\\n\\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\"" + }, + "longdescription": "# binja-xtensa: Architecture Plugin Support and ESP8266 Loader\n\nTensilica Xtensa Architecture Plugin Support and ESP8266 Firmware Loader for Binary Ninja.\n\n![screenshot of Binary Ninja showing setup and loop of a decompiled ESP8266\nArduino project](https://raw.githubusercontent.com/zackorndorff/binja-xtensa/0.5/screenshots/hero.png)\n\nThis is a fork of the original project created by @zackorndorff : https://github.com/zackorndorff/binja-xtensa\nThis work was done as a Master Semester project at EPFL, Lausanne, together \nwith the Cyber-Defence Campus, supervised by Daniel Hulliger.\n\nGoal of this project is to create a usable plugin with full functionality \nfor XTensa Architecture, implementing features left out by the original author.\n\nFor a quick overview of the Xtensa ISA, I recommend [Espressif's overview](https://dl.espressif.com/github_assets/espressif/xtensa-isa-doc/releases/download/latest/Xtensa.pdf).\n\n## Features\n\n* Disassembly of almost all Xtensa instructions, except for the MAC16 option instructions \n* Lifting for most Xtensa instructions, except for the MAC16 option instructions \n and a few instructions noted in [Lifted_instr_list](Lists/Lifted_instr_list).\n* Support for Xtensa ELF files so they will be automatically recognized\n* Loader for ESP8266 raw firmware dumps. This support is a little finicky to\n use, as there's multiple partitions in the firmware dumps. By default it uses\n the last one with a detected header; you can adjust this via Open With\n Options\n * At the moment it doesn't completely map the sections properly, but it's a\n start :)\n\n## What it doesn't do\n\n* Anything with the optional vector unit (MAC16)\n* Anything quickly. This is Python, and not particularly well optimized Python\n at that. If you're using this seriously, I recommend rewriting in C++\n* Find `main` in a raw binary for you\n\n## Installation\n\nInstall via the Binary Ninja plugin manager. Alternatively, clone this\nrepository into your Binary Ninja plugins directory. See the [official Binary\nNinja documentation](https://docs.binary.ninja/guide/plugins.html) for more\ndetails.\n\n# Plugin structure:\n * __init__.py: registers architecture, sets up reg names & control-flow instructions\n * binaryview.py: defines the ESP8266 Firmware for the loader\n * instruction.py: defines instruction formats, decoding rules\n * disassemble.py: uses format information to tokenize and print disassembled instructions\n * lifter.py: actual lifting logic to LLIL\n\n## Using the ESP8266 Firmware Loader\n\nThe default of picking the last usable partition works decent, but if you want\nmore control, use Open With Options and change `Loader > Which Firmware` to the\noption corresponding to the address you want to load.\n\nI attempt to load in symbols from the SDK's linker script so some of the\nROM-implemented functions are less mysterious. See\n[parse_rom_ld.py](binja_xtensa/parse_rom_ld.py) for the parsing code,\n[known_symbols.py](binja_xtensa/known_symbols.py) for the database it'll apply,\nand function `setup_esp8266_map` in\n[binaryview.py](binja_xtensa/binaryview.py#L17) for the code that applies it.\nThis should probably be a load time option... but it's not at the moment :/\n\n![screenshot of Binary Ninja's Open With Options showing the Loader Which\nFirmware option](https://raw.githubusercontent.com/zackorndorff/binja-xtensa/0.5/screenshots/open-with-options.png)\n\n\n## Evaluation\n\nTo check the amount of disassembled opcodes or unlifted instructions, you can use \nthe [evaluation.py](binja_xtensa/evaluation/evaluation.py) script. This loads all\nbinaries in a target folder, including contents of archive .a files, and runs the\nBinary Ninja analysis. The results are then stored in a target path provided to the\nscript. This helped with checking the progress during the implementation and understand\nwhich instructions should take priority when lifting. For visualizing the results,\nyou can use the plotter in [plotter.ipynb](binja_xtensa/evaluation/plotter.ipynb).\n\n## Testing\n\nThere are some simple tests in\n[test_instruction.py](binja_xtensa/test_instruction.py), which are mostly just\ntaking uniq'd output from objdump on some binaries I had laying around and\nmaking sure the output matches. They can be run with `python -m pytest` from the\nroot of the project.\n\n## Future Work\n\n* Improve lifters once additional Binary Ninja features are added:\n * Loop Option: function-level lifting necessary to lift loops that span multiple basic blocks. \n * Windowed Registers: Transparent copies would help higher level analysis\n* Cleanly implement LITBASE offset, using loading options\n * More information: Daniel Wegemer's [presentation](https://media.defcon.org/DEF%20CON%2031/DEF%20CON%2031%20presentations/Daniel%20Wegemer%20-%20Unlocking%20hidden%20powers%20in%20Xtensa%20based%20Qualcomm%20Wifi%20chips.pdf) at DEFCON31\n* Add MAC16 option lifters\n* Proper Flag usage when lifting instructions\n* Improve the raw firmware loader\n* Improve section classifications (e.g. currently .literal is seen as code instead of data)\n* Rewrite to be faster\n\n## License\n\nThis project copyright Nicolae Binica (@nicabi) and Zack Orndorff (@zackorndorff) and is available under the\nMIT license. See [LICENSE](LICENSE).\n\n\n### Changelog\nCompleted version of the original plugin written by Zack Orndorff", + "minimumbinaryninjaversion": 8001, + "name": "Xtensa Architecture Support and ESP8266 Loader", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/a497c1b0-f852-4c2a-9fc8-d3b023e7c1bd/versions/970fd1e2-b8af-4476-8091-e059e36bf09d/platforms/2677/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/a497c1b0-f852-4c2a-9fc8-d3b023e7c1bd/versions/970fd1e2-b8af-4476-8091-e059e36bf09d/platforms/2677/download?notrack=1", + "path": "nicabi_binja_xtensa2", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 4, + "updated_at": "2025-08-30 19:16:53+00:00" + }, + "projectUrl": "https://github.com/nicabi/binja-xtensa2", + "subdir": "", + "type": [ + "architecture", + "binaryview" + ], + "version": "1.0", + "view_only": false + }, + { + "api": [ + "python2", + "python3" + ], + "author": "Ahmet Bilal Can", + "dependencies": "", + "description": "RISC-V architecture plugin to load encrypted Riscy-Business binaries.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1747845501, + "license": { + "name": "Apache-2.0", + "text": "Copyright 2025 Ahmet Bilal Can\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\n\thttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + }, + "longdescription": "# bn-riscy-business\r\n\r\nAn architecture plug-in that allows binary ninja to load [Riscy-Business](https://github.com/thesecretclub/riscy-business/tree/master) payload binaries and see decrypted rv64i instructions.\r\n\r\nThis plugin is fork of [bn-riscv](https://github.com/uni-due-syssec/bn-riscv). \r\n\r\n\r\n## Installation\r\n\r\nFirst, you will need an installation of [capstone](https://github.com/aquynh/capstone) that supports RISC-V.\r\n\r\n```\r\npip install --user 'capstone'\r\n```\r\n\r\nThen drop this repository into your plugins directory manually. Note that you should use it from master if possible, releases are somewhat rare.", + "minimumbinaryninjaversion": 0, + "name": "bn-riscy-business", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/0f239ef9-60b2-4882-9544-4949d3867616/versions/136fa5e4-9b86-43ba-8940-11368ea00a37/platforms/2407/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/0f239ef9-60b2-4882-9544-4949d3867616/versions/136fa5e4-9b86-43ba-8940-11368ea00a37/platforms/2407/download?notrack=1", + "path": "eybisi_bnriscybusiness", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 8, + "updated_at": "2025-05-21 16:38:21+00:00" + }, + "projectUrl": "https://github.com/eybisi/bn-riscy-business", + "subdir": "", + "type": [ + "architecture" + ], + "version": "0.1", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "pathtofile", + "dependencies": "", + "description": "Creates a deeplink to the current address and adds it to the clipboard", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1747572584, + "license": { + "name": "MIT", + "text": "Copyright 2025 pathtofile\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "Binary Ninja plugin that creates a deeplink to the current address and adds it to the clipboard. Example deeplink:\r\n```\r\nbinaryninja:///path/to/binary.bndb?expr=0x40369e\r\n```\r\n\r\nThe link can then be saved into an external Wiki, notebook, etc. Binary Ninja automatically installs a link handler at install time, so you just need to 'open' the link in a browser or from the commandline\r\nand it will open the right database as the correct location.", + "minimumbinaryninjaversion": 7290, + "name": "Copy as Deeplink", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/a6102c95-789d-4be3-b81a-ad5821925926/versions/99e8fa5e-a09d-4da6-beb5-2b2ead155ae5/platforms/2413/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/a6102c95-789d-4be3-b81a-ad5821925926/versions/99e8fa5e-a09d-4da6-beb5-2b2ead155ae5/platforms/2413/download?notrack=1", + "path": "pathtofile_binja_plugin_copy_deeplink", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 0, + "updated_at": "2025-05-18 12:49:44+00:00" + }, + "projectUrl": "https://github.com/pathtofile/binja_plugin_copy_deeplink", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.0.0", + "view_only": false + }, + { + "api": [ + "C++" + ], + "author": "Accenture (Martin Petran)", + "dependencies": "", + "description": "Architecture plugin for Renesas RH850/V850 family of processors.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1737546835, + "license": { + "name": "Apache-2.0", + "text": "Copyright 2024 Accenture\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\r\n\r\n\thttp://www.apache.org/licenses/LICENSE-2.0\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + }, + "longdescription": "This Binary Ninja plugin provides a native implementation for the Renesas RH850/V850 architecture. The main reason for writing this from scratch instead of using existing plugin is that any Architecture plugin written in Python is not usable for large binaries as the analysis takes ages. Therefore, this is a complete coverage of this architecture written purely in C/C++.", + "minimumbinaryninjaversion": 6135, + "name": "NEC850 Architecture", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/e62e1aa9-020d-42b4-a6e8-f4ff89777d68/versions/7e65c727-d2dc-4acd-807c-9c1bc8542000/platforms/1273/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/e62e1aa9-020d-42b4-a6e8-f4ff89777d68/versions/7e65c727-d2dc-4acd-807c-9c1bc8542000/platforms/1273/download?notrack=1", + "path": "Accenture_NEC850_Architecture", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 5, + "updated_at": "2025-01-22 11:53:55+00:00" + }, + "projectUrl": "https://github.com/Accenture/NEC850_Architecture", + "subdir": "", + "type": [ + "architecture" + ], + "version": "1.0", + "view_only": true + }, + { + "api": [ + "python3" + ], + "author": "Tim Blazytko, Nicol\u00f2 Altamura", + "dependencies": "msynth @ git+https://github.com/mrphrazer/msynth@d719a58\nmiasm @ git+https://github.com/cea-sec/miasm@90dc167\nz3-solver\nwheel\nnetworkx\n", + "description": "Analyze and simplify obfuscated code", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1760188910, + "license": { + "name": "GPL-2.0", + "text": "Copyright 2025 Tim Blazytko, Nicol\u00f2 Altamura\n\nThis program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program; if not, see ." + }, + "longdescription": "# Obfuscation Analysis (v1.2)\nAuthors: **Tim Blazytko & Nicol\u00f2 Altamura**\n\n_Analyze and simplify obfuscated code_\n\n\n## Description:\n\n_Obfuscation Analysis_ is a Binary Ninja plugin that takes the pain out of working with heavily protected binaries.\nIt bundles a handful of focused helpers that let you\n\n* simplify Mixed-Boolean Arithmetic (MBA) expressions in one click (based on [msynth](https://github.com/mrphrazer/msynth))\n* locate and scrub functions with broken disassembly\n\nSome example use cases can be found in [examples](./examples). Furthermore, the REcon talk \"Breaking Mixed Boolean-Arithmetic Obfuscation in Real-World Applications\" demonstrates some use cases. The slides can be found [here](./presentation/recon25_mba_obfuscation.pdf). The plugin complements [Obfuscation Detection](https://github.com/mrphrazer/obfuscation_detection/): once suspicious functions are flagged, _Obfuscation Analysis_ helps you clean and understand them. More helpers will be added over time.\n\n\n## Core Features\n\n* simplify Mixed-Boolean Arithmetic obfuscation in Binary Ninja's decompiler view\n* identify and remove functions with broken disassembly\n* inline functions in the decompiler view\n* efficient and architecture-agnostic implementation\n* runs as a background task\n* careful error handling: concise user messages, full trace in the Debug log\n\n\n## Installation\n\nThe tool can be installed using Binary Ninja's plugin manager.\n\nFor a manual installation, follow these steps in Binary Ninja's plugin folder:\n\n```\ngit clone https://github.com/mrphrazer/obfuscation_analysis.git\ncd obfuscation_analysis\n\n# optionally: use a virtual environment\npython -m venv obfana-env\nsource obfana-env/bin/activate\n\n# install requirements\npip install -r requirements.txt\n```\n\nIf you use a virtual environment, you'll need to manually set the `site-packages` path in the Binary Ninja settings.\n\n\n## Usage\n\nThe plugin is available from **Binary Ninja\u2019s** top-bar menu under `Plugins -> Obfuscation Analysis`.\n\n

\n\"Plugin\n

\n\n\n### MBA Simplification\n\nTo simplify arithmetic obfuscation, first highlight the HLIL expression you want to simplify in the decompiler view. Next, choose `Plugins -> Obfuscation Analysis -> MBA Simplification -> Slice & Simplify`. The plugin resolves the full computation, runs it through msynth, and inserts the simplified result as a comment on the same line. The short animation below shows the entire workflow:\n\n

\n\"MBA\n

\n\nMBA simplification relies on msynth. By default, the plugin uses [msynth\u2019s default simplification oracle](https://github.com/mrphrazer/msynth?tab=readme-ov-file#pre-computed-simplification-lookup-tables), which ships with the plugin and is pre-configured. If you want to use a larger or custom oracle, set `obfuscation_analysis.mba_oracle_path` manually or browse to the file in Binary Ninja\u2019s Settings window.\n\n

\n\"Plugin\n

\n\nIf something goes wrong the plugin writes a concise user-level message to the Log pane; switch the log view to `Debug` to see the full traceback.\n\n

\n\"Log\n

\n\n\n## Features\n\nThe plugin ships focused helpers that target common roadblocks you hit when reversing protected binaries, each runnable as a background task from the UI or head-less scripts. Below are the features currently available.\n\n\n### Corrupted Functions\n\nCorrupted Functions are functions whose disassembly shows undefined artefacts\u2014empty basic blocks, invalid or overlapping instructions, and the like. This helper walks the entire BinaryView, flags functions with those symptoms, and lists them such that the analyst can quickly inspect code that was mis-parsed or deliberately obfuscated. An optional remove action erases every flagged function and forces a fresh analysis, cleaning up the function list. It is particularly useful for locating\n\n* data blobs that the disassembler mistakenly promoted to code\n* obfuscation stubs that break straight-line disassembly\n* functions using overlapping instructions or mis-aligned jumps\n* problems with newer architectures where uncommon instructions are encountered\n\n\n### MBA Simplification\n\nMixed-Boolean Arithmetic (MBA) is an obfuscation technique that buries simple computations in long chains of arithmetic and Boolean operations. This feature simplifies such expressions in the decompiler. When you pick an HLIL instruction, the plugin collects its complete computation chain with an SSA backward slice restricted to the current basic block, translates that slice to Miasm IR, feeds it into msynth, and finally adds the simplified result as a comment in the decompiler view. This feature allows you to\n\n* collapse multi-line MBA tangles into a single, readable equation\n* resolve opaque predicates that rely on MBAs\n* fold convoluted constant encodings down to their literal value\n\n\n### Function Inlining\n\nFor the currently selected function, this helper recursively inlines every callee inside the decompiler view, giving Binary Ninja a single, self-contained IL. With all boundaries gone the decompiler can propagate data across functions, enabling deeper constant folding, dead-code elimination, and generally clearer logic. Use it to\n\n* collapse chains of tiny wrappers, thunks, or accessor helpers\n* improve algorithm representations that have been split across multiple functions\n* analyze obfuscation schemes where logic is deliberately scattered between functions\n\nNote that HLIL can become very huge and slow to render on very large functions or deep call trees. In addition, some decompiler optimizations may be less effective once everything is merged into a single unit. To control this, you can limit the inlining depth: set `Settings -> Obfuscation Analysis -> Max Function Inlining Depth` to an upper bound N (per default set to 1). With a depth limit, only the first N call levels are inlined; deeper calls are not inlined.\n\n\n## Limitations\n\nThe plugin has a few caveats you should be aware of, most of them related to the MBA simplification pipeline:\n\n* **Binary Ninja bug**: on BN 5.0 stable, the backward-slicing step may fail because of missing HLIL type-casts: https://github.com/Vector35/binaryninja-api/issues/6371; the issue is fixed in *5.1.7477-de* and newer\n\n* **slice confined to one basic block**: variable definitions located in predecessor blocks are ignored (often control-flow dependent), so some MBA terms may stay partially resolved\n\n* **HLIL to Miasm IR translation gaps**: not every HLIL construct has a sound Miasm equivalent; when translation fails the expression is skipped and an error is logged\n\n* **IL coverage**: control-flow nodes and floating-point operations are currently not translated\n\n* **inherited msynth constraints** : MBA simplification inherits all [msynth limitations](https://github.com/mrphrazer/msynth/blob/main/README.md#limitations-and-future-work)\n\n\n## Contact\n\nFor more information, contact Tim Blazytko ([@mr_phrazer](https://x.com/mr_phrazer)) or Nicol\u00f2 Altamura ([@nicolodev](https://x.com/nicolodev)).\n\n\n### Changelog\n* new feature to recursively inline functions in the decompiler to enable cross-function analysis", + "minimumbinaryninjaversion": 5336, + "name": "Obfuscation Analysis", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/762d8356-406d-44b0-8f6c-6a4534e7a9a2/versions/2aa29d39-76a5-42dd-8c50-d361c61c16b6/platforms/2725/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/762d8356-406d-44b0-8f6c-6a4534e7a9a2/versions/2aa29d39-76a5-42dd-8c50-d361c61c16b6/platforms/2725/download?notrack=1", + "path": "mrphrazer_obfuscation_analysis", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 235, + "updated_at": "2025-10-11 13:21:50+00:00" + }, + "projectUrl": "https://github.com/mrphrazer/obfuscation_analysis", + "subdir": "", + "type": [ + "helper" + ], + "version": "1.2", + "view_only": false + }, + { + "api": [ + "python3" + ], + "author": "CX330", + "dependencies": "", + "description": "IoC Ninja is a Binary Ninja plugin that can improve the QoL of malware analysts.", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1763501740, + "license": { + "name": "MIT", + "text": "Copyright (c) 2025 CX330\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + }, + "longdescription": "## Features\n\n- Pattern-based detection for IPv4/IPv6, domains, URLs, emails, UUIDs, MACs, MD5/SHA hashes, JWTs, API keys, PEM blocks, Base64 blocks, file paths, registry keys and more.\n- Heuristic checks: high-entropy tokens, base64 decode validation and file-hash extraction.\n- GUI: choose detectors, run scans in background, view incremental and aggregated results, export to CSV.\n- Live DNS filtering: optionally show only resolvable domains.\n\n## Requirements\n\n- Binary Ninja (minimum version referenced in `plugin.json`: 3164)\n- Python 3 (Binary Ninja's bundled Python is recommended)\n- The plugin uses the Binary Ninja API and PySide6; these are typically supplied by the Binary Ninja application.\n\n## Installation\n\n1. Clone the repository and put `ioc_ninja` inside your Binary Ninja `plugins` directory.\n\n - MacOS: `~/Library/Application Support/Binary Ninja/plugins/`\n - Linux: `~/.binaryninja/plugins/`\n - Windows: `%APPDATA%\\\\Binary Ninja\\\\plugins/`\n\n2. Restart Binary Ninja to load the plugin.\n\n## Usage\n\n1. Open a binary in Binary Ninja.\n2. Open the plugin UI: `Plugins -> IoC Ninja` (or use the command palette).\n3. Select IoC types to scan (or use the All/None shortcuts) and click `Scan`.\n4. Watch progress and partial results in the UI. Use the search box to filter by Type, Value, or Address.\n5. Export results using the `Export` button (CSV) for further triage.\n\n## Developer & Testing\n\n- Core logic: `ioc_ninja/core/ioc_logic.py`\n- UI: `ioc_ninja/ui/ioc_ui.py`\n- Compatibility shim for legacy imports: `ioc_ninja/logic/ioc_logic.py`\n- Tests: `tests/test_ioc_regex.py` (mocks Binary Ninja internals so tests can run outside the host application).\n\nRun unit tests locally (Python 3 required):\n\n```bash\npython3 -m pytest tests/test_ioc_regex.py\n# or (tests include a small runner):\npython3 tests/test_ioc_regex.py\n```\n\nWhen adding or changing detectors, please add/update tests in `tests/test_ioc_regex.py` to cover edge cases.\n\n## Getting Help\n\n- Open an issue in this repository for bugs or feature requests. Include: Binary Ninja version, small repro if possible, and steps to reproduce.\n- For quick questions, code pointers, or to propose changes, open a discussion or PR.\n\n## Contributing & Maintainers\n\n- This project is maintained in this repository. See `LICENSE` for license details (MIT).\n- Contributions are welcome via pull requests \u2014 for larger changes, open an issue first to discuss the approach.\n\n## License\n\nThis project is licensed under the MIT License \u2014 see `LICENSE` for details.\n", + "minimumbinaryninjaversion": 3164, + "name": "IoC Ninja", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/fd0a4c41-2c74-459f-8af5-4e6c693a5d3f/versions/d3ab1ff8-adec-4fec-91f2-06dc606735a4/platforms/2834/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/fd0a4c41-2c74-459f-8af5-4e6c693a5d3f/versions/d3ab1ff8-adec-4fec-91f2-06dc606735a4/platforms/2834/download?notrack=1", + "path": "CX330Blake_ioc_ninja", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 16, + "updated_at": "2025-11-18 21:35:40+00:00" + }, + "projectUrl": "https://github.com/CX330Blake/ioc_ninja", + "subdir": "", + "type": [ + "binaryview", + "core", + "helper", + "ui" + ], + "version": "0.1.3", + "view_only": false + }, + { + "api": [ + "python3", + "" + ], + "author": "thijs.xhaflaire", + "dependencies": "", + "description": "Analyze a function or highlighted code using VirusTotal Code Insights (Google Threat Intelligence).", + "installinstructions": {}, + "is_paid": false, + "lastUpdated": 1765273348, + "license": { + "name": "MIT", + "text": "MIT License\r\n\r\nCopyright (c) 2025 Thijs Xhaflaire\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE." + }, + "longdescription": "This plugin allows you to select the current function or highlighted code in Binary Ninja and send it to VirusTotal Code Insights (part of Google Threat Intelligence) for semantic analysis. The plugin integrates with the Binary Ninja Settings panel for storing your VirusTotal API key and provides UI popups with clipboard support and console logging for the analysis results.\n\n### Changelog\nInitial release of VirusTotal Code Insights plugin for Binary Ninja v1.0.0", + "minimumbinaryninjaversion": 8722, + "name": "VirusTotal Code Insights", + "packageShortUrl": "https://extensions.binary.ninja/v1/extensions/50b66af9-ff02-48a9-a09c-15df9de8b386/versions/84ed478b-cc4c-4d69-9665-c917779841f4/platforms/2935/download", + "packageUrl": "https://extensions.binary.ninja/v1/extensions/50b66af9-ff02-48a9-a09c-15df9de8b386/versions/84ed478b-cc4c-4d69-9665-c917779841f4/platforms/2935/download?notrack=1", + "path": "txhaflaire_virustotal_code_insights", + "platforms": [ + "Darwin", + "Linux", + "Windows" + ], + "pluginmetadataversion": 2, + "projectData": { + "stargazers_count": 1, + "updated_at": "2025-12-09 09:42:28+00:00" + }, + "projectUrl": "https://github.com/txhaflaire/virustotal_code_insights", + "subdir": "", + "type": [ + "architecture", + "binaryview", + "core", + "helper", + "ui" + ], + "version": "1.0.0", + "view_only": false + } ] \ No newline at end of file diff --git a/plugins/Annotator b/plugins/Annotator deleted file mode 160000 index 7030149..0000000 --- a/plugins/Annotator +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 703014982e310dc71bf9705521dfa96ba24d763d diff --git a/plugins/Binja-SigMaker b/plugins/Binja-SigMaker deleted file mode 160000 index 9a91c66..0000000 --- a/plugins/Binja-SigMaker +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9a91c665e4bce48fce15e5d38853e85b70f7aee5 diff --git a/plugins/Binja4J b/plugins/Binja4J deleted file mode 160000 index 9af96cb..0000000 --- a/plugins/Binja4J +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9af96cbd4ca6cf6c2808629bb97c530b9037964c diff --git a/plugins/Keyhole b/plugins/Keyhole deleted file mode 160000 index ab99db4..0000000 --- a/plugins/Keyhole +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ab99db406ea5d0df81e651b7291eb8cfce07b065 diff --git a/plugins/README.md b/plugins/README.md deleted file mode 100644 index 09d5882..0000000 --- a/plugins/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# Binary Ninja Plugins - -| PluginName | Author | License | Type | Description | -|------------|--------|---------|----------|-------------| -|[Syscaller](https://github.com/carstein/Syscaller)|[Michal Melewski ](https://github.com/carstein)|[MIT](Syscaller/LICENSE)|binaryview|A plugins that print out details about encountered syscalls.| -|[V850 Architecture Plugin](https://github.com/ehntoo/binaryninja-v850)|[Mitchell Johnson](https://github.com/ehntoo)|[MIT](binaryninja-v850/LICENSE)|architecture|A disassembler and lifter for the V850 architecture.| -|[Bookmarks](https://github.com/joshwatson/binaryninja-bookmarks)|[Josh Watson](https://github.com/joshwatson)|[MIT](binaryninja-bookmarks/LICENSE)|core, ui|A plugin that adds bookmarking functionality.| -|[Microcorruption BinaryView Plugin](https://github.com/joshwatson/binaryninja-microcorruption)|[Josh Watson](https://github.com/joshwatson)|[MIT](binaryninja-microcorruption/LICENSE)|binaryview, core, ui|A `BinaryView` for Microcorruption CTF memory dumps| -|[binja-msvc](https://github.com/DatBrick/binja-msvc)|[Brick](https://github.com/DatBrick)|[MIT](binja-msvc/LICENSE)|architecture, binaryview, core, ui|A Binary Ninja plugin to scan for MSVC constructs| -|[RetDec Offline Decompiler](https://github.com/ThisIsSecurity/retdec_offline)|[Stormshield](https://github.com/ThisIsSecurity)|[MIT](retdec_offline/LICENSE)|architecture, binaryview, core, ui|The plugin recovers C code from machine code.| -|[genesis](https://github.com/zznop/bn-genesis)|[zznop](https://github.com/zznop)|[MIT](bn-genesis/LICENSE)|binaryview|SEGA Genesis ROM Hacking Toolkit| -|[LLVM Deobfuscator](https://github.com/RPISEC/llvm-deobfuscator)|[Toshi Piazza & Kareem El-Faramawi](https://github.com/RPISEC)|[MIT](llvm-deobfuscator/LICENSE)|core, ui|Deobfuscator for LLVM-Obfuscator| -|[Xref Call Finder](https://github.com/rick2600/xref_call_finder)|[rick2600](https://github.com/rick2600)|[MIT](xref_call_finder/LICENSE)|architecture, binaryview, core, ui|Print call chains to a target function| -|[Djumpo Unchained](https://github.com/ThisIsSecurity/djumpo_unchained)|[Stormshield](https://github.com/ThisIsSecurity)|[MIT](djumpo_unchained/LICENSE)|architecture, binaryview, core, ui|The plugin de-obfuscates chained jumps.| -|[IDC Importer](https://github.com/Cryptogenic/idc_importer)|[SpecterDev](https://github.com/Cryptogenic)|[MIT](idc_importer/LICENSE)|binaryview|Allows users to import idc database dumps from IDA into Binary Ninja.| -|[secRet.re](https://github.com/iGio90/binja-secret)|[iGio90](https://github.com/iGio90)|[MIT](binja-secret/LICENSE)|architecture, binaryview, core, ui|| -|[function_abi](https://github.com/whitequark/binja_function_abi)|[whitequark](https://github.com/whitequark)|[BSD-0-clause](binja_function_abi/LICENSE)|ui|A plugin that adds a GUI for changing function ABI.| -|[CLIPPER Architecture Plugin](https://github.com/pmackinlay/binaryninja-clipper)|[Patrick Mackinlay](https://github.com/pmackinlay)|[MIT](binaryninja-clipper/LICENSE)|architecture|A disassembler and lifter for the CLIPPER architecture.| -|[cryptoscan](https://github.com/Rami114/cryptoscan)|[Ben Pottier](https://github.com/Rami114)|[MIT](cryptoscan/LICENSE)|binaryview, ui|A plugin to detect several common crypto constructs and magic vars.| -|[bnpy](https://github.com/extremecoders-re/bnpy)|[extremecoders](https://github.com/extremecoders-re)|[MIT](bnpy/LICENSE)|architecture|Python 2.7 architecture plugin.| -|[bncov](https://github.com/ForAllSecure/bncov)|[Mark Griffin](https://github.com/ForAllSecure)|[MIT](bncov/LICENSE)|analysis, coverage, ui|Code coverage analysis and visualization.| -|[Intel 8086 Architecture](https://github.com/whitequark/binja-i8086)|[whitequark](https://github.com/whitequark)|[BSD-0-clause](binja-i8086/LICENSE)|arch|A plugin providing the 16-bit Intel architecture.| -|[AVR Architecture Plugin](https://github.com/fluxchief/binaryninja_avr)|[Kevin Hamacher](https://github.com/fluxchief)|[MIT](binaryninja_avr/LICENSE)|architecture, binaryview|AVR architecture plugin + lifter.| -|[Clipboard](https://github.com/bkerler/binja-clipboard)|[B.Kerler](https://github.com/bkerler)|[MIT](binja-clipboard/LICENSE)|architecture, binaryview, core, ui|| -|[ripr](https://github.com/pbiernat/ripr)|[Patrick Biernat](https://github.com/pbiernat)|[MIT](ripr/LICENSE)|none|Package binary code as a Python class backed by Unicorn-Engine| -|[Mach-O Symbols Generator](https://github.com/bambu/binaryninja-machosymbols)|[Bambu](https://github.com/bambu)|[MIT](binaryninja-machosymbols/LICENSE)|ui|Creates symbols and renames functions in mach-o binaries| -|[peutils](https://github.com/404d/peutils)|[Simen Lybekk](https://github.com/404d)|[MIT](peutils/LICENSE)|ui|Binary Ninja plugin providing various niche utilities for working with PE binaries| -|[x64dbgbinja](https://github.com/x64dbg/x64dbgbinja)|[x64dbg](https://github.com/x64dbg)|[MIT](x64dbgbinja/LICENSE)|binaryview|Official x64dbg plugin for Binary Ninja.| -|[WinAPI-Annotator](https://github.com/levyjm/WinAPI-Annotator)|[John Levy with help from @carstein](https://github.com/levyjm)|[MIT](WinAPI-Annotator/LICENSE)|binaryview|A plugins that annotates Windows API function arguments.| -|[Annotate Functions](https://github.com/bkerler/annotate)|[B.Kerler with code from John Levy and @carstein](https://github.com/bkerler)|[MIT](annotate/LICENSE)|binaryview|A plugin that annotates function arguments.| -|[Nampa](https://github.com/kenoph/nampa)|[Paolo Montesel (github.com/kenoph)](https://github.com/kenoph)|[LGPL v3](nampa/LICENSE)|binaryview, core|FLIRT for (binary) ninjas| -|[binja_JSON_plugin](https://github.com/mozark24/binja_JSON_Plugin)|[Chris Henry](https://github.com/mozark24)|[MIT](binja_JSON_Plugin/LICENSE)|binaryview|Dumps all MLIL functions, basic blocks, and instruction properties into a JSON file.| -|[VMNDH-2k12 Architecture Plugin](https://github.com/verylazyguy/binaryninja-vmndh)|[verylazyguy](https://github.com/verylazyguy)|[MIT](binaryninja-vmndh/LICENSE)|architecture|A disassembler and lifter for the VMNDH-2k12 architecture.| -|[Annotator](https://github.com/carstein/Annotator)|[Michal Melewski ](https://github.com/carstein)|[MIT](Annotator/LICENSE)|binaryview|A plugins that annotates libc function arguments.| -|[bnGB](https://github.com/icecr4ck/bnGB)|[Hugo Porcher (icecr4ck)](https://github.com/icecr4ck)|[MIT](bnGB/LICENSE)|architecture, binaryview|Game Boy loader and architecture plugin.| -|[Pasticciotto Architecture Plugin](https://github.com/peperunas/binaryninja-pasticciotto)|[Giulio De Pasquale](https://github.com/peperunas)|[MIT](binaryninja-pasticciotto/LICENSE)|architecture|A disassembler for the Pasticciotto architecture.| -|[easypatch](https://github.com/walterschell/easypatch)|[Walter Schell](https://github.com/walterschell)|[MIT](easypatch/LICENSE)|ui|Right click to patch contents of memory operands| -|[MSP430 Architecture Plugin](https://github.com/joshwatson/binaryninja-msp430)|[Josh Watson](https://github.com/joshwatson)|[MIT](binaryninja-msp430/LICENSE)|architecture|A disassembler and lifter for the MSP430 architecture.| -|[Binjatron](https://github.com/snare/binjatron)|[snare](https://github.com/snare)|[MIT](binjatron/LICENSE)|ui|Synchronise the Binary Ninja binary view with a debugger via Voltron.| -|[BNHook](https://github.com/orndorffgrant/bnhook)|[Grant Orndorff](https://github.com/orndorffgrant)|[MIT](bnhook/LICENSE)|core, ui|Insert custom hooks| -|[Explain Instruction](https://github.com/ehennenfent/binja_explain_instruction)|[Eric Hennenfent](https://github.com/ehennenfent)|[Apache 2](binja_explain_instruction/LICENSE)|education, ui|Displays a window that explains in simple English what an assembly instruction does| -|[Keyhole](https://github.com/carstein/Keyhole)|[Michal Melewski ](https://github.com/carstein)|[MIT](Keyhole/LICENSE)|ui|Report about functions in given binary.| -|[Jump table branch editor](https://github.com/Vasco-jofra/jump-table-branch-editor)|[jofra (@V_jofra)](https://github.com/Vasco-jofra)|[MIT](jump-table-branch-editor/LICENSE)|core, ui|A plugin that eases fixing jump table branches.| -|[structor](https://github.com/toolCHAINZ/structor)|[toolchainz](https://github.com/toolCHAINZ)|[MIT](structor/LICENSE)|analysis, structure, ui|A naive auto-struct maker.| -|[Radare2 Linear Sweep Plugin](https://github.com/Manouchehri/binaryninja-radare2)|[David Manouchehri](https://github.com/Manouchehri)|[BSD4](binaryninja-radare2/LICENSE)|binaryview, core, ui|Uses radare to identify extra symbols| -|[Simple Linear Sweep](https://github.com/lstotch/linsweep)|[butters](https://github.com/lstotch)|[MIT](linsweep/LICENSE)|architecture, binaryview, core, ui|Uses simplistic techniques to identify additional functions for x86 and x86_64 binaries.| -|[Search Immediate](https://github.com/6e726d/binaryninja-search)|[6e726d](https://github.com/6e726d)|[MIT](binaryninja-search/LICENSE)|ui|Search for the specific value in the instruction operands.| -|[PSX EXE loader](https://github.com/PeterBortas/binja-psx)|[Peter Bortas ](https://github.com/PeterBortas)|[MIT](binja-psx/LICENSE)|binaryview|A loader for Playstation 1 executables| -|[Trickle-down Variables](https://github.com/toolCHAINZ/trickledown_vars)|[toolCHAINZ](https://github.com/toolCHAINZ)|[MIT](trickledown_vars/LICENSE)|ui|(ALPHA) Autorename variables that are copies of other variables.| -|[SigMaker](https://github.com/Alex3434/Binja-SigMaker)|[Alex3434](https://github.com/Alex3434)|[MIT](Binja-SigMaker/LICENSE)|architecture, binaryview, core, ui|Generate Signatures| -|[Binary Ninja IPython Kernel](https://github.com/ernw/binja-ipython)|[Florian Magin](https://github.com/ernw)|[MIT](binja-ipython/LICENSE)|core|Spawn an IPython Kernel inside binja .| -|[binjago](https://github.com/zznop/binjago)|[zznop](https://github.com/zznop)|[MIT](binjago/LICENSE)|binaryview|Binjago static analysis plugin suite.| -|[bnil-graph](https://github.com/withzombies/bnil-graph)|[Ryan Stortz (@withzombies)](https://github.com/withzombies)|[Apache 2.0](bnil-graph/LICENSE)|ui|A BinaryNinja plugin to graph a BNIL instruction tree| -|[Itanium C++ ABI](https://github.com/whitequark/binja_itanium_cxx_abi)|[whitequark](https://github.com/whitequark)|[BSD-0-clause](binja_itanium_cxx_abi/LICENSE)|analysis|A plugin providing an analysis for Itanium C++ ABI.| -|[BINoculars](https://github.com/rick2600/binoculars)|[rick2600](https://github.com/rick2600)|[MIT](binoculars/LICENSE)|ui|Plugin for Binary Ninja to centralize features useful in static analysis.| -|[msdn](https://github.com/schmotzle/binja-msdn)|[Benedikt Schmotzle](https://github.com/schmotzle)|[MIT](binja-msdn/LICENSE)|ui|Search MSDN api reference| -|[Binja Architecture Reference](https://github.com/ehennenfent/binja_arch_ref)|[Eric Hennenfent](https://github.com/ehennenfent)|[MIT](binja_arch_ref/LICENSE)|ui|Binary Ninja plugin to display a cheat sheet with information about the current architecture| -|[OffsetView](https://github.com/tchebb/binaryninja-offsetview)|[Thomas Hebb](https://github.com/tchebb)|[GPLv2](binaryninja-offsetview/LICENSE)|binaryview, ui|Binary Ninja `BinaryView` to display a binary file with a nonzero base address.| -|[Find and Nop](https://github.com/made0x78/find_and_nop)|[made0x78](https://github.com/made0x78)|[MIT](find_and_nop/LICENSE)|none|A plugin that finds a given assembly pattern and replaces it with nops.| -|[List Symbols](https://github.com/sheadovas/binja-list-symbols)|[sheadovas](https://github.com/sheadovas)|[MIT](binja-list-symbols/LICENSE)|ui|A plugin that extracts symbols found inside binary with xrefs (like IDA subview imports/exports)| -|[LC-3 Architecture Plugin](https://github.com/kapaw/binaryninja-lc3)|[Paw Petersen](https://github.com/kapaw)|[MIT](binaryninja-lc3/LICENSE)|architecture|Disassembler for the LC-3 architecture.| -|[Binary Ninja Dynamic Analysis Tools](https://github.com/ehennenfent/binja_dynamics)|[Eric Hennenfent](https://github.com/ehennenfent)|[Apache 2](binja_dynamics/LICENSE)|dynamic, education, ui|Adds a series of dynamic analysis tools aimed at beginners to Binary Ninja.| -|[SimilarNinja Plugin](https://github.com/v-p-b/similarninja)|[buherator](https://github.com/v-p-b)|[GPLv2](similarninja/LICENSE)|architecture, binaryview, core, ui|Find similar functions with Binary Ninja| -|[Intel 8051 Family Architecture Plugin](https://github.com/amtal/i8051)|[amtal](https://github.com/amtal)|[AGPLv3](i8051/LICENSE)|architecture|Disassembler for the 8051 architecture family.| -|[PPC VLE Architecture Extension](https://github.com/ehntoo/binaryninja-vle)|[Mitchell Johnson](https://github.com/ehntoo)|[MIT](binaryninja-vle/LICENSE)|architecture|A disassembler and lifter for the PowerPC VLE ISA.| -|[Binja Sibyl](https://github.com/kenoph/binja_sibyl)|[Paolo Montesel (github.com/kenoph)](https://github.com/kenoph)|[BSD 2-Clause License](binja_sibyl/LICENSE)|binaryview, ui|Sibyl plugin for Binja| -|[SPU Cell Architecture Plugin](https://github.com/bambu/binaryninja-spu)|[Bambu](https://github.com/bambu)|[MIT](binaryninja-spu/LICENSE)|architecture, core, ui|A disassembler for the SPU Cell architecture.| -|[syms2elf](https://github.com/sheadovas/syms2elf)|[sheadovas, danigargu, sha0coder](https://github.com/sheadovas)|[GPL v3](syms2elf/LICENSE)|binaryview, core|A plugin that exports binary with function names created inside Binja| -|[AVR Architecture Plugin](https://github.com/cah011/binja-avr)|[Carl Hurd](https://github.com/cah011)|[MIT](binja-avr/LICENSE)|architecture, core, ui|A disassembler for the AVR architecture.| -|[Sensei](https://github.com/ehennenfent/binja_sensei)|[Eric Hennenfent](https://github.com/ehennenfent)|[MIT](binja_sensei/LICENSE)|ui|A wrapper around several plugins that may be of use to beginners| -|[Intel MCS-48 Architecture Plugin](https://github.com/pmackinlay/binaryninja-mcs48)|[Patrick Mackinlay](https://github.com/pmackinlay)|[MIT](binaryninja-mcs48/LICENSE)|architecture|A disassembler and lifter for the Intel MCS-48 architecture.| -|[Frida Plugin](https://github.com/chame1eon/binaryninja-frida)|[Chame1eon](https://github.com/chame1eon)|[MIT](binaryninja-frida/LICENSE)|binaryview, core, ui|A plugin to integrate the Frida dynamic instrumentation toolkit into Binary Ninja.| -|[LLIL](https://github.com/ColdHeat/liil)|[Kevin Chung](https://github.com/ColdHeat)|[MIT](liil/LICENSE)|ui|Linear IL view for Binary Ninja| -|[Bin4j](https://github.com/CySHell/Binja4J)|[CySHell](https://github.com/CySHell)|[MIT](Binja4J/LICENSE)|binaryview, core|BinaryView MLIL to Neo4j DB| -|[SVD Memory Map Parser](https://github.com/ehntoo/binaryninja-svd/)|[Mitchell Johnson](https://github.com/ehntoo)|[MIT](binaryninja-svd/LICENSE)|core|A parser for the CMSIS System View Description format| - - diff --git a/plugins/Syscaller b/plugins/Syscaller deleted file mode 160000 index 088cccd..0000000 --- a/plugins/Syscaller +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 088cccd7717727a8737b6cc20436ff2d7587039c diff --git a/plugins/WinAPI-Annotator b/plugins/WinAPI-Annotator deleted file mode 160000 index 78fd966..0000000 --- a/plugins/WinAPI-Annotator +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 78fd96685d0ade12dc89a699a40d21dba0018c54 diff --git a/plugins/annotate b/plugins/annotate deleted file mode 160000 index 5c49668..0000000 --- a/plugins/annotate +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5c496682ef5f604e5379cdd58e35090e26d47038 diff --git a/plugins/binaryninja-bookmarks b/plugins/binaryninja-bookmarks deleted file mode 160000 index 83f6206..0000000 --- a/plugins/binaryninja-bookmarks +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 83f620688b5f652a29386d26f3007202a110d075 diff --git a/plugins/binaryninja-clipper b/plugins/binaryninja-clipper deleted file mode 160000 index 62cd43a..0000000 --- a/plugins/binaryninja-clipper +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 62cd43ac2221f6eac90d66d68646ca1b5ddc6fe1 diff --git a/plugins/binaryninja-frida b/plugins/binaryninja-frida deleted file mode 160000 index 964ccbf..0000000 --- a/plugins/binaryninja-frida +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 964ccbfd5d8432e5cc686df5b7cb64989c646dcf diff --git a/plugins/binaryninja-lc3 b/plugins/binaryninja-lc3 deleted file mode 160000 index dda3661..0000000 --- a/plugins/binaryninja-lc3 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit dda3661d83a589c4ceee2838e9b1150d27cf20ab diff --git a/plugins/binaryninja-machosymbols b/plugins/binaryninja-machosymbols deleted file mode 160000 index 8f9e127..0000000 --- a/plugins/binaryninja-machosymbols +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8f9e127eae903c39abe3a92b862c057a203ab6e2 diff --git a/plugins/binaryninja-mcs48 b/plugins/binaryninja-mcs48 deleted file mode 160000 index c51a557..0000000 --- a/plugins/binaryninja-mcs48 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c51a557632d80c907a50e499ec2a253fb744119a diff --git a/plugins/binaryninja-microcorruption b/plugins/binaryninja-microcorruption deleted file mode 160000 index 5f8621b..0000000 --- a/plugins/binaryninja-microcorruption +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5f8621b28944de6468e6184cf83dd8dc8bbd5600 diff --git a/plugins/binaryninja-msp430 b/plugins/binaryninja-msp430 deleted file mode 160000 index 55a7e5e..0000000 --- a/plugins/binaryninja-msp430 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 55a7e5eaa1cc8625a0952e4f43336e97e5a33d00 diff --git a/plugins/binaryninja-offsetview b/plugins/binaryninja-offsetview deleted file mode 160000 index 22ce9db..0000000 --- a/plugins/binaryninja-offsetview +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 22ce9db69645099e4b03de0dbfaf144bdfba444f diff --git a/plugins/binaryninja-pasticciotto b/plugins/binaryninja-pasticciotto deleted file mode 160000 index eadb3c3..0000000 --- a/plugins/binaryninja-pasticciotto +++ /dev/null @@ -1 +0,0 @@ -Subproject commit eadb3c311e971c6daa336e8748286d5dd707a82c diff --git a/plugins/binaryninja-radare2 b/plugins/binaryninja-radare2 deleted file mode 160000 index a0bcbff..0000000 --- a/plugins/binaryninja-radare2 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a0bcbff7fbc620fe70ed5cc7903ff2d0d34a8274 diff --git a/plugins/binaryninja-search b/plugins/binaryninja-search deleted file mode 160000 index 72804b6..0000000 --- a/plugins/binaryninja-search +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 72804b6c42e9bcb4b69fb66491dfa3d27ab5f36b diff --git a/plugins/binaryninja-spu b/plugins/binaryninja-spu deleted file mode 160000 index 535dcb1..0000000 --- a/plugins/binaryninja-spu +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 535dcb186d055ed04124565f511df41527434eef diff --git a/plugins/binaryninja-svd b/plugins/binaryninja-svd deleted file mode 160000 index 93c5268..0000000 --- a/plugins/binaryninja-svd +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 93c52689a5194067b110a9e55d0b487ccdd72123 diff --git a/plugins/binaryninja-v850 b/plugins/binaryninja-v850 deleted file mode 160000 index d3396be..0000000 --- a/plugins/binaryninja-v850 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d3396bef2b38c5a9d451cae1338d25cc72402f0b diff --git a/plugins/binaryninja-vle b/plugins/binaryninja-vle deleted file mode 160000 index ff763f1..0000000 --- a/plugins/binaryninja-vle +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ff763f1c6e224e8ad0d3563f4b4b6adc1aa16dd7 diff --git a/plugins/binaryninja-vmndh b/plugins/binaryninja-vmndh deleted file mode 160000 index e7a7ee5..0000000 --- a/plugins/binaryninja-vmndh +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e7a7ee558fea342222f955d2c008a58d5e254a65 diff --git a/plugins/binaryninja_avr b/plugins/binaryninja_avr deleted file mode 160000 index a0ca7cd..0000000 --- a/plugins/binaryninja_avr +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a0ca7cd3cccc08c8f0ced11d169b48b82bee6e87 diff --git a/plugins/binja-avr b/plugins/binja-avr deleted file mode 160000 index c1661d0..0000000 --- a/plugins/binja-avr +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c1661d01168f38ad008a63ed4e0d63f9598882a7 diff --git a/plugins/binja-clipboard b/plugins/binja-clipboard deleted file mode 160000 index cb8babf..0000000 --- a/plugins/binja-clipboard +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cb8babf225edc1892045e0fb1f1480da659599e2 diff --git a/plugins/binja-i8086 b/plugins/binja-i8086 deleted file mode 160000 index 0f57984..0000000 --- a/plugins/binja-i8086 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0f57984cf75a06728c49f63e8af85cd6fd21c60c diff --git a/plugins/binja-ipython b/plugins/binja-ipython deleted file mode 160000 index f45d4c8..0000000 --- a/plugins/binja-ipython +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f45d4c82c5d7cea15489bbda474a4701f59da24a diff --git a/plugins/binja-list-symbols b/plugins/binja-list-symbols deleted file mode 160000 index 8fb2398..0000000 --- a/plugins/binja-list-symbols +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8fb23988ef49b7ea546d87595f222897579b9d99 diff --git a/plugins/binja-msdn b/plugins/binja-msdn deleted file mode 160000 index 0a89f75..0000000 --- a/plugins/binja-msdn +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0a89f75247b38f5b9ce971ead46c5e5fd7c58773 diff --git a/plugins/binja-msvc b/plugins/binja-msvc deleted file mode 160000 index 4610f8a..0000000 --- a/plugins/binja-msvc +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4610f8aa8a957cd1f6d8c0ab3da7ca75ad1f5af0 diff --git a/plugins/binja-psx b/plugins/binja-psx deleted file mode 160000 index c5b7d7a..0000000 --- a/plugins/binja-psx +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c5b7d7ae317650bb82a0203d1426cdc7d24ea4be diff --git a/plugins/binja-secret b/plugins/binja-secret deleted file mode 160000 index 7125d0f..0000000 --- a/plugins/binja-secret +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7125d0f16f1963d3ad52fd996009bf149c954903 diff --git a/plugins/binja_JSON_Plugin b/plugins/binja_JSON_Plugin deleted file mode 160000 index d4537d7..0000000 --- a/plugins/binja_JSON_Plugin +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d4537d7d011109658f755dae8371c9cee61eb27f diff --git a/plugins/binja_arch_ref b/plugins/binja_arch_ref deleted file mode 160000 index 0ff638a..0000000 --- a/plugins/binja_arch_ref +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0ff638a853c47dc89104e4be257e0fab8959815d diff --git a/plugins/binja_dynamics b/plugins/binja_dynamics deleted file mode 160000 index 84fc0dc..0000000 --- a/plugins/binja_dynamics +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 84fc0dc2102ec772bb8f6aab62b627863b4a51b7 diff --git a/plugins/binja_explain_instruction b/plugins/binja_explain_instruction deleted file mode 160000 index bf27ae8..0000000 --- a/plugins/binja_explain_instruction +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bf27ae88085f59581e2f3f0f8949b0f79039032c diff --git a/plugins/binja_function_abi b/plugins/binja_function_abi deleted file mode 160000 index b0396ff..0000000 --- a/plugins/binja_function_abi +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b0396ff478945c41105666c8f8b5c0d5af98b5e6 diff --git a/plugins/binja_itanium_cxx_abi b/plugins/binja_itanium_cxx_abi deleted file mode 160000 index 900c295..0000000 --- a/plugins/binja_itanium_cxx_abi +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 900c295b276eeaa4da035d0e636194cea34e7c80 diff --git a/plugins/binja_sensei b/plugins/binja_sensei deleted file mode 160000 index 57a40e9..0000000 --- a/plugins/binja_sensei +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 57a40e958cf6949b809d3863a4588b26b4caed67 diff --git a/plugins/binja_sibyl b/plugins/binja_sibyl deleted file mode 160000 index 603291e..0000000 --- a/plugins/binja_sibyl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 603291e41693c3fa558b3b17ae7f537be777d8ac diff --git a/plugins/binjago b/plugins/binjago deleted file mode 160000 index 37ba4cf..0000000 --- a/plugins/binjago +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 37ba4cf9379647ce5f4266a431a0bef07127fef7 diff --git a/plugins/binjatron b/plugins/binjatron deleted file mode 160000 index a0a94ce..0000000 --- a/plugins/binjatron +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a0a94ce5e033522f4f4853d924d9fe2daa940db9 diff --git a/plugins/binoculars b/plugins/binoculars deleted file mode 160000 index bc1c1f7..0000000 --- a/plugins/binoculars +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bc1c1f7aa90e060d0e020f79654bef388f7c5ae5 diff --git a/plugins/bn-genesis b/plugins/bn-genesis deleted file mode 160000 index 1ea232d..0000000 --- a/plugins/bn-genesis +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1ea232d6c433886da6480a1ca6d509facc14b363 diff --git a/plugins/bnGB b/plugins/bnGB deleted file mode 160000 index ea68ab3..0000000 --- a/plugins/bnGB +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ea68ab37f8f99a7993b9534f641a7994031465bc diff --git a/plugins/bncov b/plugins/bncov deleted file mode 160000 index dddcc60..0000000 --- a/plugins/bncov +++ /dev/null @@ -1 +0,0 @@ -Subproject commit dddcc602c09ff6b375d39888e151dd81a0e8b552 diff --git a/plugins/bnhook b/plugins/bnhook deleted file mode 160000 index db14d07..0000000 --- a/plugins/bnhook +++ /dev/null @@ -1 +0,0 @@ -Subproject commit db14d075d3887ca8bd166ddec76b00699eb52e18 diff --git a/plugins/bnil-graph b/plugins/bnil-graph deleted file mode 160000 index 9826845..0000000 --- a/plugins/bnil-graph +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 98268453c0ce80e25e10993b6b5384a27214e6a1 diff --git a/plugins/bnpy b/plugins/bnpy deleted file mode 160000 index 58ba9fe..0000000 --- a/plugins/bnpy +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 58ba9fe5b7c5449338a3db45e47f6d0365a3cfb0 diff --git a/plugins/cryptoscan b/plugins/cryptoscan deleted file mode 160000 index e6a8d2a..0000000 --- a/plugins/cryptoscan +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e6a8d2a5cb696fb549733a9706b2a682d5ac8081 diff --git a/plugins/djumpo_unchained b/plugins/djumpo_unchained deleted file mode 160000 index 5e52129..0000000 --- a/plugins/djumpo_unchained +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5e521298c75712020593f442b0a75418d4ccdff9 diff --git a/plugins/easypatch b/plugins/easypatch deleted file mode 160000 index ad8232e..0000000 --- a/plugins/easypatch +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ad8232eaee6c5b2675d7fce8290b23f648a73f11 diff --git a/plugins/find_and_nop b/plugins/find_and_nop deleted file mode 160000 index aec89ea..0000000 --- a/plugins/find_and_nop +++ /dev/null @@ -1 +0,0 @@ -Subproject commit aec89ea477dfc6bd5e5156a7b97f16e841b5264b diff --git a/plugins/i8051 b/plugins/i8051 deleted file mode 160000 index 952da8f..0000000 --- a/plugins/i8051 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 952da8fc1a7f41db8ceff440437231229f5b00c1 diff --git a/plugins/idc_importer b/plugins/idc_importer deleted file mode 160000 index 4f97b9a..0000000 --- a/plugins/idc_importer +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4f97b9a1a6d1a45858644d076fe67d351f2ddd4f diff --git a/plugins/jump-table-branch-editor b/plugins/jump-table-branch-editor deleted file mode 160000 index 4b5b3f0..0000000 --- a/plugins/jump-table-branch-editor +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4b5b3f006f423700f57bd285bc78ef12627bb93e diff --git a/plugins/liil b/plugins/liil deleted file mode 160000 index 06c81a5..0000000 --- a/plugins/liil +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 06c81a5dd605bb3b6f3db4d9b2f9ea3fd0083c22 diff --git a/plugins/linsweep b/plugins/linsweep deleted file mode 160000 index dad4556..0000000 --- a/plugins/linsweep +++ /dev/null @@ -1 +0,0 @@ -Subproject commit dad4556b759653be4cd78fc6cacfb7d0b689a579 diff --git a/plugins/llvm-deobfuscator b/plugins/llvm-deobfuscator deleted file mode 160000 index e7ec09e..0000000 --- a/plugins/llvm-deobfuscator +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e7ec09ea4ae0d52ee9a4d28ff9f391c7efea2a57 diff --git a/plugins/nampa b/plugins/nampa deleted file mode 160000 index effa862..0000000 --- a/plugins/nampa +++ /dev/null @@ -1 +0,0 @@ -Subproject commit effa8625a177f39ba7ed860cc69be4f5c722a2bd diff --git a/plugins/peutils b/plugins/peutils deleted file mode 160000 index a5a8a36..0000000 --- a/plugins/peutils +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a5a8a36ba1415cc212a1611ffcee012b55f76763 diff --git a/plugins/retdec_offline b/plugins/retdec_offline deleted file mode 160000 index e935e8c..0000000 --- a/plugins/retdec_offline +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e935e8cb85bf9753253f032cecc0c0eb2e789b87 diff --git a/plugins/ripr b/plugins/ripr deleted file mode 160000 index d5e9168..0000000 --- a/plugins/ripr +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d5e91689be4ecded2e7ecf74338aeb2772e3c94a diff --git a/plugins/similarninja b/plugins/similarninja deleted file mode 160000 index 8f1ea68..0000000 --- a/plugins/similarninja +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8f1ea68581c687fe5efb2df46e2219a7d612a14b diff --git a/plugins/structor b/plugins/structor deleted file mode 160000 index a07a109..0000000 --- a/plugins/structor +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a07a109e9ae4ffcaf6d82ffaef6380ba73e1620f diff --git a/plugins/syms2elf b/plugins/syms2elf deleted file mode 160000 index f83f975..0000000 --- a/plugins/syms2elf +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f83f975a1d02824274e7b3ee01400fadd027dcd4 diff --git a/plugins/trickledown_vars b/plugins/trickledown_vars deleted file mode 160000 index 0edbaff..0000000 --- a/plugins/trickledown_vars +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0edbaff6b78d9bf2abadaacafa9b5e42bea299af diff --git a/plugins/x64dbgbinja b/plugins/x64dbgbinja deleted file mode 160000 index 78648d1..0000000 --- a/plugins/x64dbgbinja +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 78648d133c49fa04eb56886913517cfd0f63d9e6 diff --git a/plugins/xref_call_finder b/plugins/xref_call_finder deleted file mode 160000 index cdd2dc0..0000000 --- a/plugins/xref_call_finder +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cdd2dc064bc0405da089a76404b5b78136c68764 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..5c7e606 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +requests +python-dateutil \ No newline at end of file diff --git a/validate_json.py b/validate_json.py new file mode 100644 index 0000000..a5c8e9a --- /dev/null +++ b/validate_json.py @@ -0,0 +1,56 @@ +import os +import sys +import requests +import base64 +import json + + +token = sys.argv[1] + +def getfile(url): + return requests.get(url, headers={'Authorization': f'token {token}'}) + +issue_content = os.environ.get("ISSUE_CONTENT") + +lines = issue_content.split("\n") + +def validate_repo(line): + repo = line.split(" ")[-1].lower() # handle both cases of just URL or with Repo URL: before + repo = repo.replace("https://github.com/","").strip().strip("/") # just get the user/project portion + projectUrl = f"https://api.github.com/repos/{repo}" + latestRelease = f"{projectUrl}/releases/latest" + tagsUrl = f"{projectUrl}/tags" + try: + releaseData = getfile(latestRelease).json() + + match releaseData.get('message'): + case 'Not Found': + print(f"\n\nERROR: {plugin['name']}, Couldn't get release information. Likely the user created a tag but no associated release.\n") + sys.exit(-1) + case 'Bad credentials': + print("\n\nERROR: Bad credentials, check access token.\n") + sys.exit(-1) + + except: + print(f"\n\nFailed to load valid release data json from {latestRelease}") + sys.exit(-1) + try: + tag = releaseData['tag_name'] + pluginjsonurl = f"{projectUrl}/contents/plugin.json?ref={tag}" + content = getfile(pluginjsonurl).json()['content'] + jsoncontent = json.loads(base64.b64decode(content)) + except: + print(f"\n\nFailed to parse valid plugin.json from https://github.com/{repo}/blob/master/plugin.json") + sys.exit(-1) + sys.exit(0) + +for line in lines: + if line.startswith("Repo URL:"): + validate_repo(line) + +# Failed to find a repo line, just look for the first github URL: + +for line in lines: + if line.startswith("https://github.com/"): + validate_repo(line) +