rp 简介:
rp 是一个全cpp编写的工具,目的是在PE/Elf/Mach-O(不支持FAT二进制文件)x86/x64二进制文件中查找ROP序列。它是开源的,用Doxygen记录了下来(嗯,我正在尝试..)并且已经在几个操作系统上测试过:debian / Windows 7 / FreeBSD / Mac OSX狮子(10.7.3)。此外,它与x64兼容。我差点忘了,它同时处理英特尔和AT&T语法。顺便说一下,该工具是一个独立的可执行文件;我将为每个操作系统上传静态编译的二进制文件。
你可以很容易地用CMake构建rp 程序,它会为你喜欢的IDE生成一个项目文件。用rp 你还可以做一些其他的事情,比如查找十六进制值或者字符串等等。
此外,我真正喜欢rp 的酷的地方是,我可以在我的Windows桌面上的ELF/Mach-O上找到ROP小工具——我不需要启动我的虚拟机并设置一个绑定安装,或者安装免疫数据库。
高效:
是的,以下是我在个人笔记本电脑(Win7 x64、英特尔i7 Q720 @ 1.6千兆赫、4GB内存)上完成的一些基准测试:
- Target: ntoskrnl.exe x64 version 6.1.7601.17790
D:\rp-win-x64.exe --file=ntoskrnl.exe --rop=8 > n
~80s for a total of 267356 gadgets found.
- Target: chrome.exe x86 version 18.0.1025.168
D:\rp-win-x64.exe --file=chrome.exe --rop=8 > n
~13s for a total of 75459 gadgets found.
- Target: cmd.exe x86 version v6.1.7600
D:\rp-win-x64.exe --file=cmd.exe --rop=8 > n
~15s for a total of 18818 gadgets found.
- Target: bash x86 version 4.1.5.1
D:\rp-win-x64.exe --file=bash-x86 --rop=8 > n
~12s for a total of 45385 gadgets found.
如何使用它?
用法:
./rp [-hv] [-f <binary path>] [-i <1,2,3>] [-r <positive int>] [--raw=<archi>]
[--atsyntax] [--unique] [--search-hexa=<\x90A\x90>] [--search-int=<int in hex>]
选项:
-f, --file=<binary path> 给二进制文件的路径
-i, --info=<1,2,3> 显示有关二进制标头的信息
-r, --rop=<positive int> 找到有用的小工具为您的未来利用,arg是小工具的最大尺寸的指令在一个原始文件中查找小工具,
--raw=<archi> ‘archi’必须在如下列表中:x86,
--atsyntax 启用at&t语法
--unique 只显示独特的小工具
--search-hexa=<\x90A\x90> 尝试查找十六进制值
--search-int=<int in hex> 尝试查找特定整数值
-h, --help 帮助
-v, --version 版本信息
在哪里下载独立的二进制文件?
我已经生成了一个x86和x64版本的窗口(在Win7 x64上用VS 2010编译)、Linux(在Debian x64 6.0.1上用gcc 4.4.5编译)、FreeBSD(在FreeBSD 8.2上用gcc 4.2.1编译)和麦克OSX(在OSX 10.7.3上用gcc 4.2.1编译;没有静态链接):https://github.com/0vercl0k/rp/downloads
以下是sha1sums:
a2e71e88a5c14c81ae184258184e5d83082f184d *rp-fbsd-x64
29c2d5462865d28042bffe9e723d25c19f0da1f7 *rp-fbsd-x86
57e23ef42954a08c9833099d87544e2166c58b94 *rp-lin-x64
efcaf2a9584a23559e3e5b109eb37cbde89f8b29 *rp-lin-x86
5c612b3eff470b613ea06ebbbb882f0aaef8e3b4 *rp-osx-x64
2e32273b657b44d6b9a56e89ec2e2c2731713d87 *rp-osx-x86
e5e6930eb469e92f79b59941330f23daf62800be *rp-win-x64.exe
f83d4d9f9e73a60a31e495e2fbd2404c560f1a27 *rp-win-x86.exe
接触:
实际上,我真的很想改进这个项目,所以真的,如果你对这个工具有任何意见(包括:功能请求,错误报告或者给我买啤酒),请随时联系我——你可以通过IRC/推特/电子邮件联系我!
如果你有编码的酷特性,并且你想分享它们,发送给我合并查询,如果我喜欢它们,我会合并它们。
感谢测试员:伊凡尔斯、赫尔斯、乌法克斯和爸爸。感谢:亚历山大·休默指出了IA64的错误,巴邦(MZ签名),纳克(打字错误),特伦斯(搜索中的输出错误)。
【文章来源】:
https://github.com/0vercl0k/rp
推荐文章++++