## 工具介绍
ROPgadget工具可以帮助你寻找合适的gadgets,在编写你的ROP exp的时候有很大作用。
ROPgadget支持 x86, x64, ARM, ARM64, PowerPC, SPARC和MIPS架构下的ELF/PE/Mach-O文件格式。
## 工具安装
安装pwntools自带
## 基本用法
```
<pre class="wp-block-code">```bash
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]
```
```
### <a></a>参数
```
```bash
-h, --help 显示帮助文档
-v, --version 版本号
-c, --checkUpdate 检测新版本是否可用
--binary 指定二进制文件进行分析
--opcode 在可执行段中查找opcode
--string 在可读的段中查找字符串
--memstr 查找单个byte在所有的可执行段中
--depth 搜索引擎的深度
--only 只显示特别的指令
--filter 过滤特定指令
--range 在地址之间寻找(0x...-0x...)
--badbytes 拒绝特定指令在gadget的地址下
--rawArch 指定文件架构
--rawMode 指定源文件的mode
--rawEndian 指定源文件的endianness
--re 正则表达式
--offset 指定gadget的地址偏移
--ropchain ROP chain的生成
--thumb 在ARM架构下使用搜索引擎thumb 模式
--console 使用交互终端对于搜索引擎
--norop 禁止ROP搜索引擎
--nojop 禁止JOP搜索引擎
--callPreceded 仅显示call-preceded的gadgets
--nosys 禁止SYS搜索引擎
--multibr 允许多分枝gadgets
--all 禁止删除重复的gadgets,即显示所有
--noinstr 禁止gadget指令终端打印
--dump 输出gadget bytes
```
```
## 用法示例
寻找控制寄存器的gadgets:
```
```bash
$ ROPgadget --binary --only 'pop|ret' | grep
```
```
寻找保存`int80`的地址:
```
```bash
$ ROPgadget --binary --only 'int'
```
```
寻找保存`'/bin/sh'`的地址:
```
```bash
$ ROPgadget --binary --string '/bin/sh'
```
```