小编语

本文为 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 为什么这么快”虚无缥缈难以捉摸,但是影响深远,一旦捕获受益终生。

这种事情很难线上体验,会有很多缺失。但是其他的如分享的内容,你总是可以免费得到的,无非就是晚一点。找基友也有群,也不用太腼腆。

这也是我想对参会的各位朋友所表述的。

对于无法到场参会的朋友,我想说的是,在职场中,我们每个人的价值,不是“我会什么”,而是“我能为我的用户、客户、领导、上司、老板、公司解决什么样的问题”。这句话跟张小龙说过的“用完即走”一样,字面意思极其浅显,但希望大家有一天能领悟到它的深层含义。

谢谢!

本篇文章仅代表嘉宾个人观点

大会的详细信息请见:http://idev2016.devlink.cn/

《 iOS 应用逆向工程》作者沙梓社专访:运用逆向工程思维来优化自己的产品相关推荐

  1. 专访iOS开发框架BeeFramework作者郭虹宇

    BeeFramework是一个iOS应用开发框架,由国内开发者郭虹宇创立并且在Github上开源.经过一年多的发展,BeeFramework在Github上,得到了广泛关注,有1000多的star数和 ...

  2. IOS模拟登录之沙盒原理

    IOS模拟登录之沙盒原理 info.plist 文件

  3. iOS 照片存储到沙盒 和读取

    iOS 照片存储到沙盒 和读取 这里介绍简单的ios照片保存到沙盒,然后读取出来. 1. 照片保存到沙盒 UIImage *image=[UIImage imageNamed:@"20141 ...

  4. UE 手游在 iOS 平台运行时内存占用太高?试试这样着手优化

    性能优化,对游戏开发来说是一个需要不断钻研的课题,性能越好,游戏才会运行的更加顺畅,玩家的体验感才会更好.腾讯游戏学院专家.游戏客户端开发 Leonn,将和大家分享 UE 手游在 iOS 平台上的内存 ...

  5. 再谈CVE-2017-7047 Triple_Fetch和iOS 10.3.2沙盒逃逸

    作者:蒸米 0x00 序 Ian Beer@google发布了CVE-2017-7047Triple_Fetch的exp和writeup[1],chenliang@keenlab也发表了关于Tripl ...

  6. 专访搜狗输入法 iOS 版开发负责人李腾杰:第三方输入法开发与优化实践

    输入法是一种对性能要求极高的产品,不同于普通应用开发,很多在普通应用开发看来不是问题的,在输入法看来却是比较关键.同时,由于 iOS 系统的某些限制,输入法不得不在产品功能和性能方面做出调整,以尽可能 ...

  7. IOS数据存储 —— 1 沙盒(数据存储目录)

    沙盒结构 沙盒的文件系统⽬录,如下图所示(假设应用的名称叫Layer) 1.Documents 目录 您应该将所有的应用程序数据文件写入到这个目录下. 这个目录用于存储用户数据或其它应该定期备份的信息 ...

  8. 万字干货!《人人都是产品经理》作者苏杰独家专访

    "人人都是产品经理"它既是一个书名又是整个行业最知名的"金句",相信作为产品经理的小伙伴对它都不会陌生.09年初,时任阿里产品经理的苏杰提出了这个对行业影响深远 ...

  9. iOS打开沙盒html,ios 开发中,沙盒目录解释

    在iPhone的沙箱模型有四个文件夹,分别是documents.tmp.app.library. 创建文件的时候会先创建文件的路径,方法如下: 1.Documents:这是文档目录.有关应用的所有数据 ...

最新文章

  1. 第二章、FastDFS单机搭建过程
  2. MVC应用程序播放RealPlayer(rmvb)视频
  3. linux truss strace ltrace 对比 诊断调试程序
  4. Di-visible Confusion 贪心,模拟,思维,时间复杂度
  5. P1966 火柴排队
  6. 易语言复制C指针,易语言教程API模块制作cmd复制文件
  7. 园区网VLAN应用实例
  8. Leetcode-整数反转 C++
  9. C ++ 指针 | 指针的操作_2
  10. ng机器学习视频笔记(三) ——线性回归的多变量、特征缩放、标准方程法
  11. 一切都是瞬息,一切都会过去,而那过去了的,将成为亲切的回忆。
  12. error: undefined reference to `PathTrace::PathTrace(World*)' (Codeblocks, C++)
  13. 各种卫星产品数据总结
  14. 上古卷轴5传奇版LE与重制版SE的区别(LE Vs SE)
  15. 【中秋系列】这款秘制Python月饼游戏,拿走不谢~
  16. 看过之后,今年的深信服创新大会确实有点儿不一样……
  17. 【最短路】Graph practice T2 drive 题解
  18. 双千兆网口路由器方案开发板香橙派R1 Plus LTS连接USB无线网卡测试说明(OpenWRT 系统)
  19. JS获取网页大小和鼠标当前坐标
  20. Oracle分区表管理

热门文章

  1. 制作的excel表格如何放到微信公众平台文章中?
  2. body 没有被撑开_为什么父div没有被撑开
  3. 【读书笔记】《比基尼口才》文皙铉
  4. 问题:MongoDB C# driver异常:Truncation resulted in data loss
  5. 使用Telnet连接smtp服务器发送邮件
  6. python帮拿王者荣耀金币
  7. 移动机器人全覆盖路径规划及仿真(三.地图分割)
  8. Java实现字典树 Trie
  9. 计算机教师评语中职,中职期末评语
  10. [BZOJ1271][BeijingWc2008][二分]秦腾与教学评估