重点看下:
一、APK 加壳脱壳现状
加壳覆盖率很高 : 当前的应用 , 基本上 90% 都会加壳 , 各大加固厂商 , 基本都 提供免费的加壳服务 ; 很难找到不加壳的应用 ;
脱壳场景 :
竞品分析 : 分析竞品 APK 时 , 如果对方加壳 , 需要 先脱壳 , 然后才能分析 ;
恶意操作分析 : 恶意应用一般都会加壳 , 并且加的壳都很特殊 , 需要 先进行脱壳 , 然后才能进行恶意代码分析 ;
二、判断 APK 是否加壳
如何判断一个 Android 应用是否加壳 :
- 直接解压观察 : 将应用 APK 解压 , 观察其特征 ;
- Android Killer 分析 : 使用 Android Killer 等工具分析 APK 文件 , 会提示加壳信息 , 分析加壳种类 ; 每种加壳的方式都会留下加壳的指纹特征 ;
- GDA 分析 : 使用 GDA 分析 APK 文件 , 将 APK 文件直接拖动到 GDA 中 , 就会进行自动分析 ;
三、APK 逆向流程
检测加壳 : 使用检测工具 如 GDA 等 , 判断 APK 文件是否加壳 ; 根据加壳的相关指纹信息 , 判断加的是哪种壳 ;
脱壳 : 针对 APK 加壳类型 , 进行 脱壳 ;
反编译 : 使用 反编译工具 如 ApkTool , JEB , Jadx 等 , 对 APK 进行反编译操作 ;
定位关键函数 :
- 静态分析 : 静态分析 得到 关键 字符串 , 函数 等信息 , 定位需要分析的 关键函数 ;
- 动态分析 : 使用 Hook , 动态调式 技术 , 进行 动态分析 ;
深入分析 : 根据 关键函数 是 Java 还是 C/C++ 再进行不同的深入分析 ;