当前位置: 首页 > 科技观察

Reverse

时间:2023-03-14 08:17:14 科技观察

逆向工程工具Reverse是一种用于解析二进制文件的逆向工程工具,它可以生成更具可读性的代码(类C语言),带有颜色编码的语法,便于研究人员阅读代码。目前,其交互方式还在进一步开发中。支持架构Architecture:x86,ARM,MIPS文件格式:ELF,PE,RAWGitHub中也提供了一个Makefile用于测试,详情请点击链接:Makefile。使用环境要求1、python版本需要3.4以上;2.自带Capstone反汇编框架,可提供丰富的反汇编说明;3.有解析ELF文件的python-pyelftools模块(ELF文件除机器码外,还包含其他附加信息,如段加载地址、运行地址、重定位表、符号表等)和DWARF调试信息。详情请点击链接:pyelftools;4、自带python-pefile模块,用于解析PE文件(如exe、dll、vxd、sys、vdm等),详情请点击链接:PEfile;5、用python-msgpack模块进行序列化操作,详情请点击链接:msgpack;6、带256色端子;您可以通过运行requirements.sh、requirements.sh来检查是否满足所有要求。类反编译功能因为符号main包含在二进制文件中,所以-xmain是可选的。具体使用如下,$./reverse.pytests/server.bin交互模式有更多的命令可以在该模式下使用(da、db等),当然我们也可以通过help查看更多的命令。TODOlist1.添加命令:setbe/setlerawbase(针对原始文件格式);2.如果从shell中获取的文件是raw文件,加载它。可视化模式在交互模式下,我们可以通过命令v切换到可视化模式。但是这种模式需要ncurses动态库的支持。其中,1.代码/函数的定义2.内联注释3.外部引用TODO列表1.分析器修改代码时,会自动重载;2.多行注释;3.创建数据/数组;4.符号重命名;5.堆栈变量;6.结构体、枚举;7、提高分析仪的性能。Switch-跳转表示例Switch语句的使用需要一个switch表,但它不能被自动检测到。所以我们需要告诉它使用哪个跳转表。具体操作如下,$./reverse.py-itests/others/switch.bin>>x...>>jmptable0x4005260x400620118#Ajump-tableat0x400620issetwith11entries,anaddressison8bytes.>>x#DecompilationwithswitchanalyzeshellcodewhereforeachInt0×80、这个工具会尝试检测syscall函数$./reverse.py--rawx86tests/shellcode.binfunction0x0{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/dwhile1.bin--vimRun:vimdwhile1.bin.rev-Sdwhile1.bin.vimGitHub下载链接:GitHub。