您好到访“众安网络” 为创客企业提供互联网创新与技术解决方案服务商

更多>>
您的位置:首页 > app开发资讯 > APP开发知识APP开发知识

如何从技术上全面分析一款Android App?

 
发布时间:2018-07-061111

假如手上有一款apk,没有源码也没有文档,如何借助各种工具,尽可能还原其中的技术,全面分析可能存在的漏洞和性能问题并提出建议。需要关注哪几个点才能算得上全面?

答:主要有3点,分别是技术、漏洞、性能分析。

1. 逆向工程

逆向工程,这个领域很广水也很深,但主要技术无外乎两点,静态分析以及动态调试。静态分析的话,从简单的jadx, apktool到复杂点的jeb,IDA等工具都能派上用场。一般来说,绝大部分程序靠静态分析(你就当是反编译吧)就能摸清楚个大概,何况很多Android程序都是裸奔的,顶多加个混淆。动态调试的话用来对抗anti-decompiler以及对于复杂逻辑和流程的把控;对职业素养要求比较高,不紧要熟悉汇编还要有敏锐的直觉;像我只能搞些简单的。另外可能有的程序需要脱壳,这一块不熟不敢妄言。

上面的动态调试以及接下来的分析可能需要apk可以调试;所以先说说怎么把一个app弄成debuggable的,有三种方案。其一修改manifest文件里面application的debuggable属性然后重新打包,方法最简单但是需要解包对于有自校检的程序还需要额外处理;其二,root手机,用xposed框架修改其co.debuggable属性;其三,nexus手机刷aosp修改映像文件的co.debuggable属性。方法二和三不需要修改apk,一劳永逸,个人比较喜欢三,因为还能拿来调试Android系统源码比如system server什么的,行号都能对上。

漏洞和性能分析。

2. 漏洞分析漏洞分析的话比较多,需要结合第一点,也有一些检测漏洞的平台就不打广告了。提几点吧

数据存储;是不是把敏感信息明文存了?动态加载了外部dex/资源?数据传输;用fiddler抓包,密码明文传输?加密方式简单?组件暴露;这个漏洞比较常见,攻击方式多种多样。比如那个有名的Intent攻击,爪机就不给链接了。Webview漏洞;这一块漏洞也有点多,乌云报了一些,比如javascript注入攻击什么的,检测工具应该也能做。其他的一些比如logcat信息泄露啊什么的实在是太多了,只不过没有引起广泛关注,我一时也想不起来,待补充。

3. 性能分析

性能分析,我理解有内存性能,IO性能, 界面性能,耗电等。内存性能,用debuggable的app结合mat等专业工具可以分析。另外最近的Leakcanary很好用,但是要手动加入代码;合理猜测用xposed写个模块hook掉这个app然后植入代码应该可行,待验证。IO性能,Android上没有什么好用的工具;不过linux内核支持,iotop这个命令可以分析IO占用。可是通常的Android ROM编译的时候去掉了这个编译开关,结果没有这个功能。如果需要的话,需要自己修改编译参数打开这个开关(具体哪个忘了,xda论坛可以搜索),然后自己编译Android内核;这个我曾经做过,如果感兴趣我可以写一篇文章。界面性能;这个嘛,SDK就有很多工具,比如Hierarchy Viewer,uiautomaterviewer等,还有手机自带的开发者工具诸如过度绘制查看工具,cpu GPU使用率等,选择较多。耗电;简单来讲Android系统电池用量就可以看,也有专业工具little eye什么的。

0592-5073827

售前咨询(09:00-18:00)

[email protected] 众安(厦门)网络科技有限公司-风源ACNPHP技术品牌开发服务商  版权所有 闽ICP备14008980号-9 网站地图