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

网络安全攻防:软件逆向反汇编

时间:2023-03-21 22:46:51 科技观察

1.逆向工程逆向工程(RE,ReverseEngineering)是一种技术过程,即对目标产品进行逆向分析和研究,从而推导出并获得产品的处理流程、组织结构、功能性能规范等设计要素等,生产功能相似但不完全相同的产品。逆向工程起源于商业和军事领域的硬件分析。其主要目的是在不能轻易获得必要的生产信息时,直接从对成品的分析中推导出产品的设计原理。2、基本概念MachineCode:计算机CPU可以直接解释的数据,又称本机代码,与运行平台有关。汇编语言(AssemblyLanguage):用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址,方便程序员编写代码。汇编语言和特定的机器语言指令集是一一对应的,不能在不同平台之间直接移植。主流的是ARM汇编和x86汇编。CPU寄存器:用来临时存放指令、数据和地址,包括通用寄存器、专用寄存器和控制寄存器。逆向分析时注意特殊寄存器的变化。WinAPI:Windows操作系统中可用的内核应用程序编程接口。在Windows平台上研究和学习逆向工程,你需要了解一些WinAPI编程。3、反汇编反汇编是将目标代码转换为汇编代码,将低级代码转换为高级代码的过程。以最著名的HelloWorld为例,首先在VisualStudio中新建一个HelloWorld项目如下图。//HelloWorld.cpp:定义控制台应用程序的入口点。#include"stdafx.h"#includeint_tmain(intargc,_TCHAR*argv[]){printf("HelloWorld\n");return0;}在Build→ConfigurationManager→ActiveSolutionConfiguration中选择Release。选择Release模式生成可执行文件,程序代码会更加简洁,便于调试,如图1所示。图1Release模式此时生成HelloWorld.exe的可执行文件,源代码无法直接看到程序。通过可执行文件还原汇编代码的过程就是反汇编。我们可以通过OllyDbg加载程序轻松看到反汇编代码,如图2所示。图2反汇编代码4.常用工具OllyDbg是一种新的动态跟踪工具。它结合了IDA和SoftICE的思想,一个Ring3调试器,非常简单易用,已经取代SoftICE成为当今最流行的调试解密工具。同时还支持插件扩展功能,是目前最强大的调试工具。运行界面如图3所示。图3OllyDbg运行界面IDAPro32/64:IDAPro简称为IDA(InteractiveDisassembler),是一款世界级的交互式反汇编工具,有两个版本可供选择。标准版(Standard)支持20多种处理器,高级版(Advanced)支持50多种处理器。运行界面如图4所示。图4IDAPro运行界面SoftIce:SoftIce是CompuwareNuMega的产品,Windows2000及更早版本的内核级调试工具,兼容性和稳定性极佳,可以调试各种应用程序和设备源代码级别的驱动程序。可以使用TCP/IP连接执行远程调试。但目前微软的Windbg的便捷性、可靠性和易用性远超SoftICE,而且免费使用。所以SoftIce没有再推后续版本。WinDbg:WinDbg是Windows平台下功能强大的用户态和内核态调试工具。与VisualStudio相比,它是一个轻量级的调试工具。所谓轻量级就是它的安装文件体积更小,但调试功能却比VisualStudio强大。它的另一个用途是分析Dump数据,程序运行如图5所示。图5WinDbg运行界面5.分类识别工具第一次拿到一个文件时,我们需要判断它是什么类型的文件.这通常可以通过文件扩展名来确定。有时文件扩展名没有实际意义,因此不能通过扩展名来确定文件类型。(1)文件在大多数Linux系统中都带有此实用程序。file通过检查一些特定的字段来确定文件类型,如下所示。undefinedroot@kaili:~/Desktop#stringsHelloworld/lib64/ld-linux-x86-64.so.2libc.so.6puts__libc_start_main__gmon_start__GLIBC_2.2.5AWAVAAUATL[]A\A]A^A_HelloWorld