Reverse是一个用来解析二进制文件的逆向工程工具,而且它可以生成更具可读性的代码(类C语言)并带有彩色标识的语法,便于研究人员进行阅读代码。目前,其交互模式仍在做进一步开发。
Reverse是一个用来解析二进制文件的逆向工程工具,而且它可以生成更具可读性的代码(类C语言)并带有彩色标识的语法,便于研究人员进行阅读代码。目前,其交互模式仍在做进一步开发。
支撑架构
架构:x86, ARM, MIPS 文件格式:ELF, PE, RAW 在GitHub中,也提供了一个Makefile作为测试之用,详细请点击链接:Makefile。
使用环境要求
1、python 版本需要在 3.4及以上版本; 2、具备capstone反汇编框架,其能提供丰富的反汇编指令; 3、具备python-pyelftools模块,用于解析ELF文件(ELF文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等)以及DWARF调试信息,详细请点击链接:pyelftools; 4、具备python-pefile模块,以用于解析PE文件(如exe、dll、vxd、sys和vdm等),详细请点击链接:PEfile; 5、具备python-msgpack模块,用于序列化运算,详细请点击链接:msgpack; 6、具备256色终端;
你可以通过运行requirements.sh检测是否符合所有的要求,requirements.sh。
类反编译功能
因为二进制文件中包含了符号型的main,所以其中的-x main是可选的。具体使用如下,
$./reverse.pytests/server.bin
交互模式
在此模式下有更多的命令可以使用(da,db等),当然我们也可以通过help查看更多的命令。
TODO列表
1、添加命令:setbe/setle rawbase(用于原文件格式); 2、如果从shell获取的文件为raw文件,则进行加载。
视觉模式
在交互模式中,我们可以通过使用命令 v 来切换到视觉模式。但该模式需要ncurses动态库的支持。
其中支持,
1、代码/功能的定义 2、内联注释 3、外部参照
TODO列表
1、当分析器修改代码时,自动进行重载; 2、多行注释; 3、创建数据/数组; 4、符号重命名; 5、堆栈变量; 6、结构、枚举; 7、提高分析器的性能。
Swich-跳转表举例
Switch语句的使用需要跳转表,但其不能自动检测。所以我们需要告诉它使用哪一个跳转表。具体操作如下,
$./reverse.py-itests/others/switch.bin >>x ...>>jmptable0x4005260x400620118 #Ajump-tableat0x400620issetwith11entries,anaddressison8bytes.>>x #Decompilationwithswitch
分析shellcode
其中对于每一个Int 0×80,该工具都会尝试通过参数检测syscall函数
$./reverse.py--rawx86tests/shellcode.bin
使用VIM进行编辑function0x0{
0x0:eax=0#xoreax,eax
0x2:al='\x0b'#moval,0xb
0x4:cdq
0x5:pushedx
0x6:push1752379246"n/sh"
0xb:push1768042287"//bi"
0x10:ebx=esp#movebx,esp
0x12:pushedx
0x13:pushebx
0x14:ecx=esp#movecx,esp
0x16:int128;execve(ebx,ecx,edx)#int0x80}
***再通过使用VIM进行编辑,具体参考如下,
$./reversetests/dowhile1.bin--vim Run:vimdowhile1.bin.rev-Sdowhile1.bin.vim
GitHub 下载链接:GitHub。
知优网 » 逆向工程工具之Reverse(软件逆向工程工具)