网站大量收购闲置独家精品文档,联系QQ:2885784924

全波形反演 程序 程序反演与反编译技术.doc

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
全波形反演 程序 程序反演与反编译技术 导读:就爱阅读网友为您分享以下“程序反演与反编译技术”资讯,希望对您有所帮助,感谢您对92的支持! 程序反演与反编译技术 计算机科学与工程系李雄飞陈思国赵永哲 关键词软件工具反编译技术反演 技术反演(reverse engineering)是人们获取技术的一种重要手段。其最大特点是为工 程技术人员提供直接的实际经验。尽管技术反演的周期较长,风险又人.fn }}t是从他人经 验和研究成果中获得益处的极为有效的方法.也是使自已的工程枝术}r}计能力达到世界 先进水平的良好途径。为了对已有软件进行消化、分析和理解,实现对这些软件的维护以 及达到二次开发、移植和互用的目的.人们一直沿袭着程序反演工}}’ o 软件制造的工程化、产业化促使软件产品自身向可读性和结构化一方向发展。如今,越 来越多的软件产品(包括系统软件)采用高级语言编写。而提供给用户使用的软件通常只 是机器代码形式的产品。于是,程序反演工作自动化的问题引起了人们吸大的兴趣,许多 软件工作者开始对反编译工具(Dccompiling tool)的研究进行探索。 所谓反编译,就是通过分析机器语言等低级语言程序,反演出与它语义等价的高级 语言程序。这使程序的“语言位势”上升了一个级别,可使人们更清楚地.看到程序的轮廓. 便于理解程序的内含.反编译工具设计的可行性涉及到很多技术和理沦问题.如控制结构 与程序结构获取技术,程序说明信息的析取.语义等价性和非确定性等问题,都有待于 人们进一步探讨。 1控制结构与程序结构获取技术 拉制结构与程序结构的获取·可以帮助人们迅速弄清大型、复杂、不熟悉的程序的 全貌。它是由粗到细反演程序的重要步骤。反演途径主要有如下三种: (1)语言子集对应与程序变换 在高级语言程序中,与顺序结构i句语义等价的机器语言程序也是顺序结构的,非 顺序控制结构与且仅与机器语言中的条件转移和/或无条件转移指令相对应。在机器语言 中,有4种语句与程序结构及其控制结钩有关.它们是无条件转移、条件转移、调用和返 回指令。这类指令可以直接对应成目标高级语言的相应语句。如:goto语句,if -got。语 句,call语句和return语句。它们是目标高级语言的一个语言子集。 下一步就是实施程序变换,将语言子集程序中的非结构化控制结构变换为由顺序、选 取和循环语句构成的具有良好结构的形式.解决问题的关键是变换规则的确立。一方面在 变换规则中必须充分防止got。语句从循环体外转入循环体内的情形;另一方面,虽然反 演到的程序是好结构的,但时常并非是可读性强的程序。因此.在构造变换规则时,应以 忠实“原文”为宗旨。 (2)文法制导程序反演 所谓文法制导程序反演,就是根据高级语言的文法规则.写出各种基本控制语句,编 译后得到机器语言程序,从中找出机器语言程序形成的对应规则(构造文法),通过两种 文法规则的对应关系,以确定机器语言程序段反编译成高级语言成分的处理流程。“构造 文法”是指由机器指令组合而成的语言单位的构造规律,其构成的出发点就是强调与高 级语言文法规则的对应性.这种对应性常常体现为一对多的关系。 从反编译工具设计的角度上讲,显然是一种面向数据流的方法。通过扫描机器语言程 序,按照构造文法对其分解,将低级语言的控制结构转换成对应的高级语言控制结构。采 用这种方法反演出的程序更加接近软件设计者的“原始手迹”。但是,合理地构造出“构 造文法”过于困难,也不利于语义等价性证明。 (3)基于操作语义的反编译技术 把机器语言程序反编译为高级语言程序的实质是在语义等价的前提下,把语言位势 低的程序转换成语言位势高的程序。而语言在任何计算机系统中的任何一种实施一旦完 成,对这个计算机系统而言,语言的含义就完全确定了。因此.可以采用P. J. Landin的 抽象机理论.定义二个抽象机M来模拟数据加工过程中计算机系统的操作。M需要三个 工作区: (1)存贮程序的控制区,以。表示。当该区中每条语句被取出后,转换系统将根据每 条语句的类型,为其建立一个系统内部状态。 (2)记载程序变元当前值的机制,称为状态,记为S,全体状态的集合记为State a (3)记载中间结果的栈区,记作St, 三元组((st, s, c)构成抽象机M的一个大状态。M的动作是由大状态间的转移规则 规定的,转移规则形为:(St, S,。)。(Sty , S} , c} )。转移规则必须是关于左部大状态是 确定性关系。(}, S. S) }} (}, S},中)是一种可达到关系,且经由的转移关系次数最 少时.可以反演出一条高级语言的语句。我们称(}, S,)是一类“终级”大状态,也 就是不可能再转移的大状态。 我们把N. Wirth的P一代码作为

文档评论(0)

raojun00006 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档