移动安全Android逆向系列:基本概念&环境配置
字数 1984 2025-08-09 15:23:13
Android逆向工程基础:概念与环境配置
一、Android应用基础概念
1. APK文件结构解析
APK(Android Package Kit)是Android应用的打包格式,其内部结构包含以下关键组件:
- assets目录:存放需要打包的静态资源文件(图片、JSON配置、二进制数据等),支持任意深度子目录,不生成资源ID
- lib目录:包含应用所需的.so文件(C/C++编写的原生库)
- META-INF目录:证书签名相关文件
- MANIFEST.MF:包含APK中所有非签名文件的SHA1摘要(Base64编码)
- CERT.SF:对MANIFEST.MF的签名文件(使用SHA1-RSA算法)
- CERT.RSA:包含公钥和加密算法信息
- res目录:存放应用资源文件(图片、字符串、颜色等),会生成R.java资源索引
- AndroidManifest.xml:应用清单文件,声明四大组件(Activity、Service等)
- classes.dex:Android可执行文件,包含所有Java代码编译后的Dalvik字节码
- resources.arsc:资源索引表,描述具有ID值的资源配置信息
2. Android虚拟机演进
-
JVM(Java虚拟机):
- 运行.class文件
- 不直接用于Android应用执行
-
DVM(Dalvik虚拟机):
- Android 4.4及之前版本使用
- 运行.dex文件
- 通过dx工具将.class转换为.dex
- 单dex文件限制为65535KB(64K方法限制)
- 启动时需要合包过程,影响启动速度
-
ART(Android Runtime):
- Android 5.0+引入
- 同样运行.dex文件
- 安装时将dex转换为.oat机器码
- 原生支持多dex,无合包过程
- 优点:提升冷启动速度
- 缺点:APK体积增大,安装时间延长
3. APK打包流程详解
- 资源处理:打包资源文件,生成R.java
- AIDL处理:生成对应的Java接口文件
- 源代码编译:生成.class文件
- Dex转换:将.class转换为classes.dex
- APK打包:生成未签名的APK文件
- 签名:使用开发者证书对APK签名
- 对齐处理:优化APK存储结构(zipalign)
二、逆向工程环境配置
1. JDK与JRE安装
- JDK 8u111推荐版本:
- 包含JRE和开发工具(javac等)
- 环境变量配置:
- JAVA_HOME:
C:\Program Files\Java\jdk1.8.0_111 - Path添加:
%JAVA_HOME%\bin - Path添加:
C:\Program Files\Java\jre1.8.0_111\bin
- JAVA_HOME:
2. Android SDK安装
- 下载地址:https://www.androiddevtools.cn
- 关键组件:
- adb工具(Android Debug Bridge)
- 环境变量配置:
C:\sdk\toolsC:\sdk\platform-tools
3. Android NDK配置
- 用途:编译原生代码(so文件)
- 下载地址:https://developer.android.com/ndk/downloads
- 环境变量:
C:\android-ndk-r10e - 构建:需配置build文件
4. Android Killer工具详解
-
功能概述:
- Apk反编译与打包
- 签名功能
- 编码转换
- ADB通信
- 日志输出与语法高亮
-
安装配置:
- 解压至C盘根目录
- 配置JDK路径(如遇错误)
- 加载额外Apktool工具
-
基本操作流程:
- 导入APK文件
- 反编译查看结构
- 修改目标内容
- 回编译生成新APK
- 签名对齐处理
三、基础逆向实战示例
1. 修改应用名称
- 使用Android Killer反编译目标APK
- 工程搜索
@string/app_name - 修改对应字符串值为新名称
- 回编译并签名新APK
- 安装验证修改结果
2. 替换应用图标
- 反编译目标APK
- 搜索
/icon.png定位图标文件 - 准备替换图片(必须为有效PNG格式)
- 替换res目录下对应图标文件
- 回编译并签名新APK
- 安装验证图标变更
关键工具与资源
- 开发工具下载:https://www.androiddevtools.cn
- NDK文档:参考官方NDK使用入门
- 打包流程:详细参考Android官方打包流程文档
注意事项
- 修改APK后必须重新签名才能安装
- 资源文件替换需保持格式一致
- 多dex处理需考虑兼容性问题
- 逆向工程需遵守相关法律法规
- 建议在测试设备或模拟器上进行实验
此文档涵盖了Android逆向工程的基础概念、环境配置和初级操作,为后续深入逆向分析奠定了必要的基础知识和技术准备。