逆向工程
以设计方法学为指导,以现代设计理论、方法、技术为基础,运用各种专业人员的工程设计经验、知识和创新思维,对已有产品进行解剖、深化和再创造。
逆向工程不仅仅在计算机行业、各行各业都存在逆向工程。
计算机行业逆向工程
计算机行业中的逆向工程有两种分类:1、硬件逆向;2、软件逆向;
软件逆向包括:系统级逆向和代码级逆向。
软件逆向工程
软件逆向工程是通过反汇编和调试等手段,分析计算机程序的二进制可执行代码从而获得程序的算法细节和实现原理的技术。
研究对象:没有公开源代码的计算机程序,主要是已经编译过的二进制可执行代码(包括exe、dll文件)。
软件逆向的主要应用
- 软件破解(最早)
- 病毒和恶意程序的分析
- 系统漏洞分析
软件正向流程
设计文档-->源代码-->可执行文件
软件逆向步骤
1、研究保护方式,去除保护功能
2、反汇编目标软件,定位功能函数
3、分析汇编代码
4、修改源代码或还原高级抽象代码
常用工具
- Ollydbg
- 一款动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3级调试器,成为最为流行的调试解密工具,支持插件扩展功能;
- Windbg
- 在Windows平台下,用户态和内核态调试工具,是微软公司免费的调试器,可以用来分析dump数据;
- IDA
- 由比利时Hex-Rayd公司开发的强大的交互式反汇编器,是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器;
- PEiD
- PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470 种PE 文档 的加壳类型和签名。
- C32Asm
- c32asm 是款非常好用的反汇编程序,具有反汇编模式和十六进制编辑模式,能跟踪exe文件的断点,也可直接修改软件内部代码。