软考 - 系统架构设计师 - 软件逆向工程

本文详细介绍了软件逆向工程的概念,探讨了其四个抽象层次(实现级、结构级、功能级和领域级),并列举了主要使用的静态分析、动态分析技术,如反汇编、调试和模拟,以及反编译和溯源追踪的重要性。
摘要由CSDN通过智能技术生成

概念

        软件逆向工程,又称软件反向工程,是指从可运行的程序系统出发,运用解密、反汇编、系统分析、程序理解等多种计算机技术,对软件的结构、流程、算法、代码等进行逆向拆解和分析,推导出软件产品的源代码、设计原理、结构、算法、处理过程、运行方法及相关文档等。通常,人们把对软件进行反向分析的整个过程统称为软件逆向工程,把在这个过程中所采用的技术都统称为软件逆向工程技术。

逆向工程的 4 个抽象层次

        逆向工程的4个抽象层次主要包括实现级、结构级、功能级和领域级。

实现级

        这一层次主要关注程序的实现细节,包括程序的抽象语法树、符号表等信息。通过对这些信息进行分析,逆向工程师可以了解程序的底层结构和代码实现。

结构级

        结构级逆向工程关注的是程序分量之间的相互依赖关系。例如,通过分析程序的调用图、结构图等,逆向工程师可以了解程序模块之间的连接方式和数据流动情况,从而推断出程序的整体结构。

功能级

        在功能级,逆向工程师主要关注程序段的功能以及程序段之间的关系。通过对程序的功能进行分析,可以了解程序能够完成哪些任务,以及这些任务是如何通过不同的程序段协同完成的。

领域级

        领域级逆向工程关注的是程序分量或程序与应用领域概念之间的对应关系。在这一层次,逆向工程师需要深入理解程序所处理的问题和领域知识,以便将程序的实现与具体的应用场景相结合,从而更准确地理解程序的设计意图和功能。

逆向工程主要使用的技术

静态分析

        通常包括反汇编、反汇编语法分析、控制流分析等技术。其中,反汇编是将目标程序的机器代码转换为对应的汇编代码,而反汇编语法分析和控制流分析则是对汇编代码进行解读。

动态分析

        包括调试、跟踪、模拟等技术。调试技术可以通过修改程序的执行流程、插入断点等手段来观察程序在不同状态下的行为;跟踪技术可以记录程序的运行轨迹,从而还原出程序的执行逻辑;模拟技术则是通过构建一个与目标软件相似的运行环境,以便进行控制和观察。

反编译

        将目标软件的机器代码转换为高级语言的源代码或者类似的表示形式。

溯源追踪

        通过逆向分析追踪一个软件或产品的来源和演化过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小林想被监督学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值