土木在线论坛 \ 注册考试 \ 注册电气工程师 \ 在反汇编中怎么学习反汇编算法?

在反汇编中怎么学习反汇编算法?

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

    回复 举报
    赞同0
这个家伙什么也没有留下。。。

注册电气工程师

返回版块

33.72 万条内容 · 933 人订阅

猜你喜欢

阅读下一篇

什么是反汇编?有什么作用?

什么是反汇编?有什么作用?把目标代码转为汇编代码的过程,也可以说是把机器语言转换为汇编语言代码、低级转高级的意思,常用于软件破解(例如找到它是如何注册的,从而解出它的注册码或者编写注册机)、外挂技术、病毒分析、逆向工程、软件汉化等领域。学习和理解反汇编语言对软件调试、漏洞分析、OS的内核原理及理解高级语言代码都有相当大的帮助,在此过程中我们可以领悟到软件作者的编程思想。总之一句话:软件一切神秘的运行机制全在反汇编代码里面。【解密专家+V信:icpojie】

回帖成功

经验值 +10