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.py tests/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-i tests/others/switch.bin>>x...>>jmptable0x4005260x400620118# A jump-table at 0x400620 is set with 11 entries, an address is on 8 bytes.>>x# Decompilation with switch

分析shellcode

其中对于每一个Int 0×80,该工具都会尝试通过参数检测syscall函数

$./reverse.py--raw x86 tests/shellcode.bin

function0x0{0x0:eax=0# xor eax, eax0x2:al='\x0b'# mov al, 0xb0x4:cdq0x5:push edx0x6:push1752379246"n/sh"0xb:push1768042287"//bi"0x10:ebx=esp# mov ebx, esp0x12:push edx0x13:push ebx0x14:ecx=esp# mov ecx, esp0x16:int128;execve(ebx,ecx,edx)# int 0x80}

使用VIM进行编辑

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

$./reverse tests/dowhile1.bin--vimRun:vim dowhile1.bin.rev-S dowhile1.bin.vim

GitHub 下载链接:GitHub。

【责任编辑:蓝雨泪 TEL:(010)68476606】

点赞 0

c语言反向工程软件,逆向工程工具之Reverse相关推荐

  1. 好用的C语言编程软件!工具都没有,怎么用技术改变世界呢!

    好用的C语言编程软件 1.VS(Visual Studio) VS是目前最流行的windows平台应用程序的集成开发环境,由于大部分同学使用的都是Windows操作系统,VS对于大家来说是极为合适的, ...

  2. 实训9.2. JDK——java语言的软件开发工具包(JAVA的运行环境(JVM+Java系统类库)和JAVA工具) 【java开发的核心】...

    一.概念 JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工 ...

  3. Enterprise Architect(EA) 软件建模工具

    1介绍 生命 周期 软件设计方案-- Enterprise Architect是以目标为导向的 软件系统.它覆盖了系统开发的整个 周期,除了开发类模型之外,还包括事务进程分析,使用案例需求, 动态模型 ...

  4. 天翼云从业认证(1.8)了解软件开发的环境、软件基础架构和常用软件开发工具

    常用开发环境 软件是一系列按照特定顺序组织的计算机数据和指令的集合. 软件特点 软件开发流程:调研沟通/获取需求.需求分析.产品设计.界面设计.设计原型图.程序编码.测试.打包发布.产品上线 软件开发 ...

  5. 软件逆向工程学习(一)

    前言 本专题学习软件逆向的基本原理.方法,并针对具体案例进行逆向分析,从而学习一套完整.系统的软件逆向的方法并获取相关经验. 什么是逆向工程 逆向工程(又称逆向技术),是一种产品设计技术再现过程,即对 ...

  6. 软件加密工具-Virbox 开发者工具盒

    功能 Virbox 开发者工具盒是由深思数盾研发的一套软件加密工具,将加壳工具.API文档及操作流程文档等集成在一起,方便软件开发者使用. 您可以通过 Virbox 开发者工具盒实现: dll.exe ...

  7. 26款优秀的Android逆向工程工具

    转自:点http://www.freebuf.com/sectool/111532.html 工欲善其事必先利其器,好的Android逆向工程工具在逆向破解工程中起到事半功倍的作用. 1. SMALI ...

  8. 软件逆向工程:破解教程(1/24)

    软件逆向工程:破解教程(1/24) 想学破解,花了很多时间还是没有多少进步?网上很多教程,看来看去,到头来还是一头雾水?其实,很正常,不是你的问题,是没有遇到能教会你的人!我刚刚入门时,在学习中遇到过 ...

  9. linux c语言工具,Linux下C语言编程环境的工具.doc

    Linux下C语言编程环境的工具 Linux下C语言编程环境的工具 Linux下C语言编程环境的工具 要想在Linux下进行C语言编程,首先得搭建好一个编程环境.这里分别说明一下几个非常有用的软件包. ...

  10. 把python语言翻译出来_Python语言实现翻译小工具(Python打包成exe文件)

    本文主要向大家介绍了Python语言实现翻译小工具(Python打包成exe文件),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 1.环境 windows10 python3.5 ...

最新文章

  1. (转)Lucene.NET 使用
  2. 多线程:Immutable对象?如何创建Immutable对象?
  3. 专访 | 执拗、纯粹的网易阮良,和他的梦想团队
  4. virtualenv杂记
  5. 转-Appium—驱动和常用功能的封装
  6. 让vs2008支持jQuery的智能提示!
  7. Docker运行操作系统环境(BusyBoxAlpineDebian/UbuntuCentOS/Fedora)
  8. mysql设置输出格式_rsyslog 配置mysql输出格式
  9. webrtc-sdp编码信息协商
  10. 笔记本用PCIE转并口卡连接H-JTAG烧写PXA270 NOR Flash
  11. 落枫推荐:firefox插件firebug的8个最优秀扩展
  12. C语言-书籍资料汇总
  13. OSPF -LSA的类型及特点
  14. 输入一个数并正序、反序输出。 例如:输入123,输出123 321。
  15. yocs_velocity_smoother速度平滑库知识
  16. 五年级上册《桂花雨》教案
  17. 010Editor十六进制转图片(攻防演练-决定用和决一死战)
  18. 桌面云、云桌面的区别
  19. 这些管理学定律你知多少?
  20. Xcode5 开发入门-环境及初体验

热门文章

  1. lqr控制和模糊控制三级倒立摆
  2. Word VBA-表格操作汇总
  3. 项目中常用字典表 —— 各个国家简称映射
  4. java 针式打印_JAVA针式打印机打印整理
  5. 机器人学导论复习笔记
  6. 金蝶K3WISE15.1开启WEBAPI
  7. 信息安全原理与技术第七次实验:木马攻击与防范
  8. Directx8 学习笔记
  9. 命令行调用SQL查询分析器
  10. 个人--2015 关于管理的书