序二
2011年10月,当时我正在大陆进行秋季巡讲,在同济大学宿舍里收到一封陌生邮件,发件人是钱林松。随后我收到一本书——《C++反汇编与逆向分析技术揭密》。翻看目录和三两页内容后,我明白,这是本价值不菲的好书,值得日后好好阅读。
是的,后来我对书中特感兴趣的部分做了很详细的阅读。特别是C++语言的虚函数(virtual functions)背后的虚机制所用到的虚指针(virtual pointers)和虚表(virtuabl tables),对此林松以x86汇编代码给大家做了很好的演示。我对于这些C++机制是有深刻理解的,也曾用调试器(debugger)观察某些东西,而能够从林松的书中真真实实看到这些幕后机理的汇编代码呈现,还是很兴奋,并从中得益。
这些对林松来说只是牛刀小试。他真正的强项是逆向工程。这是很底层而很高端的技术,一般大众对它的印象与所谓的“破解”有关。“破解”是好的吗?嗯,首先,大众的上述认知过于狭隘;其次,技术用得好就是好,用得坏就是坏。技术本身是好的,是很好的。
我们的友谊后来延伸到温哥华。林松旅行温哥华,特地说想见面。那天我坐351公交车去到城区,和林松聊了一下午,对他有更多认识。再后来,又从网络上看到他的访谈记录。凡此种种,这个人逐渐在我心中有清晰的形象,包括他求知的执着、无惧的性格、技术路上的成长、当前的发展。也更觉得,这样一个人在技术上、经营上、人生经历上,都是一个很不简单的人物。
成就一本书的艰难,我深有体会。林松在事业经营之余,愿意把相当精力放在写作这一恐怕无所获利的事情上,我深深感动。
如今,《C++反汇编与逆向分析技术揭密》即将出版第2版,我很高兴,很乐意写下这篇序文,以为推荐。本着对此类深层次书籍的作者的敬意,这次我告诉林松,不要再赠我以书籍,我要付费购买——这是我对一位好作者和一本好书所能做的一点点心意。
侯捷
2021年8月16日于新竹