首页 未命名正文

逆向工程工具之Reverse

Reverse它是一种逆向工程工具,用于分析二进制文件,可以生成更可读的代码(类别)C语言)语法和彩色标志,方便研究人员阅读代码。目前,其交互模式仍在进一步发展中。

逆向工程工具之Reverse

支撑架构

架构: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

逆向工程工具之Reverse

交互模式

在这种模式下,可以使用更多的命令(da,db等等),当然,我们也可以通过help查看更多命令。

TODO列表

1、添加命令:setbe/setle rawbase(用于原文件格式)shell获得的文件是raw加载文件。

视觉模式

在交互模式下,我们可以使用命令 v 切换到视觉模式。但这种模式需要ncurses支持动态库。

其中支持,

1、代码/功能定义2.内联注释3。外部参考

TODO列表

1、修改代码时,自动重载;2.多行注释;3.创建数据/数组;4.重命名符号;5.堆栈变量;6.结构和枚举;7.提高分析师的性能。

逆向工程工具之Reverse

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

function0x0{0x0:eax=0#xoreax,eax0x2:al='\x0b'#moval,0xb0x4:cdq0x5:pushedx0x6:push1752379246"n/sh"0xb:push1768042287"//bi"0x10:ebx=esp#movebx,esp0x12:pushedx0x13:pushebx0x14:ecx=esp#movecx,esp0x16:int128;execve(ebx,ecx,edx)#int0x80}

使用VIM进行编辑

***再通过使用VIM编辑具体参考如下,

$./reversetests/dowhile1.bin--vimRun:vimdowhile1.bin.rev-Sdowhile1.bin.vim

GitHub 下载链接:GitHub。

   
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。