购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

作者简介

斯蒂芬妮·多马斯
(Stephanie Domas)

Canonical首席信息安全官(CISO)、英特尔(Intel)前首席安全技术战略师。她在道德黑客、逆向工程和高级漏洞分析方面拥有逾十年经验,作为一位知名行业顾问,她的服务对象涵盖初创企业和行业巨头。她目前致力于使Canonical成为开源界最受信赖的计算伙伴。在英特尔时,她负责全公司的安全技术战略,推动英特尔在安全领域实力、竞争力和收益的不断增长。她是一位充满激情的教育家、战略家、演说家、顾问和安全爱好者。

克里斯托弗·多马斯
(Christopher Domas)

知名硬件安全研究员。他的研究重点在于固件、硬件及处理器的底层安全漏洞利用。他因针对还不存在的问题提出天马行空的解决方案而闻名,其所提解决方案包括全球首个单指令的C语言编译器(M/o/Vfuscator)、能够生成程序控制流图的开发工具集(REpsych),以及在vi文本编辑器里实现的图灵机。 Fcqjw3IgrQ12ZF+aaAZzvu9FaLlaUFlZXOzc6RuETW5gEA8fsxbKKeBo4/Dd1SM/



译者序

x86架构是一种基于CISC(Complex Instruction Set Computing,复杂指令集计算)思想设计的处理器架构,最初由Intel公司开发并推广,如今已成为个人计算机的主要架构之一。相较于RISC架构,CISC架构中包含了大量的指令,可以执行复杂的操作,如浮点运算、字符串操作、位操作等。x86架构已经存在了几十年,最早可以追溯到1978年Intel公司发布的首款x86处理器。x86是使用最广泛的汇编语言,也是Windows、Linux和macOS等主流操作系统的核心,已被用于数十亿计算机系统中。

随着云计算、物联网、人工智能等新技术的快速发展和应用,使用x86处理器的计算机设备已经渗透到人们生活的方方面面。从电子邮件和浏览器等基本的日常应用,到复杂的商业信息系统,都离不开x86处理器的支持。任何一个x86软件中存在的漏洞都可能被恶意者利用,对用户的个人隐私、企业的业务数据甚至国家的关键基础设施构成威胁。对x86软件进行逆向工程分析可以帮助安全研究人员发现软件的潜在漏洞,及时提出修复方案,阻止黑客利用这些漏洞发起攻击。因此,熟练掌握x86逆向工程分析技术十分重要。

我们为什么要翻译这本书呢?在ChaMd5安全团队不断发展壮大的过程中,我们主要关注IoT、Car和ICS领域,也在这些领域获得了很多奖项,并且出版了《CTF实战:技术、解题与进阶》、翻译了《ARM汇编与逆向工程》。我们认为本书中的知识不仅有助于让读者提升逆向工程和软件破解的技术,还能帮助读者在代码优化、效率提高、调试、编译器设置调整以及芯片选择等方面成为更出色的开发者。书中讨论的是x86软件逆向工程中需要运用的实际思想、技术和工作方法,内容深刻而有意义,填补了国内目前这方面的空白。这本书值得每个梦想并努力使自己成为优秀逆向工程师和想从事网络安全工作的人参考,也可以作为软件逆向课程的参考书。每个网络安全相关领域从业者、软件破解爱好者都可以从本书中获益。这也正是我们翻译这本书的原因。

本书共17章,所涉内容从x86汇编语法和指令到分析和调试汇编代码,再到函数和控制流、编译器优化。本书循序渐进地讲解了逆向工程的工具、策略、方法以及技术,而且每一章都包含许多实际的案例,可以帮助读者更好地理解和掌握相关知识。书中介绍了许多防御技术,如混淆、反调试、防篡改、加壳器、虚拟化以及加密与解密等,这些技术可以用来保护应用程序,对抗针对其的逆向工程和破解活动。此外,本书还介绍了16种先进的逆向技术,可以帮助逆向工程师更快、更容易地分析和破解软件。

总的来说,本书对x86软件逆向工程的各个方面都进行了较为全面的介绍,对于想要学习x86软件逆向工程的读者来说是一本很好的入门书籍,可以帮助读者建立起x86逆向工程分析技术的知识体系。同时,由于逆向工程领域的不断更新和变化,读者需要不断学习和探索,才能在实践中获得更多的经验和技能。需要注意的是,在学习逆向工程时要遵守相关法律法规和道德规范,不能侵犯他人的知识产权和隐私权。

本书的译者均为ChaMd5安全团队成员,长期从事IoT、Car、ICS等领域内的安全漏洞挖掘、攻防技术研究工作,具备丰富的理论知识和实践经验。本书第1~6章由刘国曦(Hk_Mayfly)负责,第7~9章由林中霖(Anzi)负责,第10~12章由马浩轩负责,第13~17章由陈泽楷负责,全书由罗洋(M)统稿。

由于中文和英文在表述方面有非常大的不同,因此针对一些有争议的术语、内容,我们查阅了大量的资料,以期准确表达作者的本意,在此过程中也对原书存在的一些错误进行了纠正。虽然翻译完成后我们又进行了仔细的校对,但仍然难免存在疏忽、遗漏的地方,读者如果在阅读过程中发现了问题,可以向出版社反馈或者把问题发送到我们团队的邮箱admin@chamd5.org。

感谢机械工业出版社给予我们无比的信任!希望本书的内容及译文没有让读者失望,同时希望本书能帮助更多人了解和学习x86软件逆向工程,激励更多人加入逆向工程领域,共同推动信息安全事业的发展。 Zwrcl0v9W2WXOYHfMlvSbEMv4QIVj6rREJ6ypQboA+gOZVSvLmoDDGTXPDcjPF2g



前言

软件逆向工程和破解是历史悠久且内容丰富的技术领域。几十年来,软件开发者一直努力在其应用程序中构筑防御措施,以保护知识产权,避免对程序代码的未授权修改。几乎从逆向工程师开始为了兴趣或盈利而研究和改动代码的那一刻起,软件破解的技艺就存在了。

在详细探讨逆向工程的工作原理之前,理解这些技术的背景非常重要。下面将介绍你能从本书中获得什么,同时深入讲解软件逆向工程和破解的历史背景及法律相关的考量。

本书目标读者

本书是给所有想探索、理解并修改封闭源代码软件的人准备的,无论是安全领域的专业人员还是充满热情的业余爱好者。本书将引领好奇的读者深入软件破解和计算机的核心,探索其运作机制。深入学习x86计算机的运行原理,不仅对软件逆向工程和破解来说至关重要,还能帮助读者在代码优化、效率提高、调试、编译器设置调整以及芯片选择等方面成为更出色的开发者。书中还将详细介绍软件破解的过程,让读者了解真实世界中破解者所使用的工具和技术,并通过实际动手破解真实应用程序的实验来验证学到的知识。此外,书中也会涉及防御策略,帮助读者理解如何对抗软件破解攻击。

通过掌握攻击与防御技术,读者可以成为出色的软件破解专家或软件防护专家。

本书值得期待的内容

本书主要基于逆向工程的三大核心原则:

●没有破解不了的软件。

●以提高速度为进攻目标。

●以放慢速度为防守目标。

基于这种理念,人们可以针对任何软件实施逆向工程,以揭示其秘密,绕过其保护机制。问题只在于时间的长短。

就像网络安全的其他领域一样,攻击方向和防御方向的逆向工程师都能从一套类似的技能中受益。本书将介绍以下三种相互关联的技能:

●逆向工程:一种拆解软件并解析其运作方式的过程。

●破解:在逆向工程的基础上,通过操控程序的内部机制让其执行原本不打算执行的操作。

●防御:尽管所有的软件都可以被破解,但防御措施可以让破解程序的过程变得更加困难和耗时。

不理解逆向工程和破解,防御者就无法制定有效的保护措施。另外,如果攻击者能够理解程序的运作方式并进行操作,他们就能更有效地绕过并战胜这些保护措施。

本书结构

本书是根据这三种核心技能来组织的。结构如下:

(续)

实践经验和实验

学习逆向工程和软件破解最好的方式就是进行实践。因此,本书将包含几个动手实验,以演示描述的概念。

本书的目标不是教授一套特定的工具和技术。虽然我们的重点是运行在Windows上的x86软件,但很多方法和技术也可以应用到其他平台上。我们会尽量展示多种工具,包括开源软件、免费软件、共享软件,以及商业解决方案。理解哪些工具可用,以及它们的优势和劣势之后,就能更有效地选择适合任务的工具。

我们的动手实验和练习将针对不同目标进行逆向工程与破解,这些目标包括:

●真实软件:一些练习会使用精选的真实软件,以避免侵犯版权。

●专为本书编写的软件:为了阐述用现实世界的例子难以展示的概念而专门为本书编写的软件。

●破解练习程序(crackme):这是由破解者开发的软件,用于阐述概念或挑战他人。

随书文件下载

本书提到了一些额外的文件,如实验或工具对应的文件。这些文件可以从https://github.com/DazzleCatDuo/X86-SOFTWARE-REVERSE-ENGINEERING-CRACKING-AND-COUNTER-MEASURES下载。

历史

在深入了解破解和逆向工程的细节之前,了解其历史是非常有用的。软件保护措施以及用来克服它们的技术和方法已经演变了几十年。

第一个软件保护措施

第一个软件版权保护措施出现在20世纪70年代。这个领域的一些早期行动者如下:

●AppleⅡ:AppleⅡ引入了专有的磁盘驱动器,这类磁盘驱动器可以在半轨道进行写入,允许写入额外的环,也允许错开并重叠扇区。这样做的目的是让非Apple机器和不会读写这些奇特偏移位置的软件无法使用这些磁盘。

●Atari 800:Atari 800系统会有意在其磁盘中包含坏的扇区,并尝试加载这些扇区。如果这些加载操作不返回“坏扇区”错误,那么软件就知道这不是一个有效的磁盘,并会停止执行。

●Commodore 64:正版的Commodore 64软件仅通过只读磁盘进行分发。这种软件会尝试覆盖磁盘,如果成功了,它就知道这张磁盘是假冒的。

所有这些保护措施都依赖于软件的异常行为,比如使用无效的内存或试图覆盖程序自己的代码。要打破这些保护措施,就需要理解软件的工作原理。

破解和逆向工程的崛起

破解和逆向工程兴起于20世纪80年代。然而,早期的破解者并不是为了钱。破解是一场比赛,比的是谁可以最快找出并绕过软件的保护措施。

在接下来的几十年中,逆向工程和破解领域不断发展。以下是逆向工程历史上的一些关键日期。

1987年 Fairlight的成立可追溯到1987年,由Bacchus创建,它是最早的运营团队之一。21世纪初,在美国联邦调查局(FBI)的打击下,Fairlight逐渐崭露头角。若想了解更多历史详情,请访问www.fairlight.to和csdb.dk网站。

1990年 Elliot J. Chikofsky和James H. Cross II定义了逆向工程:“逆向工程是分析目标系统,识别出系统的各个组成部分及各部分之间的相互关系,并以其他形式或更高层次的抽象来表示该系统的过程。”

1997年 Old Red Cracker(网络昵称+ORC)创立了基于互联网的高级破解大学(+HCU),使每个人都可以学习破解知识。+ORC在网上发布了“如何破解”的教程,并撰写了学术论文。+HCU的学生都使用以+开头的网络昵称。

1997—2009年 “破解圈”(warez scene)崭露头角,各团体竞相抢先发布受版权保护的材料。内部人士(也被称为“供应者”)为他们的团体提供早期访问权限,“破解者”(cracker)会打破这些保护措施,而“传递者”(courier)将破解软件分发到FTP站点。2003年—2009年,大约有3164个活跃团体在“圈内”竞争,他们主要是为了荣誉和吹嘘,而非金钱。

2004年 美国联邦调查局等开始对“破解圈”进行突袭。其中,“霹雳行动”(Operation Fastlink, 2004)导致60名破解圈成员被定罪,“关闭网站行动”(Operation Site Down, 2005)成功打击了25个破解团体。

软件保护措施和破解者之间的竞赛在持续进行,而逆向工程技能是双方都无法或缺的技能。破解者需要理解程序的运作方式,以便更好地操纵它并绕过防御措施。而在防守方面,理解最新的破解技术至关重要,这有助于我们开发能够保护知识产权和其他敏感数据的防御措施。

法律

“实践是最好的学习的方式”,这就是为什么本书包含了一些真实软件、专为本书编写的软件和破解练习程序方面的实验和实践。我们不是律师,如果有人有版权疑虑,请咨询律师。我们推荐电子前沿基金会(Electronic Frontier Foundation,网址为www.eff.org)。在第15章中,我们将讨论有关法律的话题,因为我们觉得每个人都需要理解影响这个领域的美国法律。主要有两部法律需要关注:《版权法》(Copyright Act)和《数字千年版权法》(Digital Millennium Copyright Act, DMCA)。

《版权法》的“合理使用”条款(Fair Use Clause)规定,当逆向工程用于“批评、评论、新闻报道、教学(包括课堂使用的多份复印件)、学术或研究……”目的时,属于“合理使用”。这一例外情况需要平衡“对版权作品潜在市场或价值的影响”。本质上,如果不分享或销售破解软件,那么用于教育目的的逆向工程就是合法的。

2016年10月,DMCA还增加了一条关于善意安全研究的例外规定。该规定指出:“仅为了善意测试而访问计算机程序……这样的活动应在设计好的控制环境中进行,以避免对个人或公众造成伤害……并且不能用于版权侵权的目的。”

本书中检视并用于练习的软件都是精心挑选的,可在不违反“合理使用”条款和DMCA免责条款下使用。如果你打算对软件进行逆向工程和破解,对于除自我学习以外的其他目的,应该先咨询一下律师。逆向工程的法律考量也将在后面的章节中进行更详细的探讨。

软件逆向工程和破解有着丰富的历史,这些技能既能用于攻击也能用于防御。然而,理解这些学科相关的法律并确保活动落在善意测试和“合理使用”免责条款范围内是很重要的。

本书的目的是为读者提供一套强大的软件逆向工程与破解的技能和工具。本书将从基础内容开始,逐步深入软件逆向工程和破解的各个环节,一直到一些高级攻防技术。 Zwrcl0v9W2WXOYHfMlvSbEMv4QIVj6rREJ6ypQboA+gOZVSvLmoDDGTXPDcjPF2g

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开