Android 逆向用途 :
软件防护 : 根据逆向的方法针对性的开发防护策略 ;
算法研究 : 在没有源码的前提下 , 通过反编译 , 反汇编 , 拿到 Smali 代码 , 研究其产品的算法 , 实现途径 ;
接口分析 : 接入一个没有源码的第三方库 , 无法进行调试 , 出现问题后 , 可以使用逆向的方法 , 查找问题原因 , 解决相关问题 ; 找到问题后 , 修改汇编代码 , 然后重新打包 ;
数据采集 : 分析应用的数据 , 获取该应用的更新内容 , 运营信息 , 在 APP 中可以拿到一些非公开的数据 ;
调试分析 : 应用打包 , 混淆 , 加固 后上传到应用市场 , 如果某个分发渠道版本出现问题 , 可能就需要调试分析具体的这个 APK 包的问题 ; 结合源码与渠道包进行逆向分析, 查找问题原因;
Android逆向工具:
1、一块nexus google亲儿子手机(用于安装应用,调试等)
2、Charles
主要用于抓包,抓取应用的接口,这样能够快速通过接口来定位代码。
3、jadx-gui
也可以选择使用jeb,是一个很好用的逆向java工具,拖入即可,还可以查看变量调用,声明。
4、Android Killer
这个用的不是很多,一般条件允许的情况下用来把反编译的APP重新编译,用来编辑samil代码来调试。
5、Android Studio
安卓的开发IDE,虽然是做逆向,但是正向的工具绝对不能少,里面也自带了monitor调试查看工具,截图工具等,而且在我们逆向的时候常常遇到一些比较疑惑的代码,可以用Android studio来重现出代码的执行意义。
6、IDA7.0
这是分析SO层必不可少的神器,它也可以只是动态调试SO层代码。
7、Visual Studio
这里可以直接安装最新版的VS,主要用来把so层的代码还原出来,因为SO层是ARM指令,但是它可以转换成伪代码,一定条件下我们可以将伪代码扣成C++代码用来重现执行效果。
8、Frida
这个hook工具可以直接hook so层函数,也可以hook java层的函数,并且不需要重启手机,非常的方便,比xposed方便多了。
9、IDEA
这个主要用来写java和frida脚本的,但是需要在里面添加进python的支持;
10、python
这个是必须的,因为frida就是通过python来进行安装的。
11、winHex
这是一个十六进制编辑器,我们分析so分析,或者查看Android的dex的时候需要。