关于Androidmanifest文件加固探索
字数 1140 2025-08-22 12:22:48
AndroidManifest文件加固分析与对抗技术
1. AndroidManifest文件组成分析
AndroidManifest.xml是Android应用的核心配置文件,恶意软件常通过修改该文件来对抗反编译。其二进制结构主要包含以下几个关键部分:
文件头部结构
- Magic Number:前8个字节,常被魔改的重点区域
- StylesStart:通常为0,也是常见的魔改点
字符串常量池(StringPool)
- 紧跟在文件头后面的区域,存储所有用到的字符串
- 常见加固手法:将StringCount修改为0xFFFFFF等异常值
字符串定位计算方法
- 获取字符串存放位置:文件偏移0xac(172) + 8字节头部 = 0xb4
- 获取第一个字符串的偏移量(通常为0)
- 计算最终存储位置:0xb4 + 偏移量
- 读取字符串直到遇到00字节结束
2. 分析工具与方法
010 Editor工具使用
- 安装AndroidManifest解析模板(androidmanifest.bt)
- 使用模板可完整解析文件结构,便于分析异常点
AXMLPrinter2工具
用于反编译二进制AndroidManifest.xml文件,命令格式:
java -jar AXMLPrinter2.jar AndroidManifest_origin.xml
3. 常见加固手法与修复方法
案例1:意外数据值
- 错误信息:出乎意料的0x80003(正常应为0x80000)
- 修复方法:
- 使用010 Editor打开文件
- 将异常值03 00 08修改为正常的小端序数据
案例2:负数组大小
- 错误信息:NegativeArraySizeException
- 原因分析:加固后文件与正常文件对比可发现异常点
- 解决方法:将异常值修改回正常值
案例3:字符串偏移异常
- 表现:stringoffsets值异常(如0xff)
- 修复步骤:
- 分析正常文件的字符串数量
- 将异常值(如0xff)修改为实际字符串数量(如0x24)
4. 总结与对抗技术
常见加固点
- Magic Number魔改
- StylesStart值异常
- 字符串常量池(StringPool)破坏
- 修改StringCount为极大值
- 破坏字符串偏移量
对抗方法
- 使用010 Editor等工具进行二进制分析
- 通过AXMLPrinter2的错误信息定位问题区域
- 对比正常文件修复异常值
- 理解AndroidManifest二进制结构,手动计算验证关键值
5. 实践建议
- 下载提供的恶意样本附件进行实战分析
- 重点关注三个常见魔改点:
- 文件头Magic Number
- StylesStart值
- 字符串常量池结构
- 通过多次尝试修复积累经验
通过掌握这些技术,安全研究人员可以有效对抗恶意软件对AndroidManifest文件的加固,为后续的恶意代码分析打下基础。