序一
人类社会在经历了机械化、电气化之后,进入了一个崭新的信息化时代。
在信息化时代,电子信息产业成为世界第一大产业。信息就像水、电、石油一样,与所有行业和所有人息息相关,成为一种基础资源。信息和信息技术改变着人们的生活和工作方式。离开计算机、网络、电视和手机等电子信息设备,人们将无法正常生活和工作。
在信息化时代,计算机系统集中管理着政治、军事、金融、技术、商务等重要信息,控制着军事装备、航空航天、工业系统等重要设施,因而计算机系统成为不法分子的主要攻击目标。计算机系统本身的脆弱性和网络的开放性,使得计算机系统的安全成为世人关注的社会问题。
当前的形势是,一方面信息技术与产业空前繁荣,另一方面危害信息安全的事件不断发生。敌对势力的破坏、网络战、病毒等恶意软件侵害、黑客攻击、利用计算机犯罪、网上有害信息泛滥、个人隐私泄露等,对信息安全构成了极大威胁。因此,信息安全的形势是严峻的。
信息论的基本观点告诉我们:系统是载体,信息是内涵,信息不能脱离系统而孤立存在。因此,我们应当从信息系统角度来看待和处理信息安全问题。任何信息系统都由硬件、软件和数据构成,要确保信息系统安全就必须确保硬件安全、软件安全和数据安全。软件安全成为信息系统安全的重要方面。不能确保软件安全,就无法保证信息系统安全,也就不能保证信息安全。“软件定义一切”充分反映出软件在信息社会中发挥的巨大作用。然而,只有软件是安全的,软件设计的一切才可能是安全的。如果软件是不安全的,则软件设计的一切肯定是不安全的。这就进一步说明软件安全的重要性。
因为软件在静态时表现为数据,在动态执行时表现为行为,所以软件安全既包含静态时的数据安全,也包含动态时的行为安全。软件安全主要包括正确性(无差错)、稳定性、可靠性、完整性、行为预期性和行为可控性等方面。可见,软件安全是十分复杂的,确保软件安全是困难的。
软件工程告诉我们,提高软件安全性的一种方法是对软件进行测试。其中包括知道源代码的“白盒”测试和不知道源代码的“黑盒”测试。如果能够在“黑盒”测试时设法掌握软件的部分代码,对于提高测试效果是极有利的,这就需要对软件进行逆向分析。
对软件进行逆向分析,是通过阅读其反汇编代码,推断其数据结构、体系结构和程序设计思路,进而判断是否侵犯别人的知识产权,是否有错误,是否有后门,是否有恶意行为,等等。显然,这对于学习先进软件技术,确保软件安全性是极重要的一种方法。
经验告诉我们,平均1000行代码中就可能有一个漏洞。如果漏洞被坏人利用,造成的损失将是难以估量的!显然,在这种情形下,软件逆向分析对确保我国信息安全是可以发挥积极作用的。
从方法论上来看,网络空间安全学科的方法论包含以下四个步骤。
1)理论分析。
2)逆向分析。
3)实验验证。
4)技术实现。
其中逆向分析是网络空间安全学科特有的研究方法。据此,软件逆向分析符合网络空间安全学科的方法论。因此,软件逆向分析技术是网络空间安全学科所有科教工作者都应掌握并应用的。
目前国内由于缺少软件逆向分析技术的教材和师资,只有少数大专院校开设了软件逆向分析的课程。多数院校的信息安全、网络空间安全、计算机等专业对软件逆向分析技术还没有给予足够的重视。社会迫切需要更多软件逆向分析技术的教材和资料,要培养大批软件逆向分析技术的师资和技术人员。
2011年作者钱林松在机械工业出版社出版了著作《C++反汇编与逆向分析技术揭秘》。该书受到广大读者的喜爱。一转眼十年过去了,软件逆向分析技术有了许多新发展,社会也有了许多新需求。为了满足社会的需求与读者的渴望,钱林松又推出了著作《C++反汇编与逆向分析技术揭秘(第2版)》。本书推陈出新,新增了许多新技术、新工具和新应用,并重新设计了所有的示例。书中内容新颖、案例丰富、叙述清楚、技术实用。相信这本新书一定能够得到广大读者的厚爱,为推进我国软件逆向分析的技术进步和人才培养做出新贡献!
钱林松是我国软件领域一个自学成材的传奇式“武林高手”。他中专放射物理专业毕业,酷爱计算机软件,专攻软件逆向分析技术,经历了从中专到武汉大学硕士学位,从业余爱好到专业开发,从打工到自主创业,从国内到国外再到国内的发展历程。在产品开发方面,他在美国公司通过逆向分析改进产品,获得北美分子影像学会展(AMI)一等奖。在软件逆向分析人才培训方面,他已经培训了一千多名专业人才,并在清华大学的培训班讲课一年。2020年,他成为武汉大学兼职教师,走上国家一流网络安全学院的讲台。
最后预祝《C++反汇编与逆向分析技术揭秘(第2版)》获得成功!衷心感谢机械工业出版社和每一位读者!
武汉大学国家网络安全学院 张焕国
2021年8月15日于武汉大学珞珈山