alessaba/ROPNinja

GitHub: alessaba/ROPNinja

一款为 Binary Ninja 打造的现代 ROP gadget 浏览器插件,以原生侧边栏形式提供快速的 gadget 发现、分类筛选和导航功能。

Stars: 1 | Forks: 0

# ROPNinja ROPNinja 是一个为 [Binary Ninja](https://binary.ninja/) 打造的现代 ROP gadget 浏览器:速度足以保持在侧边栏中运行,界面清爽适合在分层面板中使用,并且在设计上具有原生体验,而非生硬的附加功能。 它最初源自 m4ul3r 的 [`binja_rop`](https://github.com/m4ul3r/binja_rop) 项目的深度改良分支,并从 [`binjago`](https://github.com/zznop/binjago) 中汲取了灵感。当前的发展方向是打造一个以侧边栏优先的 Binary Ninja 工作流,用于漏洞利用开发、逆向工程、CTF 和二进制文件分类。 ## 亮点 - 原生 Binary Ninja 侧边栏小组件,支持分层面板。 - 使用当前打开的 BinaryView,使其表现如同真正的工作区工具。 - 使用 Binary Ninja 的语法着色进行语法高亮的 gadget 渲染。 - 分类下拉菜单,涵盖所有 gadget、pop、mov、call、stack pivot、分支以及 `leave`。 - 跨 gadget 文本和地址的文本过滤。 - 支持多行选择,可通过 `Ctrl+C` / `Cmd+C` 复制地址。 - 可选的短地址显示,自动去除前导零。 - 可配置的 gadget 回溯、去重、跳转 gadget 以及 `leave` gadget。 - 对可执行范围进行更快的有限扫描,支持已解码指令的缓存与取消操作。 ## 安装 将此代码仓库克隆到您的 Binary Ninja 插件目录中: ``` git clone https://github.com/alessaba/ROPNinja.git "$HOME/Library/Application Support/Binary Ninja/plugins/ROPNinja" ``` 重启 Binary Ninja,然后打开 `ROPNinja` 侧边栏按钮。 ### 平台路径 - macOS: `$HOME/Library/Application Support/Binary Ninja/plugins/ROPNinja` - Linux: `$HOME/.binaryninja/plugins/ROPNinja` - Windows: `%APPDATA%\Binary Ninja\plugins\ROPNinja` ## 使用方法 1. 在 Binary Ninja 中打开一个二进制文件。 2. 点击 `ROPNinja` 侧边栏图标,或将其作为分层面板打开。 3. 按下 `Find` 来发现当前 BinaryView 的 gadget。 4. 使用下拉菜单或搜索字段进行过滤。 5. 选择一行或多行,然后按下 `Ctrl+C` / `Cmd+C` 来复制地址。 6. 双击 gadget 以导航到其地址。 ## 设置 ROPNinja 注册了规范的 `ropninja.*` 设置: - `ropninja.maxPreviousBytes`:从返回指令向后回溯的最大字节数。 - `ropninja.deduplicateGadgets`:隐藏重复的 gadget 文本。 - `ropninja.includeBranches`:包含带有 `jmp` 或条件跳转的 gadget。 - `ropninja.includeLeave`:包含带有 `leave` 的 gadget。 - `ropninja.stripAddressZeros`:在侧边栏中显示紧凑的地址格式。 ## 为什么跳转和 `leave` 默认被禁用? 经典的 ROP 挖掘通常需要以 `ret` 结尾的简短且可预测的链。跳转指令对于 JOP 或特殊的控制流技巧非常有用,而 `leave` 对于 stack pivot 很有价值,但这两者在日常 ROP 搜索中都会增加大量的噪音。 ROPNinja 默认将它们关闭以保留有效信号,并在您需要这些额外攻击面时通过显式设置将它们开放出来。 ## 项目状态 ROPNinja 正在积极开发中,旨在成为一流的 Binary Ninja ROP 工作流。目前的重点是: - 更丰富的 gadget 分类; - 更好的复制/导出格式; - 基于架构感知的搜索改进; - 键盘优先的表格导航; - 以及与 Binary Ninja UI 更紧密的集成。 ## 致谢 - 原始项目:由 m4ul3r 开发的 [`binja_rop`](https://github.com/m4ul3r/binja_rop)。 - 灵感来源:由 zznop 开发的 [`binjago`](https://github.com/zznop/binjago)。 - 重构及当前发展方向:Alessaba。 ## 许可证 MIT。详见 [LICENSE](LICENSE)。
标签:Binary Ninja, DAST, Exploit Development, GUI, ROP gadget, ROP链, Split Pane, Stack Pivot, 二进制分析, 二进制插桩, 云安全运维, 云资产清单, 侧边栏, 回溯, 地址去重, 安全, 恶意软件分析, 指令缓存, 插件, 栈溢出, 汇编, 超时处理, 过滤, 逆向工具, 逆向工程