前言
若干年前,笔者购买了人生中的第一台iPhone,被它强大的功能深深吸引,爱不释手,但在使用的同时却发现了种种限制(后来才知道这是iOS的安全保护机制决定的)。苦于当时国内有关iOS的资料还相对匮乏,周边也少有玩家可以交流,笔者只好通过Google来寻找一些解决之道,也就在那时知道了“越狱”的概念。将手机越狱之后,就能安装各种插件,最大限度地操控它,这种奇妙的感觉,笔者至今都回味无穷。笔者是一个对技术极度痴迷的人,所以总想弄清楚这些插件到底做了什么,又是怎么做到的,甚至希望自己也能开发一款功能强大的插件,可想而知,在当时的条件下,笔者并没有成功。
直到2013年,笔者在机缘巧合下了解到了PP助手这个应用分发平台,其中就有很多平台发布团队自己开发的插件,恰好他们在招聘逆向工程师,这无疑是一个很好的机会。由于当时招聘的是Windows逆向工程师,笔者凭借多年的Windows平台逆向经验,顺利拿到Offer,第二天即从长沙飞到广州开始了新的征程。进入PP助手不久,笔者正式接手iOS方面的研究项目,那段时间经常挑灯夜战到凌晨,在CTO南哥及部门主管邵将的指导下,先后研究了iOS正向开发、iOS逆向分析、iOS插件开发等,技术上得到了质的提升。与此同时,记录的相关资料也越来越多,所以笔者多年的挚友蓝枫建议将这些资料整理成册,一来方便公司新人查阅,二来以后可以出版引导更多爱好者。笔者经过慎重考虑之后,采纳了他的建议,但这件事不能草率。笔者是个极度追求完美的人,所以这些年一直在做技术沉淀,由于更新迭代太快,每过一段时间都会将过时的内容进行替换,直到2019年,在基于最新技术增加多个综合分析实例后,这本耗时6年精心整理的书籍终于完成。
随着iOS设备的不断普及,正向与逆向研究人员也日渐增多,这让笔者甚感欣慰。现在各大论坛都有关于iOS的讨论,从中能感受到这些年来iOS所带来的巨大影响。总之,本书的内容都是笔者多年来的技术积累,及悟出的一些“道”,所谓“闻道有先后,术业有专攻”,相信不会让您失望!
1.本书特点
● 浅显易懂:本书在内容编排及语言表达上,尽量做到通俗易懂,无论是新手还是老手,都能通过本书快速领悟精华之处,找到“豁然开朗”的感觉——iOS应用逆向工程如此简单!
● 实战为主:本书尽可能抛开烦琐的理论部分,而是更多地采用实例讲解,一点即通。书中的实例也是经过精心挑选的,与所学内容前后呼应。
● 兼容性强:本书所讲的技术都尽可能兼容iOS 9~iOS 13,一些思想甚至能无限延伸,使读者不再禁锢于某个版本。
2.读者对象
本书介绍了iOS逆向分析、插件开发、算法分析及通信协议分析等方面的内容,面向以下读者。
● iOS爱好者。
● 逆向工程师。
● iOS软件开发工程师。
● App通信协议工程师。
● App安全审计工程师。
● IoT客户端安全工程师。
● 高校计算机相关专业的师生。
3.如何学习本书
考虑到读者的基础不同,本书由浅入深,共分四篇。
● 初出茅庐(第1~3章):准备阶段,内容包括基本概念、环境搭建、设备选购、逆向必备理论基础等。这部分主要针对零基础的iOS爱好者。
● 小试牛刀(第4、5章):初级阶段,全面讲解了iOS应用脱壳及闪退的修复方法、各种运行时分析方法与技巧、Frida高级应用等。这部分针对有一定逆向基础后想快速上手体验的读者,涉及了多个分析实例。
● 登堂入室(第6~11章):进阶阶段,最大限度地讲解了静态分析、动态调试、插件开发、Hook与注入、App重签名、调试器对抗、Hook检测、加密算法识别、应用安全、协议安全等。该篇是全书最重要的部分,穿插了很多实例讲解及技巧分享,主要针对掌握了初级分析方法,想让能力快速得到提升的读者。
● 融会贯通(第12~17章):综合阶段,对六个实际App进行了全方位剖析,包括文件格式分析、水印控制及配置开关分析、广告及内购流程分析、登录协议分析、下载协议分析、授权机制分析等。该篇是对全书关键技术的综合运用,主要针对想提高综合实战能力的读者。
原则上建议读者从头至尾按顺序阅读所有章节,并把书中的案例都实践一遍,如果实在抽不出那么多时间,可以挑最感兴趣的内容进行选择性学习,殷切期望读者能从本书中悟出一些属于自己的“道”!
4.致谢
● 感谢我的父母,在学习及成长路上一直支持、鼓励我。
● 感谢我的妻子、儿子、女儿,在写作过程中很抱歉对你们缺少了太多的陪伴,是你们的理解与包容让本书能顺利完成。
● 感谢我的挚友蓝枫,在支持我写作的同时找到涛哥、旺财哥帮忙联系出版社。
● 感谢我的挚友虫虫,为本书设计了精美Logo。
● 感谢机械工业出版社提供的平台,及张淑谦老师对本书内容的严格把控。
● 感谢看雪学院创始人、《加密与解密》作者段钢为本书作序。
● 感谢武汉科锐教育创始人、《C++反汇编与逆向分析技术揭秘》作者钱林松为本书作序。
● 感谢PP助手创始人席时伟(铁人)为本书作序。
● 感谢《iOS应用逆向工程》作者沙梓社(snakeninny)对本书的建议及作序。
● 感谢《macOS软件安全与逆向分析》《Android软件安全权威指南》作者丰生强(非虫)为本书写推荐语。
● 感谢金窝窝区块链科技董事长、北斗区块链首席科学家李立中(kvllz)为本书写推荐语。
● 感谢著名游戏安全专家、上海好连网络CEO卫鹏飞(fly)为本书写推荐语。
● 感谢麦洛科菲信息安全培训创始人、腾讯课堂周哥教IT创始人周扬荣(布强)为本书写推荐语。
● 感谢著名信息安全专家OWASP-陈亮为本书写推荐语。
● 感谢北京小悟科技创始人、《Windows环境下32位汇编语言程序设计》作者罗云斌对本书目录编排、内容定位的指导。
● 感谢PP助手研发团队,我的绝大部分技术都是在这里学到的,怀念和你们一起研究技术的时光。
● 感谢广州啦咔网络CEO邵将组建了优秀的研发团队,让一群志同道合的人聚集在一起做一些有意义的事,他们是LingN、Chago、一丢丢、星夜心雨、Bao's、Jcc、xiangism、lalala、RoyLei、CT、煎饺、崔程等。
● 感谢飘云阁管理团队:Nisy、GGLHY、yosen2001、alexwang、MOV、月之精灵、VC8、GeekCat、RoOKing、wgz001、yxg888、txz119、panpan8848、wei0227、wai1216、梦幻的彼岸及曾经奋斗在飘云阁一线的老版主们。
● 感谢飘云阁核心团队:zaas、dryzh、Jongan、gagmeng、hpindigo、东海浪子、天上飞的鱼、酒醒黄昏、感冒的猪baby及PYG解密小组全体成员。
● 感谢飘云阁移动安全团队:creantan、tree_fly、small-q。
● 感谢逆向圈的好友:ZeNiX、HyperChem、Crack_QS、xjun、F8LEFT、CCDebuger、zmworm、loveboom、AloneMonkey、linghanshi、cnbragon、jojo、SunBird、fxyang、火翼、老衲哥、海风月影、景楼、冷月孤心、听鬼哥说故事、空道、不追浮云的人、谈琰等(名单太长,不能逐一写上,见谅)。
最后,感谢购买本书的读者朋友,你们的支持是我最大的动力!
5.关于飘云阁
飘云阁(网址为https://www.chinapyg.com)成立于2004年12月1日,专注于Windows、Linux、iOS、Android平台的逆向工程研究,为各位技术爱好者提供一个良好的交流与合作平台,并由国内知名安全公司大神共同维护。同时,飘云阁拥有多年的网络教学经验,将掌握的最新技术倾囊相授,在教学模式和理念上一直走在网络教学领域前沿,其“PYG5.4教学”作为网络上最早的逆向教学之一,享有盛名。