在反汇编中怎么学习反汇编算法?
co1496913390213
2017年06月26日 16:34:24
只看楼主

恶意代码通常都是以二进制代码形式发布的,利用这种形式的代码来 分析程序的逻辑功能是非常困难的,而如果利用反汇编器将二进制代码转化为较容易理解的汇编代码将更利于对恶意代码的分析,因而研究二进制代码的反汇编算法显得极为重要,两种传统的静态反汇编算法有:线性遍历和递归遍历算法。【解密专家+V信:icpojie】 学习反汇编算法? 1.确定进行反汇编代码区域,这并不像那么简单。通常,指令与数据混杂在一起,区分它们就显得非常重要。反汇编可执行文件:该文件必须符合可执行文件的某种通用格式,如

恶意代码通常都是以二进制代码形式发布的,利用这种形式的代码来 分析程序的逻辑功能是非常困难的,而如果利用反汇编器将二进制代码转化为较容易理解的汇编代码将更利于对恶意代码的分析,因而研究二进制代码的反汇编算法显得极为重要两种传统的静态反汇编算法:线性遍历递归遍历算法【解密专家+V信:icpojie】
学习反汇编算法?
1.确定进行反汇编代码区域,这并不像那么简单。通常,指令与数据混杂在一起,区分它们就显得非常重要。反汇编可执行文件:该文件必须符合可执行文件的某种通用格式,如Windows所使用的可移植可执行(Portable Executable, PE)格式或许多Unix系统常用的可执行和链接格式(ELF)。
2.知道指令的起始地址后,下一步就是读该地址(或文件偏移量)所包含的值,并执行一次表查找,将二进制操作码的值与它的汇编语言助记符对应起来。根据被反汇编的指令集的复杂程度,这个过程可能非常简单,也可能需要几个额外的操作,如查明任何可以修改指令行为的前缀以及确定指令所需的操作数。对于指令长度可变的指令集,如Intel x86,要完全反汇编一条指令,可能需要检索额外的指令字节。
3.获取指令并解码任何所需的操作数后,需要对它的汇编语言等价形式进行格式化,并将其在反汇编代码中输出。有多种汇编语言输出格式可供选择。如X86所使用的两种主要格式为Intel格式和AT&T格式。
4.输出一条指令后,继续反汇编下一条指令,并重复上述过程,直到反汇编文件中的所有指令。
5.有大量的算法可用于确定从何处开始反汇编,如何选择下一条反汇编的指令,如何区分代码与数据,以及如何确定何时完成对最后一条指令的反汇编。线性扫描和递归下降是两种最主要的反汇编算法
反汇编技术是静态分析二进制程序的基础,目前广为采用的反汇编算法是线性扫描和递归行进算法。【解密专家+V信:icpojie】
免费打赏
mayinghdng
2017年06月27日 09:09:22
2楼
路过,学习.....
回复

相关推荐

APP内打开