c语言反向工程软件,逆向工程工具之Reverse
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相关推荐
- 好用的C语言编程软件!工具都没有,怎么用技术改变世界呢!
好用的C语言编程软件 1.VS(Visual Studio) VS是目前最流行的windows平台应用程序的集成开发环境,由于大部分同学使用的都是Windows操作系统,VS对于大家来说是极为合适的, ...
- 实训9.2. JDK——java语言的软件开发工具包(JAVA的运行环境(JVM+Java系统类库)和JAVA工具) 【java开发的核心】...
一.概念 JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工 ...
- Enterprise Architect(EA) 软件建模工具
1介绍 生命 周期 软件设计方案-- Enterprise Architect是以目标为导向的 软件系统.它覆盖了系统开发的整个 周期,除了开发类模型之外,还包括事务进程分析,使用案例需求, 动态模型 ...
- 天翼云从业认证(1.8)了解软件开发的环境、软件基础架构和常用软件开发工具
常用开发环境 软件是一系列按照特定顺序组织的计算机数据和指令的集合. 软件特点 软件开发流程:调研沟通/获取需求.需求分析.产品设计.界面设计.设计原型图.程序编码.测试.打包发布.产品上线 软件开发 ...
- 软件逆向工程学习(一)
前言 本专题学习软件逆向的基本原理.方法,并针对具体案例进行逆向分析,从而学习一套完整.系统的软件逆向的方法并获取相关经验. 什么是逆向工程 逆向工程(又称逆向技术),是一种产品设计技术再现过程,即对 ...
- 软件加密工具-Virbox 开发者工具盒
功能 Virbox 开发者工具盒是由深思数盾研发的一套软件加密工具,将加壳工具.API文档及操作流程文档等集成在一起,方便软件开发者使用. 您可以通过 Virbox 开发者工具盒实现: dll.exe ...
- 26款优秀的Android逆向工程工具
转自:点http://www.freebuf.com/sectool/111532.html 工欲善其事必先利其器,好的Android逆向工程工具在逆向破解工程中起到事半功倍的作用. 1. SMALI ...
- 软件逆向工程:破解教程(1/24)
软件逆向工程:破解教程(1/24) 想学破解,花了很多时间还是没有多少进步?网上很多教程,看来看去,到头来还是一头雾水?其实,很正常,不是你的问题,是没有遇到能教会你的人!我刚刚入门时,在学习中遇到过 ...
- linux c语言工具,Linux下C语言编程环境的工具.doc
Linux下C语言编程环境的工具 Linux下C语言编程环境的工具 Linux下C语言编程环境的工具 要想在Linux下进行C语言编程,首先得搭建好一个编程环境.这里分别说明一下几个非常有用的软件包. ...
- 把python语言翻译出来_Python语言实现翻译小工具(Python打包成exe文件)
本文主要向大家介绍了Python语言实现翻译小工具(Python打包成exe文件),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 1.环境 windows10 python3.5 ...
最新文章
- (转)Lucene.NET 使用
- 多线程:Immutable对象?如何创建Immutable对象?
- 专访 | 执拗、纯粹的网易阮良,和他的梦想团队
- virtualenv杂记
- 转-Appium—驱动和常用功能的封装
- 让vs2008支持jQuery的智能提示!
- Docker运行操作系统环境(BusyBoxAlpineDebian/UbuntuCentOS/Fedora)
- mysql设置输出格式_rsyslog 配置mysql输出格式
- webrtc-sdp编码信息协商
- 笔记本用PCIE转并口卡连接H-JTAG烧写PXA270 NOR Flash
- 落枫推荐:firefox插件firebug的8个最优秀扩展
- C语言-书籍资料汇总
- OSPF -LSA的类型及特点
- 输入一个数并正序、反序输出。 例如:输入123,输出123 321。
- yocs_velocity_smoother速度平滑库知识
- 五年级上册《桂花雨》教案
- 010Editor十六进制转图片(攻防演练-决定用和决一死战)
- 桌面云、云桌面的区别
- 这些管理学定律你知多少?
- Xcode5 开发入门-环境及初体验