我想为汇编语言的初学者写一本入门书,目标是让读者熟练阅读理解汇编代码,为寻找程序中漏洞、逆向分析程序、破解程序的保护机制、分析木马病毒等打好基础;而不是讲汇编语言的程序设计,这一块只准备讲内联汇编。
主要是讲怎样阅读IA32上Win32方面的汇编代码。
综观市面上的汇编书,大约99%都是讲汇编语言程序设计,但因为汇编语言的特殊性,真正用它写程序的并不多,它并不是主要的开发语言。它一直到现在经久不衰是因为它接近底层,几乎任何程序最后都翻译到汇编指令上(即使是解释程序、虚拟机之类的,最后执行的也可以对应到相应的汇编指令)。也正是因为这些特性,它在调试程序,逆向工程、漏洞挖掘等方面是不可或缺的。
也就是说绝大部分学习汇编是用来阅读汇编代码,而不是用来写程序的。不管你同意不同意这个结论,这应该是个不争的事实。其实这和我们学习语言是一样的,大家都学过英语,但我们学英文是为了用英文写小说吗?不是,主要是用来交流,用来阅读的。
掌握写作比掌握阅读要付出的精力更多,侧重点也不一样。当然,如果会写了,阅读能力肯定没问题。但问题是,我们并不需要撰写长篇大作,充其量也就是一些短小的应用文、到论坛灌灌水之类的(对应到汇编语言上,也就是用汇编写点核心代码,做个注册机之类的)。这就涉及到投入/产出的问题了,我需要花很多时间练习写汇编语言程序,而只为了以后用于阅读吗?这是个仁者见仁、智者见智的问题。
我的答案是,不会。因为那样的话,不仅会花大量的时间,很可能还会挫败我们仅存的一点信心。因此,我就想为什么不写一本书,避开那些对大部分人来讲并不是很重要的东西,而直接深入问题的核心:阅读汇编呢?
为此,我查了很多汇编语言的书,也查了不少资料,我正在为“阅读汇编代码”积极准备,希望在年内能完成。
我接下来会陆续把我浏览、阅读过的一些汇编书介绍给大家。