基于控制流精化的反汇编方法.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于控制流精化的反汇编方法119 语言上提取控制流、数据流及别名等高级别的信息。二进制代码具有不可阅读 性,所以需要先反汇编成汇编代码,这个过程是整个逆向工程的基础工作,其精确 程度直接影响到后续过程产生结果的准确性。本文基于Kruegel等人的部分算 法[3],提出了一种基于控制流图精化的静态反汇编方法,通过对控制流的提炼来 精化反汇编的结果,可以更简单、更精确地完成反汇编过程。 1反汇编方法概述 反汇编方法一般可以分为三种:基于字节流的、基于控制流的和两者混合的 方法。基于字节流的反汇编方法指的是以字节为基准的算法,其中最典型的就是 线性扫描算法:首先找到二进制代码的人口点,然后根据字节顺序进行反汇编,直 到遇到非法字节(即不可反汇编的字节,或者反汇编后的指令是无效的,如对段寄 算法。此类算法容错性很差,非条件跳转后插入一段垃圾代码即可使这种算法 失效。 递归遍历算法是一种基于控制流的反汇编方法,很多反汇编器都使用这种算 法,如著名的商业级反汇编器IDAPro。这种算法的工作流程可以简化为:1)对 于顺序指令(不会引起跳转的指令),使用基于字节流的反汇编算法;2)对于跳转 指令,记录其下一条指令的地址,然后直接从跳转目标所指的地址处继续进行第 1)步。3)从记录的地址列表中取出地址,从该地址处继续执行反汇编算法。该算 法的伪代码如图1示。 ProcedureRecursiveTraverseDisasm: BEGIN IF当前地址己被遍历OR当前地址是结束地址 THEN RETURN: ELSE lF当前指令是跳转指令 THEN RecursiveTraverseDisasm(跳转目 标的地址); RecursiveTraverseDisasm(下一条指令的地 址); ENDIF END 图1递归遍历反汇编算法 这种算法显然要比线性扫描算法更具有灵活性,对于非条件跳转的情况不会 立即终止,而且添加一些启发式算法即可使其变得更加健壮。但对于一些模糊器 生成的代码,这种反汇编算法还是可能会被误导而产生错误的结果,模糊器可以 1)论文集 120第四届信息安全漏洞分析与风险评估大会(VARA201 在动态运行时不会被执行的代码段添加一些垃圾字节,在保持程序功能不变的前 在call指令后添加干扰代码,把call指令转化为分支跳转,而在动态运行时,只可 能执行其中特定的一个分支,另一个分支永远不会执行到,但这一信息是无法静 态获取的,从而成功地干扰静态反汇编的过程。 近年来,一些文献提出将上述两种方法混合起来,以精化反汇编的结果。 描算法和递归遍历算法,然后再分别用两种算法来互相验证结果的正确性。如果 出现分歧,就使用一些启发式规则来判断哪一种算法的结果更为正确。Nanda[61 等人则使用了一种基于猜测的反汇编算法,为指令设置信用打分机制,只有指令 的分值达到一定的阈值时才会被认为是合理的指令。在Nanda的工作中,特别提 出了对跳转表、函数序言、调用目标等的分值设定来提高准确率。Krishnamoor- 中的错误。通过观察正确的与错误的反汇编结果(可能包括不寻常操作码与操作 数的指令,不存在的分支目标地址等)的不同,并使用正确的和错误的反汇编结果 去训练一个基于决策树的分类器,从而可以识别那些错误的指令。Kruegel等 人[33提出使用通用的基于控制流的技术和统计方法来处理难以反汇编的二进制, 它以控制流方法来处理一些被模糊化的代码。这种方法基于图论和模式匹配的 理论,比较完美地解决了反汇编中可能遇到的问题。这些混合的反汇编方法

文档评论(0)

hnlhfdc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档