概念
软件逆向工程,又称软件反向工程,是指从可运行的程序系统出发,运用解密、反汇编、系统分析、程序理解等多种计算机技术,对软件的结构、流程、算法、代码等进行逆向拆解和分析,推导出软件产品的源代码、设计原理、结构、算法、处理过程、运行方法及相关文档等。通常,人们把对软件进行反向分析的整个过程统称为软件逆向工程,把在这个过程中所采用的技术都统称为软件逆向工程技术。
逆向工程的 4 个抽象层次
逆向工程的4个抽象层次主要包括实现级、结构级、功能级和领域级。
实现级
这一层次主要关注程序的实现细节,包括程序的抽象语法树、符号表等信息。通过对这些信息进行分析,逆向工程师可以了解程序的底层结构和代码实现。
结构级
结构级逆向工程关注的是程序分量之间的相互依赖关系。例如,通过分析程序的调用图、结构图等,逆向工程师可以了解程序模块之间的连接方式和数据流动情况,从而推断出程序的整体结构。
功能级
在功能级,逆向工程师主要关注程序段的功能以及程序段之间的关系。通过对程序的功能进行分析,可以了解程序能够完成哪些任务,以及这些任务是如何通过不同的程序段协同完成的。
领域级
领域级逆向工程关注的是程序分量或程序与应用领域概念之间的对应关系。在这一层次,逆向工程师需要深入理解程序所处理的问题和领域知识,以便将程序的实现与具体的应用场景相结合,从而更准确地理解程序的设计意图和功能。
逆向工程主要使用的技术
静态分析
通常包括反汇编、反汇编语法分析、控制流分析等技术。其中,反汇编是将目标程序的机器代码转换为对应的汇编代码,而反汇编语法分析和控制流分析则是对汇编代码进行解读。
动态分析
包括调试、跟踪、模拟等技术。调试技术可以通过修改程序的执行流程、插入断点等手段来观察程序在不同状态下的行为;跟踪技术可以记录程序的运行轨迹,从而还原出程序的执行逻辑;模拟技术则是通过构建一个与目标软件相似的运行环境,以便进行控制和观察。
反编译
将目标软件的机器代码转换为高级语言的源代码或者类似的表示形式。
溯源追踪
通过逆向分析追踪一个软件或产品的来源和演化过程
今天的文章 软考 - 系统架构设计师 - 软件逆向工程分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/81085.html