【专访】友盟iOS Team Leader 张超:通过“灰色通道”,逆向学习别人的代码 | iOS DevCamp

为了帮助与会者更好的了解每一个技术讲座的内容,我们对 #DevCamp# 的很多讲师进行了专访,以帮助与会者了解:

WHY 为什么选择这个主题?

WHAT 这个主题覆盖哪些内容?

HOW 以怎样的方式呈现出亮点?


逆向工程技术剖析:《揭开IPA文件的灰纱--通过静态分析工具了解IPA实现》 | iOS DevCamp 

议题简介:在AppStore中经常会出现各种令人耳目一新的App,他们是如何实现那些效果的?他们又是使用哪些公共组件来完成自己的功能的呢?在本次演讲中将对如何探索那些封藏在IPA文件后面的实现进行简单的分析,将会针对其中的一些工具进行具体的演示和介绍。

讲师简介:张超,iOS创业者,2009年在深圳第一次创业,主要从事iPhone应用的开发,完成了从技术到产品设计以及团队运营管理等全流程角色的转换,积累了丰富的iOS创业经验,熟稔App store的规则及流程,了解开发者的需求,并掌握了创业项目的全程运作能力。 目前在国内移动互联网统计分析平台——友盟,担任iOS Team Leader。是创新工场和友盟的早期团队成员。

详情:http://blog.csdn.net/shiningxyy/article/details/7702217


以下是访谈精华(备注,张超很善谈,以下的内容仅囊括的访谈的部分内容。强烈推荐各位到iOS DevCamp上与张超做深入交流和沟通。):


Q:这个技术分享的主题关键字是什么?

#IPA#

#逆向工程#

#灰沙# 这里我讲的,并没有到源码级别,所以用“灰沙”,而不是“黑盒”


Q:为什么选择这个主题?

我每天几乎都在做逆向工程。举例说,有些人去集成了我们的SDK,他说有问题,他这个问题可能说新旧版之间API的变化,或者他使用上有些问题。那我们这个怎么去判定呢?肯定是需要通过逆向的方法来检查,因为我们拿不到他更多的信息。我不能说:你把原码发来,我给你看一下。当然以前曾经很早期的合作伙伴是有过这样的情况。我帮他改原码,这样的情况也是有的。但现在都是很多大公司开发的应用,不可能把那些应用的源代码发过来。那我们只能通过这种方式来排查问题。看他是在哪集成、在哪调用,我可以看他的工程师是否符合我们的文档描述,大部分的错误其实都是由于产品的新旧版更替,或一些API的变化导致的问题。所以在讲这个主题的时候,我会去从几个角度去分析这个事情,不会讲一个特别具体的Case,我是会讲一般的过程。

选择这个主题,就想让大家有一个方法,告诉大家怎么去探寻那些他们不知道的东西是怎么实现。有些其实不是秘密的秘密,只是很多人不知道而已。其实大部分iOS应用的技术含量并不高,很多开发者的整体思想都差不多。而说到一个App的成功,并不是说技术非得有多牛,而是说整体的运营,整体的设计,整体的产品,开发者如何去掌控这些。

简言之,通过“灰色通道”,学习别人的代码。


Q:如何评价逆向工程?

张超:逆向本身是看你什么目的。比如说经常说的一句话,双刃剑,那你拿这个剑去杀人还是去救人,都是一念之间的事,所以这个东西看你怎么去用。

业界做逆向最有名软件,就是IDA Pro,这软件相信大家之前其实已经有所耳闻了。比如著名的360事件,传说就是有些人把360的App逆向了。那些在网上流传的截图就是用IDA做的。所以其实这个东西很多人都知道,只是说看他怎么去用。

IPA加密、破解、以及破解检测。友盟也有工具检测软件是否被破解。

我这次演讲不会介绍IDA Pro这款软件。而是会介绍另外一个新的软件。这个小工具是近一两年之内才发展起来的新软件,它不像汇编级的那么不可读,因此也没有逆向的那么彻底。汇编的内容肯定有,但汇编对一般人来说,不是那么可读。这个工具做的一件比较好的事情,就是它可以把那些汇编的符号表给连起来,这样就可以去反编译出来C级的原码。虽然这源码不能直接用,但是你可以去了解,去窥探。它类似编译码,可读性也更强一点。对比IDA Pro来说,可以让大家比较简单的去了解这个过程。

这个讲座并不会深入到汇编级别,不会是汇编基础知识的培训课程。


Q:通过静态分析工具了解IPA实现,对开发者有何意义?

张超:很多iOS程序员做到一定程度会有瓶颈,这个瓶颈不是技术造成的,而是思维造成的。我认为,这个归因于,很多是培训机构惯性教出来一些程序员,他们的思维结构也是固化的,很多人不知道如何进步。很多人的App做完了,很少做重构,像twitter那样。友盟做SDK,很多东西都需要跑到别人的程序里去钻研,它的稳定性、安全性方面都要考虑,反复打磨。在接口设计上,很多人也不会去考虑。

另外一方面,在接口设计上,一般人也不去考虑,他因为不需要给别人用。我们内部会做很多逆向的一个原因,就是去学习别人的接口是怎么设计的。这个东西是不会有特别多的资料的,除了逆向这条路以外,也没有更多的东西去走。所以我们看一些SDK,看一下是怎么样的过程,它怎么设计的,这对我们的内部设计也是非常有好处。


Q:iOS开发者应该在哪方面加强?

张超:

1)单元测试。

如果说你是特别好的程序员,那你该去做单元测试,去考虑接口的设计。有一句话,我觉得印象比较深刻:如果你这个程序没法写好单元测试,那意味着你这个东西需要重构了。因为你的接口设计可能只是实现一个功能,全都返回值可能都是空,这样的你根本没有去做单元测试。这是同样的道理,你要去考虑一下对外的良好性,或者你自己的一个模块化的设计。如果说你真的想好好搞好程序,自己打磨是可以的。如果自己的功力还不够,那你只能说通过一些这种灰色通道去看一下别人的代码。

我们现实存在的问题是:这个年代是产品经理驱动的年代,很难有做单元测试做的很好的人。友盟推广单元测试推了很久。iOS Team有很好的单元测试的示范。我们做的时候,就发现是公司权衡成本的过程。招iOS的人来做测试,基本比较不现实。友盟iOS team的人只有2个是外招的,其他都是自己带出来的。

2)设计理念

iOS的技术透明度很高,技术不是最核心的。最核心的是“整体”,Apple两次iOS Talk上都提到,60%~70%的时间都是设计,设计,不仅是UI+UE,一本书《像设计师一样的思考》,我认为做技术的,同样每天都要思考,我如何让这个东西做的更好。


Q:你们的研发团队如何在内部做技术分享?

张超:这个问题我很有感触。

我曾经接触过专门做技术培训的人,但是发现他们的思维太死板。尝试过几次,就放弃了。于是就自己做。新人培训,我自己会去安排一些课程给他们讲,培训路线是怎样的。我不喜欢喂他们吃,更多的是跟他们一起学习。2个月的课程,涵盖了Apple很多文档和视频的基本知识。Apple的文档是分层次的,会培训他们看这些Guide和视频,无论是Apple提供的,还是第三方的,有很多。我们的内部分享,基本上是围绕着这个做。

比较少的是,我讲,你听。更多的是,大家一起学,一起培养团队的默契。

友盟做开发者服务,我们内部分享,围绕的主题,就是,如何给开发者更好的体验。我们本身就是开发者,我们能提供哪些资源给这些开发者。


Q:为什么不自己做App?而来友盟做逆向工程?

张超:我自己的确没有做过App。

加入友盟,是因为这些人,创新工场的,经纬的,这些都是让自己说起来很让人骄傲的事情。友盟CEO、CTO,还有我们team成员,大家都是想做事情的人。我看过太多的App团队,被解散了,被卖了,看太多了,整个行业的浮躁,在友盟是比较少看到的。能看到问题,但不断有进步。大家都是在追求自己的理想,在这里发现自己想要什么。这是让我觉得,非常有凝聚力的平台。

友盟是一个很稳定的团队。友盟发展到现在,可以做的事情很多,不仅仅是SDK的东西,除了SDK之外,还有什么可以做。我们的团队分享的很多,公司给了很多机会,让我们去尝试。

我认为毕业以后的第一件事情,接触的第一圈人,对自己至关重要。我毕业就创业了,自由的树立自己的东西。到工场的环境,有人告诉我正确的事情,正确的方法。再后来,才是自己去找一些目标。

最近接触一些人,感慨。有些文科和高考的弟弟妹妹,他们有些理想,但很快就否定--“那样太理想化”。我认为这个思想是很危险的,很容易陷入到,这个不行,那个不行。过早承认自己不行,就扼杀了创新的可能性。


Q:对7月27日 iOS DevCamp 和 7月28日的Android DevCamp有何期待?

我觉得iOS社区的分享力不够,相比之下Ruby分享力则非常强。全球都有这种情况,但国外对源码的开放度更强。

我期待国内能有更多这样分享的会议。


iOS DevCamp 7月27日 | Android DevCamp 7月28日 | 北京 | 新云南皇冠假日酒店

这是一个真正属于移动开发者的会议,参会者以交流、学习、提高、答疑解惑的移动开发实践者为主,你将极少看到投资人、市场人员、名人大腕、还有不知是何目的来参会的“打酱油”的人。参会者只有像你一样的有经验的开发者和工程师。 


【特色】:

- 一个真正意义上的iOS/Android开发技术大会。

- 企业间、团队间交流和学习移动开发技术实践的平台。

- Dev to Dev,来自开发者,服务开发者。所有课程内容均不含任何商业推广目的。

- 课程内容覆盖iOS/Android知识体系的重要方面,并重点分享典型移动产品的开发实践。

- 国内资深移动开发专家评审团队对所有课程进行把关,确保课程内容全部为“无水分” “干货” 。

- 全部课程均有资深开发者讲授,他们或许不是名人大腕,但一定是“技术大牛”

- 与会者全部都是移动开发者和工程师及其开发团队成员


更多讲师和议题,持续更新中!请关注:

官网:http://devcamp.csdn.net/

博客:http://blog.csdn.net/shiningxyy

微博:http://weibo.com/cmdnclub

论坛:http://cmdn.net/


【专访】友盟iOS Team Leader 张超:通过“灰色通道”,逆向学习别人的代码 | iOS DevCamp_第1张图片

【专访】友盟iOS Team Leader 张超:通过“灰色通道”,逆向学习别人的代码 | iOS DevCamp_第2张图片




你可能感兴趣的:(【专访】友盟iOS Team Leader 张超:通过“灰色通道”,逆向学习别人的代码 | iOS DevCamp)