u=1180556182,3315713259&fm=21&gp=0.jpg

rop-tool是一款能帮助你制作二进制exp的工具。

选项

使用方法:

rop-tool <cmd> [OPTIONS]

命令:

  gadget         搜索小工具

  patch         为二进制文件打补丁

  info           打印二进制文件信息

  heap          显示堆结构

  disassemble    反汇编二进制文件

  search         在二进制文件里搜索

  help           打印帮助信息

  version         打印版本

小工具(gadget)命令

用法:

rop-tool gadget [OPTIONS] [FILENAME]

选项:

 –arch, -A             选择系统架构 (x86,x86-64, arm, arm64)

  –all,-a                打印全部小工具

 –depth, -d         [d]  指定小工具搜索的深度(默认是5)

 –flavor, -f        [f]  选择一种风格 (att或者 intel)

 –no-filter, -F          不要在小工具上运用过滤器

 –help, -h             打印帮助信息

 –no-color, -N          不用多彩输出

搜索命令

用法:

rop-tool search [OPTIONS] [FILENAME]

选项:

–all-string, -a    [n]  搜索所有可打印的字符串,至少N个特征 (N默认值为 6)

 –byte, -b          [b]  搜索二进制文件里的byte

 –dword, -d         [d]  搜索二进制文件里的dword

 –help, -h               打印帮助信息

 –no-color, -N        不要多彩输出

 –qword, -q         [q]  搜索二进制文件里的qword

 –raw, -r                忽略格式限制,以raw格式打开文件

 –split-string, -s  [s]  在内存里搜索一个不连续的字符串

 –string, -S        [s]  搜索二进制文件里的字符串(一个字节序列)

 –word, -w          [w]  搜索二进制文件里的word

补丁命令

用法:

rop-tool patch [OPTIONS] [FILENAME]

选项:

 –address, -a       [a]  选择打补丁的address

 –bytes, -b         [b] 一个要写的比特序列 (比如:“\xaa\xbb\xcc”)

 –filename, -f      [f]  指定文件名

 –help, -h          打印帮助信息

 –offset, -o        [o]  选择补丁的偏移(从文件的起始算)

 –output, -O        [o]  另存为的文件名

 –raw, -r             raw模式打开文件

信息命令

用法:

rop-tool info [OPTIONS] [FILENAME]

选项:

 –all, -a                显示所有信息

 –segments, -l           显示segment

 –sections, -s           显示section

 –syms, -S              显示symbol

 –filename, -f      [f]   指定文件名

 –help, -h               打印帮助信息

 –no-color, -N           禁用多彩

帮助命令

用法:

rop-tool heap [OPTIONS] [COMMAND]

选项:

 –calloc, -C             跟踪calloc回调

  –free, -F               跟踪free回调

 –realloc, -R            跟踪realloc回调

 –malloc, -M             跟踪malloc回调

 –dumpdata, -d         dump chunk的数据

 –output, -O             输出到文件

 –help, -h               打印帮助信息

 –tmp, -t        <d>    指定可写目录来dump库(默认值:/ tmp/)

 –no-color, -N           禁用多彩

堆命令的解释说明

每一行对应一个malloc chunk,在每一个堆函数(free, malloc, realloc, calloc)执行后会进行dump。

Addr:malloc chunk的真实地址

usr_addr:malloc函数返回给用户的地址

size:malloc chunk的大小

flags:

P == PREV_INUSE

M == IS_MAPED

A == NON_MAIN_ARENA

反汇编命令

用法:

rop-tool dis [OPTIONS] [FILENAME]

选项:

 –help, -h              打印帮助信息

 –no-color, -N           禁用多彩

 –address, -a    <a>     反汇编的起始地址<a>

 –offset, -o     <o>     反汇编的偏移<o>

 –sym, -s        <s>     反汇编symbol

 –len, -l        <l>    仅反汇编byte<l>

  –arch,-A       <a>     选择系统架构 (x86, x86-64,arm, arm64)

  –flavor,-f     <f>      选择风格 (intel,att)

特性

字符串特性、小工具搜索、补丁、信息、堆可视化、反汇编

多彩输出

Intel and AT&T风格

ELF、PE和MACH-O二进制格式支持

高低字节序的支持

x86、x86_64、ARM和ARM64系统架构的支持

实例用法演示

基础小工具搜索:

rop-tool gadget ./program

显示AT&T语法的小工具:

rop-tool gadget ./program -f att –a

Raw模式搜索x86文件:

rop-tool gadget ./program -A x86

在二进制文件里搜索不连续的字符串:

rop-tool search ./program -s "/bin/sh"

在二进制文件里搜索全部字符串:

rop-tool search ./program –a

在偏移0×1000处打补丁”\xaa\xbb\xcc\xdd” ,然后保存为 ”patched”:

rop-tool patch ./program -o 0x1000 -b"\xaa\xbb\xcc\xdd" -O patched

堆可视化分配/bin/ls命令:

rop-tool heap /bin/ls

在地址0×08048452处反汇编0×100 byte:

rop-tool dis /bin/ls -l 0x100 -a 0x08048452

演示截屏

rop-tool gadget /bin/ls

1.png

rop-tool search /bin/ls –a

2.png

rop-tool search /bin/ls -s"/bin/sh\x00"

3.png

rop-tool search /bin/ls -w 0x90

4.png

rop-tool heap ./a.out

5.png

rop-tool dis ./bin  # 多格式

6.png

读者如何贡献项目:

1.写代码(需要思路时看TODO文件)

2. 报告bug

3.优化文档

4.提交新思路

代码依赖:

capstone

Release发布:

https://t0x0sh.org/rop-tool/releases/

Git地址:

https://github.com/t00sh/rop-tool.git

作者:

tosh@t0x0sh.org