Android加壳与脱壳(9)—— 一次manifest文件修复

admin 2024年7月4日16:54:46评论3 views字数 1240阅读4分8秒阅读模式

1.前言

  • 某个manifest文件发现jadx和apktool均不能反编译,用jadx打开是这样的

Android加壳与脱壳(9)—— 一次manifest文件修复

  • 仔细一看说的应该是字符串的起始位置不对,应该是0x654,实际上是0x650
  • 但确实不太了解manifest的结构于是搜了一下相关的解决办法但都没法解决这个manifest文件的问题,于是乎决定自己把manifest的格式看一遍
  • 这里参考的是**MindMac** 大佬写的文章中的格式,贴一个大佬的图

Android加壳与脱壳(9)—— 一次manifest文件修复

  • 从头开始配合 010 editor提供的模板进行分析

2.分析

2.1 魔术和文件头

  • 检验了一下都是没问题的

Android加壳与脱壳(9)—— 一次manifest文件修复

2.2 stringChunk

  • String Chunk 的标识,值为 0x001C0001 没问题
  • String Chunk的大小:0x6b38 没问题
  • string chunk内容区间 (0x08开始 加上面的大小): 0x08 - 6b40 没问题
  • 字符串个数 :395个 从offset中的个数和实际个数检查都 没问题

Android加壳与脱壳(9)—— 一次manifest文件修复

Android加壳与脱壳(9)—— 一次manifest文件修复

  • 字符串起始位置:这里要注意字符串其实位置实际上是1ch中的偏移加0x8(即stringChunk的起始位置)
    • 即0x64c + 0x8 = 0x654

Android加壳与脱壳(9)—— 一次manifest文件修复

  • 这里其实就出现了jadx里报错的0x654
  • 去看一下0x654的内容,确实是一个字符串,但是发现前面有4个字节在manifest的模板里是找不到的

Android加壳与脱壳(9)—— 一次manifest文件修复

Android加壳与脱壳(9)—— 一次manifest文件修复

  • 看了其他几个正常反编译的manifest也发现string offsets后面应该直接跟string pool(实际的字符串内容),因为大多数manifest都没有style所以style pool offset的偏移item是没有的
  • 所以感觉应该是这4个00 导致的问题

3.复原

  • 因为可能是这4个字节的问题所以直接将其删除
  • 但是删除会影响
    • 整个文件大小: 0xf6a84 - 0x4 = 0xf6a80
    • String Chunk的大小: 0x6b38h - 0x4 = 0x6b34
  • 然后恢复真正的stringPooloffset:0x648
  • 将三个字段修复好后脱到jadx中 反编译成功!!!

Android加壳与脱壳(9)—— 一次manifest文件修复

4.manifest文件防护

  • 总结下反编译失败的原因就是在string offsetsstring pool中间加了4个00 然后修改:
    • 整个文件大小加4
    • String Chunk的大小加4
    • stringPooloffset的大小加4
  • 从而导致jadx反编译失败,但安卓系统的解析应该不会受到影响
  • 所以一个manifest防护的思路就诞生了
  • 不过目前的思路只能是打包后一个apk后将manifest文件拿出来进行修改后重新打包进行签名
  • manifest文件和脚本:
    1
    2
    链接:https://pan.baidu.com/s/1Qo4cfLHc3ZYElBR1qdhMog 
    提取码:13f7

用法可见:

https://github.com/Sp1keeeee/manifestGuard

5.参考

https://bbs.pediy.com/thread-194206.htm

https://bbs.pediy.com/thread-272045.htm

- source:security-kitchen.com

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月4日16:54:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Android加壳与脱壳(9)—— 一次manifest文件修复https://cn-sec.com/archives/2919335.html

发表评论

匿名网友 填写信息