C++反汇编与逆向分析技术揭秘
钱林松 赵海旭
前言
为什么写这本书
“时下的IDE很多都是极其优秀的,拜其所赐,职场上的程序员多出十几倍,但是又有多少能理解程序内部的机制呢?”
——侯捷
随着软件技术的发展及其在各个领域的广泛应用,对软件进行逆向工程,然后通过阅读其反汇编代码来推断其数据结构、体系结构和程序设计思路的需求越来越多。逆向工程技术能帮助我们很好地研究和学习先进的软件技术,特别是当我们非常想知道某个软件的某些功能究竟是如何实现的,而手头又没有合适的资料的时候。
我国的软件产业落后于西方,甚至在某些方面落后于邻国的印度和日本。如果我们能够利用逆向技术去研究国外的一些一流软件的设计思想和实现方法,那么我国的软件技术将会得到极大的提升。目前,国内关于逆向分析技术的资料实在是少之又少,大中专院校的计算机相关专业对此项技术也尚未有足够的重视。
有很多人认为研究程序的内部原理会破坏“黑盒子”封装性,但是如果我们只是在别人搭建好的平台上做开发,那么始终只能使用别人提供的各种未开源的SDK,会一直被别人的技术牵制着。如果我们能够充分掌握逆向分析的方法,就可以洞悉各种SDK的实现原理,学习各种一流软件所采用的先进技术,取长补短,为我所用。若能如此,实为我国软件产业之幸。
我当初学习逆向技术时完全靠自学,且不说这方面的书籍,就连相关的文档和资料也都极度匮乏。在这种条件下,虽然在很努力地钻研,但学习进度却非常缓慢,花费几天几夜完成对一个软件的关键算法的分析是常有的事。如果当初有一本全面讲解反汇编与逆向分析技术的书供参考,我当年不仅能节省很多时间和精力,而且还能少走很多弯路。因为有这段经历,我斗胆争先,决定将自己多年来在反汇编与逆向分析技术领域的一些经验和心得整理出来与大家分享,希望更多的开发人员在掌握这些技术后能更好地将其应用到软件开发的实践中,从而提高我国软件行业的整体水平。由于个人能力有限,书中的疏漏在所难免,还请各位同行和…