Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ROPgadget — 在ELF、PE、Mach-O和Raw二进制文件中搜索ROP gadgets,支持x86、ARM、MIPS和RISC-V架构。支持自动ROP链生成和交互式控制台模式。 | Kitploit
工具/GitHubGitHub/jonathansalwan/ropgadget
Payload生成漏洞利用逆向工程CTF二进制分析二进制利用二进制分析 分类第 18 名二进制利用 分类第 5 名CTF 分类第 8 名逆向工程 分类第 16 名
4.5k579393个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHubjonathansalwan/ropgadget

ROPgadget

在ELF、PE、Mach-O和Raw二进制文件中搜索ROP gadgets,支持x86、ARM、MIPS和RISC-V架构。支持自动ROP链生成和交互式控制台模式。

查看仓库

ROPgadget 工具

此工具允许你在二进制文件中搜索 gadget,以便于进行 ROP 利用。ROPgadget 支持 ELF/PE/Mach-O/Raw 格式,涵盖 x86、x64、ARM、ARM64、PowerPC、SPARC、MIPS、RISC-V 64 以及 RISC-V 压缩架构。

安装

最简单的方法是从 PyPi 安装 ROPgadget:

$ sudo apt install python3-pip
$ sudo -H python3 -m pip install ROPgadget
$ ROPgadget --help

或者,你也可以从源码安装 ROPgadget。 首先需要安装 Capstone。

在 nix 机器上安装 Capstone:

$ sudo apt install python3-pip
$ sudo -H python3 -m pip install capstone

Capstone 支持多种平台(Windows、iOS、Android、Cygwin 等)。关于交叉编译,请参考 https://github.com/capstone-engine/capstone/blob/master/COMPILE.TXT 文件。

安装 Capstone 后,ROPgadget 可以作为独立工具使用:

$ python3 ROPgadget.py --help

或者安装到 Python 的 site-packages 库中,并从 $PATH 执行。

$ sudo -H python3 setup.py install
$ ROPgadget --help

使用方法

usage: ROPgadget.py [-h] [-v] [-c] [--binary <binary>] [--opcode <opcodes>]
                    [--string <string>] [--memstr <string>] [--depth <nbyte>]
                    [--only <key>] [--filter <key>] [--range <start-end>]
                    [--badbytes <byte>] [--rawArch <arch>] [--rawMode <mode>]
                    [--rawEndian <endian>] [--re <re>] [--offset <hexaddr>]
                    [--ropchain] [--thumb] [--console] [--norop] [--nojop]
                    [--callPreceded] [--nosys] [--multibr] [--all] [--noinstr]
                    [--dump] [--silent] [--align ALIGN] [--mipsrop <rtype>]

描述:
  ROPgadget 让你能够在二进制文件中搜索 gadget。它支持多种文件格式和架构,并使用 Capstone 反汇编引擎进行搜索。

支持的格式:
  - ELF
  - PE
  - Mach-O
  - Raw

支持的架构:
  - x86
  - x86-64
  - ARM
  - ARM64
  - MIPS
  - PowerPC
  - Sparc
  - RISC-V 64
  - RISC-V 压缩架构

可选参数:
  -h, --help            显示此帮助信息并退出
  -v, --version         显示 ROPgadget 的版本
  -c, --checkUpdate     检查是否有新版本可用
  --binary <binary>     指定要分析的二进制文件名
  --opcode <opcodes>    在可执行段中搜索操作码
  --string <string>     在可读段中搜索字符串
  --memstr <string>     在所有可读段中搜索每个字节
  --depth <nbyte>       搜索引擎的深度(默认为 10)
  --only <key>          仅显示特定的指令
  --filter <key>        排除特定的助记符
  --range <start-end>   在两个地址之间搜索(0x...-0x...)
  --badbytes <byte>     拒绝 gadget 地址中的特定字节
  --rawArch <arch>      为原始文件指定架构
                        x86|arm|arm64|sparc|mips|ppc|riscv
  --rawMode <mode>      为原始文件指定模式 32|64|arm|thumb
  --rawEndian <endian>  为原始文件指定字节序 little|big
  --re <re>             正则表达式
  --offset <hexaddr>    为 gadget 地址指定偏移量
  --ropchain            启用 ROP 链生成
  --thumb               为搜索引擎使用 Thumb 模式(仅 ARM)
  --console             使用交互式控制台进行搜索
  --norop               禁用 ROP 搜索引擎
  --nojop               禁用 JOP 搜索引擎
  --callPreceded        仅显示调用前置的 gadget
  --nosys               禁用 SYS 搜索引擎
  --multibr             启用多分支 gadget
  --all                 禁用重复 gadget 的移除
  --noinstr             禁用 gadget 指令的控制台打印
  --dump                输出 gadget 的字节
  --silent              在分析过程中禁用 gadget 的打印
  --align ALIGN         对齐 gadget 地址(以字节为单位)
  --mipsrop <rtype>     MIPS 有用的 gadget 查找器
                        stackfinder|system|tails|lia0|registers

示例:
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --ropchain
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --depth 3
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --string "main"
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --string "m..n"
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --opcode c9c3
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --only "mov|ret"
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --only "mov|pop|xor|ret"
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --filter "xchg|add|sub|cmov.*"
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --norop --nosys
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --range 0x08041000-0x08042000
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --string main --range 0x080c9aaa-0x080c9aba
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --memstr "/bin/sh"
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --console
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --badbytes "00|01-1f|7f|42"
  ROPgadget.py --binary ./test-suite-binaries/Linux_lib64.so --offset 0xdeadbeef00000000
  ROPgadget.py --binary ./test-suite-binaries/elf-ARMv7-ls --depth 5
  ROPgadget.py --binary ./test-suite-binaries/elf-ARM64-bash --depth 5
  ROPgadget.py --binary ./test-suite-binaries/raw-x86.raw --rawArch=x86 --rawMode=32
  ROPgadget.py --binary ./test-suite-binaries/elf-Linux-RISCV_64 --depth 8

我如何贡献?

  • 为 PPC、Sparc、ARM64 添加系统 gadget(Gadgets.addSYSGadgets())。
  • 支持 RISC-V 32 位。
  • 在 ROP 链生成过程中处理数据中的坏字节。
  • 像 ELF 类一样处理 Mach-O 格式的大端序。
  • 任何你认为很酷的想法 :)

Bug / 补丁 / 联系

请通过 GitHub 报告 bug、提交 pull request 等:https://github.com/JonathanSalwan/ROPgadget

许可证

参见 LICENSE_BSD.txt 以及所有源文件中的许可证头。

截图

x64

ARM

Sparc

MIPS

PowerPC

ROP chain

下载工具