iDev 苹果开发者大会火热报名中,通过此篇文章可用 ¥ 199 抢购原价 ¥ 569 的大会门票一张,仅限 5 人!
优惠码: [ shazishev2ex ] 抢购地址: http://www.bagevent.com/event/207773?discountCode=shazishev2ex
————————————————————————————————————————————————
小编语 本文为 DevLink 专访系列,本期采访嘉宾是 iDev 苹果开发者大会 iOS 逆向工程讲师——沙梓社。在即将到来的 iDev 大会上,他将和大家分享对逆向工程的理解,以此激发大家的思路和灵感。
《 iOS 应用逆向工程》第一作者——沙梓社是 iOS 越狱社区骨灰级活跃份子,对技术有着狂热的追求。非典型技术男。做事标准较高,喜欢归纳总结,推崇深度思考,乐于讨论分享。渴望结识优秀人才,督促自己不断成长。
而这次 iDev 大会组委会特别有请到了他来作为嘉宾,希望他能在苹果的开发者大会上,分享一些他多年的专业知识。这次他为我们带来的议题题目为《 iOS 逆向工程一隅》。
什么是逆向工程? 它能解决什么正向开发所解决不了的问题? 很多 3 年经验的 iOS 工程师都已碰到技能提升瓶颈,我们应该如何用 iOS 逆向工程来武装自己,打破 App 开发的“ 3 年之痒”?
————————————————————————————————————————————————
以下为采访内容,提问者: DevLink ,受访者:沙梓社。
1 、沙老师您好,能否简单的介绍一下你自己?
大家好,我是沙梓社,“老师”还不敢当,以我目前的状态来说,无论是在做人还是做事上,我都还是一枚普通的学生,哈哈。
我是一个非典型的技术男、理工男。我在读硕士时“侥幸”踏上了 iOS 逆向工程这条“贼船”,之后就再也没有下来过;我出过书,创过业,做得越多,见识越广,对“人外有人,山外有山”的感受就越深,虽然我自认为是一个比较有上进心的人,但随着年龄的增长和经历的丰富,我慢慢褪去了年轻气盛的浮躁,逐渐生出了心平气和的淡定。
2 、您关注的领域在大家看来,与普通开发者会有一些差异,您关注的更多是 iOS 在代码安全领域的事情,而不是具体的开发实现。能否介绍下为什么比较关注这个领域么?
其实这里存在一些普遍的误解,就是 iOS 逆向工程主要服务于 iOS 安全;但事实并非如此。 iOS 逆向工程是一个工具, iOS 安全只是这个工具的应用场合之一,而我的兴趣点其实并不在这个应用场合;我关注更多的是如何运用逆向工程技术来改进自己的代码,如何运用逆向工程思维来优化自己的产品。这是一种打破思维定势的思考和办事方法论,也就是苹果所提倡的“非同凡想( Think Different )”。
其实对这个领域的关注,更多地要归功于我的硕士生导师。计算机硕士毕业,一般需要在毕业设计中体现一些“研究成果”,而在 5 年前, iOS 开发还停留在初、中级阶段,绝大多数功能只需要对着文档撸代码就可以了,没有什么“研究”可言;这样我的硕士是无法毕业的。基于这个最主要的原因,结合苹果较为“封闭”的特点,我的导师建议我选择“研究”性质相对较强的逆向工程,做一些技术门槛相对正向开发更高的事情,来顺利毕业。
后来,我在摸索中深深感受到了逆向工程的巨大魅力,从此一发不可收拾。谁能想到,本来只是为了硕士毕业的选择,竟然对我的人生产生了如此深远的影响。真是——缘,妙不可言~
3 、您这次分享的主题是关于 iOS 逆向工程的,能否跟大家“剧透”一下要讲些什么?
刚才提到,正向开发没有太多“研究”可言,而这也是绝大多数 iOS 工程正在面临的“三年之痒”——很多拥有三年 App 开发经验的 iOS 工程师,遇到了技术提高瓶颈,职业规划貌似也碰到了天花板。在我看来,这是比技术问题更值得深入探讨的话题,它的难点在于,没有标准答案,解决方案又因人而异。
我这次的分享不会过多涉及技术细节,这些琐碎的东西可以在我建立的诸如 QQ 群、论坛等渠道私下交流;主要想讨论的,是我对逆向工程的理解,和它所能够解决的一些问题,希望以此为契机,激发大家的思路和灵感。在我创业的一年半载中,我观察到,绝大多数的 IT 工程师是“两耳不闻窗外事,一心只写圣贤码”的,且不以为“耻”,反以为荣。私以为,这样的思维方式,在提高专业技术上是我们的绝对优势,但在培养综合能力上则是我们的巨大短板。
在这次会议中,我希望能够通过从形式到内容上的不同,来带给与会的朋友们一些“冲击”,激发他们的思考。
4 、作为越狱社区的活跃者,您如何看待 iOS 越狱这件事?有人说,随着 iOS 系统的进步,普通用户对越狱的需求变得少了,您是怎么看待这个问题的?
我是越狱的坚定拥护者;我的所有 iOS 设备,只要能越狱,一定会越狱,因为我需要实现很多不越狱所实现不了的功能,比如定制第三方推送的提示音( t.cn/RtiZ7vD )。
苹果在防范越狱上采用了非常高明的招数——它不是生硬地通过法律或其他手段来阻止黑客继续越狱,而是“偷走”了越狱社区里无穷无尽的奇思妙想。例如,现在的 banner 式推送通知,灵感来源于 Peter Hajas 开发的 MobileNotifier ;现在的 control center ,灵感来源于 BigBoss 开发的 SBSettings ;现在的 night shift ,灵感来源于 f.lux 。
大多数普通果粉感兴趣的并不是越狱本身,而是越狱之后他们能干很多不越狱干不了的事。现在苹果把大多数果粉越狱后最想干的事情,给搬到了原版 iOS 中,很多果粉就没有再越狱的理由了。没有了群众基础,国外的大多数越狱玩家也就丧失了研究越狱的动力,由盘古等国内团队接棒了。虽然我是越狱社区的一员,但我认为,越狱的黄金时代已经过去,我们社区的活跃程度也大不如前了。但好消息是,几乎所有老玩家,都还奋斗在一线,寻找下一个“监狱”,哈哈。
5 、除了《 iOS 应用逆向工程》这本书以外,您接下来有没有其他的写作计划,能否透露一下?
我暂时没有其他的写作计划了;很多朋友问我是否会出版《 iOS 应用逆向工程》的第 3 版,我的答案是否定的,因为虽然 iOS 在不断更新换代,尽管实现细节会略有差异,但 iOS 逆向工程最最核心的思路却一直没有变化,书中所介绍的思维方式和方法论适用于所有 iOS 版本。在这种情况下,我不想换汤不换药地为了出书而出书,那意义就不大了。
前阵子,机械工业出版社的编辑朋友问我,有没有打算把我的创业文章整理出版;因为总共也没写多少东西,而且都是粗浅的理解,还远远够不上出书的水平,所以后来我抱歉地拒绝了。
6 、我们知道,前段时间您刚刚结束了一个为期 18 个月的创业,并把创业经历写成了文章与大家分享,对于技术人员创业,您有什么建议给大家么?
我花了整整一个月的时间,专心去写这十篇文章( t.cn/R5em4LU ),它们既是一次分享,又是一次总结;我所有的建议都已经毫无保留地体现在文章里了。
如果是对技术人员创业,我的建议就是不要把自己当成技术人员。随着阅历的丰富,我对这一事实的感受越来越明显:每个人都是独一无二的,不要被别人和自己贴的各种标签给束缚了手脚,限制了自己;大胆去做。
7 、对身处苹果生态链的一线开发者有什么要说的么?
在今年的 5 月,我有幸作为 PHP 之父 Rasmus 的贴身翻译,全程参与了你们主办的 PHP 全球开发者大会;对大会的评价,大家的反响都出奇地高。其中,我认为最能洞悉参会意义的,是知乎上的“ trylife ”,他说:
我去参加参加大会的动机是沐浴大神的气息,特别是父与鸟哥的气息。气息这种事情很虚,远比“ PHP7 为什么这么快”虚无缥缈难以捉摸,但是影响深远,一旦捕获受益终生。 这种事情很难线上体验,会有很多缺失。但是其他的如分享的内容,你总是可以免费得到的,无非就是晚一点。找基友也有群,也不用太腼腆。
这也是我想对参会的各位朋友所表述的。
对于无法到场参会的朋友,我想说的是,在职场中,我们每个人的价值,不是“我会什么”,而是“我能为我的用户、客户、领导、上司、老板、公司解决什么样的问题”。这句话跟张小龙说过的“用完即走”一样,字面意思极其浅显,但希望大家有一天能领悟到它的深层含义。
谢谢!
————————————————————————————————————————————————
iDev 苹果开发者大会,将于 2016.11.5-6 在北京国际会议中心举办,是面向苹果生态链开发者举办的线下技术交流活动。
议题范围涵盖 iOS 、 macOS 、 Object-C 、 Swift 以及苹果硬件及智能设备等,内容选题覆盖从企业级开发到函数式编程,从动态化到 hybrid ,从实际开发到测试管理,都安排了诸多环节来帮助大家“抬头看路”。力争为致力于苹果系统开发的同学们提供一个线下的学习、分享、交流平台。