前言

前言

对于很多人来说,苹果系统的硬件设备都让人瞩目,尤其是高配置的Macbook Pro电脑,无论是在价格上还是在品质上,都是笔记本行业的标杆。2016年,苹果公司在硬件新品发布会上公开了全新设计带Touch Bar的Macbook Pro,顶配15寸的价格高达32 888元,这个价格足以让多数人望而却步。苹果的macOS只允许在自家的硬件设备上运行,不过,除了顶配的Macbook Pro,还有一些入门级的硬件可供选择。在苹果硬件系列中,最便宜的应该是Mac mini,不过你还得另外买台显示器。算下来,在macOS系统上无论是做开发、娱乐还是其他工作,都要比其他操作系统的成本高出不少。这也导致了macOS系统的关注度比其他操作系统低。

本书讨论的内容偏偏正是这样一个受众较少的操作系统上软件安全相关的话题,相信读者与我一样,能够感受到这些年macOS系统的安全形势与变化。随着苹果系统普及率的提高,安全问题将会慢慢凸显。

本书特点

  • 循序渐进的学习路线。从本书开篇起,书中的知识与技术点无一不是由浅入深逐渐展开的。工具的使用与原理的讲解也都符合学习的思维。读者在阅读本书时,几乎不需要频繁切换章节。
  • 实例分析。在讲解不同技术点时,为了让读者充分感受技术涉及的应用场景与实际的展示效果,书中会辅以大量实例。每个实例都是笔者精心编写反复调试过的,并且都是开放源代码的,读者可以通过阅读这些实例的源码来加深对技术的理解。
  • 实用工具讲解。本书提倡读者多动手实践,其中实践的一部分内容就是掌握书中介绍的第三方工具。本书除了系统地介绍一些命令外,还使用到了八十多个第三方工具。这些工具大多是免费与开源的,掌握这些工具的使用,阅读理解它们的代码,了解背后的工作原理,才能更好地让实践与理论相结合。

如何学习本书

本书共12章,系统地讲解了软件安全相关的环境搭建、语言基础、文件格式、静态分析、动态调试、破解与防破解、游戏安全、恶意软件等多个主题。其中,环境搭建与语言基础是本书最低的技术门槛,属于软件开发的范畴。这部分内容主要针对零基础macOS开发的读者;如果你从事过iOS/macOS软件开发,那么可以跳过。后面每一个技术点都是独立又相辅相成的,虽然可以跳过一些章节进行学习,但不鼓励这么做。

在讲解工具的使用上,对于命令行工具,本书会以终端命令展示与输出结果的形式讲解;对于有界面的GUI工具,本书会辅以图示来讲解操作步骤与展示效果。读者在实际动手时,可以按照书中的指引一步步地进行操作。

本书适用人群

本书主要讲解macOS平台软件安全相关的技术,在读者的定位上自然是离不开“软件”与“安全”这两个领域的。

软件方面,适合的读者有:

  • 软件开发高校学生;
  • iOS/macOS软件开发工程师。

安全方面,适合的读者有:

  • 信息安全的高校学生;
  • 软件汉化人员;
  • 软件安全研究员;
  • 系统底层开发人员;
  • 逆向工程师;
  • 病毒分析师。

阅读须知

本书的创作花费了笔者大量的时间与精力,它得以顺利出版,是无数个日日夜夜调试与写作的成果。因此,我不欢迎阅读本书盗版的读者,无论你通过什么渠道,出于什么目的,当你通过阅读盗版书看到这番话时,都是对笔者深深的伤害。

任何一种技术都有它的应用场景,任何一种知识都有更新与迭代期。本书创作时,恰遇OS X系统更名为macOS,系统刚升级至10.12,因此本书中讲解的工具与技术,是基于这个时期的系统版本,不能保证这些工具与技术在系统日后的版本上依旧能够适用。因此,本书不对日后版本系统上的可行性做任何担保,也不欢迎好事之徒对书中技术的可行性进行无端猜测。

本书是一本工具实践书,讲解了工具的使用与原理以及在实际分析过程中遇到的多数问题,但这并不代表本书能够帮你解决所有的问题。而且单纯通过阅读一本书并不足以完全了解逆向工程这一门深奥的学问。如果读者期待仅仅通过本书就完整地理解系统的安全机制与所有的软件攻防手法,那么本书可能不适合你。

逆向工程是一门特殊的技术,它就像一把利刃,使用得当可以保护自己,使用不当就会伤害别人。本书中的技术只供用来做技术探讨,不得用于非法商业目的,任何企图通过本书技术从恶的读者,都请好自为之。

实例代码与勘误

本书中的实例代码全部拖管到了Github上,读者可以到https://github.com/feicong/macbook页面下载全部的实例代码。

本书在图灵社区本书主页和Github上均开设了勘误页面,如果细心的读者发现了书中的错误,可以提交issue。

  • 图灵社区:http://www.ituring.com.cn/book/1958
  • Github:https://github.com/feicong/macbook_issues

致谢

首先,感谢父母的养育之恩,是他们给予了我生命。他们是最可爱的人!

感谢老婆蓉对我工作的理解,由于工作的忙碌与截稿期的临近,我把本应该陪伴她的大量休息时间花在了伏案写作上(我不会在这里告诉你,我已经在为下一次的旅游计划做准备了)。

感谢图灵公司对本书的认可与支持,感谢策划编辑张霞对本书内容的跟进与督促,这才使得书稿能够顺利地完成。

此外,在写作过程中,我得到了很多朋友与同行的帮助。熊猫正正一起构建了本书的写作框架,提供了丰富的macOS系统与逆向方面的学习资料,这些都是宝贵且难得的;仙果提供了部分章节中逆向工具方面的演示效果;黄药师给出了游戏安全章节的有效建议;Claud Xiao对目录的制定提供了建设性的建议;还有很多朋友在写作内容与审稿上给出了意见,他们是:Proteas、听鬼哥说故事、怒吼①聲つ喵、人生无NG(淡然出尘) (排名不分先后)……在这里向你们表示衷心的感谢。

目录

  • 前言
  • 第1章 如何分析macOS软件
  • 第2章 macOS系统安全架构
  • 第3章 软件开发基础
  • 第4章 macOS软件内幕
  • 第5章 汇编基础
  • 第6章 软件静态分析
  • 第7章 软件动态调试
  • 第8章 调试器开发
  • 第9章 破解技术
  • 第10章 反破解技术
  • 第11章 游戏安全
  • 第12章 恶意软件与Rootkit
  • 附录
  • 参考资料