关于Androidmanifest文件加固探索
字数 1140 2025-08-22 12:22:48

AndroidManifest文件加固分析与对抗技术

1. AndroidManifest文件组成分析

AndroidManifest.xml是Android应用的核心配置文件,恶意软件常通过修改该文件来对抗反编译。其二进制结构主要包含以下几个关键部分:

文件头部结构

  • Magic Number:前8个字节,常被魔改的重点区域
  • StylesStart:通常为0,也是常见的魔改点

字符串常量池(StringPool)

  • 紧跟在文件头后面的区域,存储所有用到的字符串
  • 常见加固手法:将StringCount修改为0xFFFFFF等异常值

字符串定位计算方法

  1. 获取字符串存放位置:文件偏移0xac(172) + 8字节头部 = 0xb4
  2. 获取第一个字符串的偏移量(通常为0)
  3. 计算最终存储位置:0xb4 + 偏移量
  4. 读取字符串直到遇到00字节结束

2. 分析工具与方法

010 Editor工具使用

  1. 安装AndroidManifest解析模板(androidmanifest.bt)
  2. 使用模板可完整解析文件结构,便于分析异常点

AXMLPrinter2工具

用于反编译二进制AndroidManifest.xml文件,命令格式:

java -jar AXMLPrinter2.jar AndroidManifest_origin.xml

3. 常见加固手法与修复方法

案例1:意外数据值

  • 错误信息:出乎意料的0x80003(正常应为0x80000)
  • 修复方法
    • 使用010 Editor打开文件
    • 将异常值03 00 08修改为正常的小端序数据

案例2:负数组大小

  • 错误信息:NegativeArraySizeException
  • 原因分析:加固后文件与正常文件对比可发现异常点
  • 解决方法:将异常值修改回正常值

案例3:字符串偏移异常

  • 表现:stringoffsets值异常(如0xff)
  • 修复步骤
    1. 分析正常文件的字符串数量
    2. 将异常值(如0xff)修改为实际字符串数量(如0x24)

4. 总结与对抗技术

常见加固点

  1. Magic Number魔改
  2. StylesStart值异常
  3. 字符串常量池(StringPool)破坏
    • 修改StringCount为极大值
    • 破坏字符串偏移量

对抗方法

  1. 使用010 Editor等工具进行二进制分析
  2. 通过AXMLPrinter2的错误信息定位问题区域
  3. 对比正常文件修复异常值
  4. 理解AndroidManifest二进制结构,手动计算验证关键值

5. 实践建议

  1. 下载提供的恶意样本附件进行实战分析
  2. 重点关注三个常见魔改点:
    • 文件头Magic Number
    • StylesStart值
    • 字符串常量池结构
  3. 通过多次尝试修复积累经验

通过掌握这些技术,安全研究人员可以有效对抗恶意软件对AndroidManifest文件的加固,为后续的恶意代码分析打下基础。

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文件,命令格式: 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文件的加固,为后续的恶意代码分析打下基础。