看雪Android高研班2w3w 春秋秋季 Android逆向系列
Android 逆向分析工具
已报名记录下笔记
通用逆向分析步骤
1.了解该模块正向编程相关方法
2.使用apktool解密apk,得到资源、jni模块等文件
3.从apk提取出dex文件,使用dex2jar转换成jar文件,再用java逆向工具得到java源码 dex->jar->java
4.根据特征(字符串、常量、包名类名方法名、manifest文件、布局文件等方式)或调试手段定位到关键代码
5.分析变量含义类型、函数逻辑、模块流程
6.对变量、函数、类进行标注、恢复成高级语言 ->c
Android程序的特点相比在于使用混淆方式打包,将包名、类名、函数名改成不易看懂的字母,从而使生成的apk小很多(android studio提供了release编译方式,使用proguard混淆),因此反编译apk最多的工作在于重构这些名称,这一点和pc上一致,对于android native程序(jni)则和pc上基本一致,不同之处在于常见的是arm汇编。