如何从技术上全面分析一款android app?

假如手上有一款apk,没有源码也没有文档,如何借助各种工具,尽可能还原其中的技术,全面分析可能存在的漏洞和性能问题并提出建议。需要关注哪几个点才能算得…
关注者
732
被浏览
59,359
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

好吧,题主刚刚补充了问题细节,貌似文不对题了。

暂时懒得改答案了,我的原回答只针对标题,我理解成Android竞品分析技术方案的,大家看看就好。

------------以下是原答案-----------------

泻药,简单说下吧,经常干这事,国内外的竞品基本扒了个遍。

其实分析不只是看技术,既然你只问技术,我就仅从技术角度回答下,我主要是以下几个方面:

1. 直接看代码

是的,完全不做混淆的App比你想象的要多得多,想咋看就咋看,不要太爽。即便是混淆过的代码,还是有不被混淆的部分,就算它混淆做的好,硬着头皮也能看下去。不过一般你不会有兴趣的,尤其代码写得不咋地的时候,看得让人糟心,因此我看代码主要有两个目的:

1)分析这款竞品的代码质量,以对这个团队技术水平有个大致认识,结合他们更新的频率,基本可以猜出来是一个怎样水平的团队。

2)找我关心的功能的技术方案,看看业内同行是怎么实现的,比如说夜间模式,看似简单,其实有很多不同的实现手法,在体验,代码维护上如何做到最佳,是值得深究的问题。

2. 抓包看请求

关于如何抓包有很多方法,一般而言Fiddler这种就够了,通过分析他们的请求,可以看出他们的API设计水平,业务的实现方案,一般在一个领域里做得好与做得久的产品,其API应该是经历了非常多版本的演进与改版,很多坑人家都经历过了,这时候的API接口设计, 往往很值得借鉴,对于你今后的可扩展性非常有帮助。

另外,我们做海外App的,碰到的很多对手其实都背景不明,可能是任何一个国家的创业小公司,但通过分析其域名注册信息,发现大多数有力的竞争对手,还都是咱国内的同行,不得不佩服中国互联网发展之迅猛啊。其实通过API, 或者扒代码,也基本能判断是哪家公司,啥背景来着。为什么需要知道?知己知彼嘛。

3. 分析app数据

主要是指package下面的各种preference, file, database, cache等等,我基本每个文件都会瞧一瞧,大致就能猜出来这些东西是做什么用的,数据库如何设计的,缓存如何设计的,看完之后,凭借自己的经验与想象,就会对这款应用有更直观的认识。比如手机淘宝里的Hybrid方案如何实现?结合手淘的公开分享内容,加上抓包分析,观察app数据,就会有更为深刻的认识。

4. 了解各家技术方案

看同行们都用了那些好的技术方案,好的开源框架,混淆了?不要紧,开源项目包名一般不混淆,这种不局限于竞品,各种国内外知名Android App大家都可以去看看,看完就知道啥开源项目目前最流行,看到自己没听过的,就去Search一下,也许不经意间就发现一款感动到哭的开源项目,或者超级好用的服务,我有不少好东西都是通过这种方式了解到的。