传统的
软件工程是从计算机的功能需求出发,将高层抽象的逻辑结构和设计思想通过计划和开发,生产出可实际运行的计算机软件,这个过程称为软件的“正向工程”。反之,从可运行的程序系统出发,运用解密、反汇编、系统分析以及程序理解等多种计算机
技术,对软件的结构、流程、算法和代码等进行逆向拆解和分析,推导出软件产品的源代码、设计原理、结构、算法、处理过程、运行方法及相关文档等的过程,称为软件的“逆向工程”(software reverse engineering),又称软件“反向工程”。通常,人们把对软件进行逆向分析的整个过程统称为软件逆向工程,把在这个过程中所采用的技术统称为软件逆向工程技术。
传统的软件工程主要关注新品软件的分析与设计,而逆向工程则关注成品软件的拆解与剖析。
逆向工程可以让人们了解程序的结构以及程序的逻辑,因此,利用逆向工程可以深入洞察程序的运行过程。可以了解目标程序正在使用的系统函数的类型,也可以了解目标程序访问的文件,当然也可以了解目标软件使用的协议以及目标软件是如何与网络的其他部分通信的。在进行软件保护和反保护的过程中,软件逆向工程的优势是显而易见的。
目前,有许多功能强大、使用方便的软件逆向分析工具。这些软件逆向分析工具支持产生程序的高层抽象,便于分析程序结构,使维护者更容易理解程序,重用旧代码,或根据需要加入新功能,从而改变原有程序的逻辑流。
要学习软件的逆向分析技术,需要熟练掌握汇编语言的相关命令和语法,还要对软件运行的系统平台有较深入的了解。
《软件逆向分析实用技术》旨在帮助有兴趣学习软件逆向分析技术的读者,了解软件“逆向工程”的概念,学习软件逆向分析技术的基本原理,学习软件逆向分析所涉及的汇编语言的相关命令和用法,win32 api调试原理及相关函数,以及常用软件逆向分析工具的使用方法等。并以实际操作案例来说明“逆向分析”的过程和方法。本书不在理论上做过多的赘述,而是注重实用技术和实际操作能力的训练。
点击下载