C++反汇编与逆向分析技术揭秘(第2版)
上QQ阅读APP看书,第一时间看更新

序三

我也曾是一名逆向分析工程师。在20世纪90年代初,计算机图书很少,想成为计算机高手,逆向分析是必备技术。通过逆向分析,可以了解DOS操作系统未公开的秘密和BIOS的具体实现,从而充分利用操作系统的功能,实现对硬件更精准、高效的控制。当年我利用反汇编方式逆向分析过计算机病毒,破解过各种磁盘密码,甚至逆向分析过某著名的文字处理软件。

在当今的计算机世界,逆向分析的最大用途是网络安全,包括漏洞挖掘以及恶意程序样本分析。恶意程序作者是不可能把源代码一同奉上的,我们要通过逆向分析方法,了解恶意程序的工作机制,从而找出对抗的方法。安全公司一般都会配备一定数量的样本分析工程师,日常工作就是通过逆向分析方法,分析所遇到的恶意文件样本,从而对样本进行定性与分类,并提取特征,甚至给出应对建议。

不得不说,逆向分析是一件既需要悟性,又需要耐性的工作,面对的是最接近机器语言的汇编语言、基础函数调用、系统API调用。做好逆向分析工作需要了解计算机、编译器和操作系统是怎么工作的,这些在高等语言越来越流行、各种快速开发工具层出不穷的时代,被多数软件工程师认为是没有太大必要去了解的东西。但是如果要成为优秀的软件工程师,写出高效、稳定、安全的代码,这些底层知识是需要具备的,在网络安全这种特殊场景下,甚至是解决问题的唯一方法。

和钱林松认识,是因为我手下的不少逆向分析工程师是他的学生,通过他们了解到武汉科锐这家公司,后来去武汉出差时多次去科锐做客,和钱林松逐渐成了朋友,也有机会更多地了解他:一位放射物理专业的中专生,通过自学计算机技术,从一名放射技术人员,成为逆向分析领域的大神;曾经应邀赴美国工作,最后又放弃在美国继续工作的机会回到国内;在清华大学讲学一年后,创办了自己的公司从事逆向分析人才培养工作。这是一个典型的被兴趣引领而自学成才的计算机工程师!

本书第1版出版于2011年,入选CSDN十大最具技术影响力图书。过去十年间,技术还是有不少进步的:程序由32位到64位,编译器进步了,IDE开发工具变化了,更不要说恶意程序的巨大变化。为了更好地帮助逆向分析工程师成长,钱林松在第1版的基础上,采用Visual Studio 2019作为编译工具,增加了C语言和GCC编译器反汇编代码的讲解,增加了64位程序反汇编代码的讲解。当然,恶意代码的例子也都换成了近年来有代表性的病毒、木马、蠕虫。

本书对于想成为优秀C/C++程序员的读者会很有帮助,尤其是第2章可以让读者了解C/C++的数据结构在内存中是如何存储的、程序的流程是如何控制的,以及面向对象编程中若干机制的实现方法。对于希望成长为逆向分析工程师的读者,在了解C/C++工作机制后,第13章会教会您逆向分析的一些技巧。

谭晓生
北京赛博英杰科技有限公司创始人
2021年8月