首页
社区
课程
招聘
记一次manifest文件修复
发表于: 2022-12-5 20:58 8390

记一次manifest文件修复

2022-12-5 20:58
8390
  • 某个manifest文件用adx和apktool均不能反编译,用jadx打开是这样的


  • 仔细一看说的应该是字符串的起始位置不对,应该是0x654,实际上是0x650

  • 但确实不太了解manifest的结构于是搜了一下相关的解决办法但都没法解决这个manifest文件的问题,于是乎决定自己把manifest的格式看一遍

  • 这里参考的是MindMac 大佬写的文章中的格式,贴一个大佬的图

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

分析

魔术和文件头

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

stringChunk

  • String Chunk 的标识,值为 0x001C0001 没问题

  • String Chunk的大小:0x6b38 没问题

  • string chunk内容区间 (0x08开始  加上面的大小): 0x08 -  6b40 没问题

  • 字符串个数 :395个 从offset中的个数和实际个数检查都 没问题

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

    • 即0x64c + 0x8 = 0x654

  • 这里其实就出现了jadx里报错的0x654

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

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

  • 所以感觉应该是这4个00 导致的问题

复原

  • 因为可能是这4个字节的问题所以直接将其删除

  • 但是删除会影响

    • 整个文件大小: 0xf6a84 - 0x4 = 0xf6a80

    • String Chunk的大小: 0x6b38h - 0x4 = 0x6b34

  • 然后恢复真正的stringPooloffset:0x648

  • 将三个字段修复好后脱到jadx中 反编译成功~

manifest文件防护

  • 总结下反编译失败的原因就是在string offsetsstring pool中间加了4个00 然后修改:

    • 整个文件大小加4

    • String Chunk的大小加4

    • stringPooloffset的大小加4

  • 从而导致jadx反编译失败,但安卓系统的解析应该不会受到影响

  • 所以一个manifest防护的思路就诞生了

  • 不过目前的思路只能是打包后一个apk后将manifest文件拿出来进行修改后重新打包进行签名

  • 具体脚本写到附件里了

  • 用法可见:

参考

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

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


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2022-12-5 21:10 被spikee编辑 ,原因:
上传的附件:
收藏
免费 4
支持
分享
最新回复 (7)
雪    币: 7284
活跃值: (22080)
能力值: ( LV12,RANK:550 )
在线值:
发帖
回帖
粉丝
2
不错
2022-12-5 23:41
0
雪    币: 2344
活跃值: (2836)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

试了下把字符串个数改成396也行,不用改那么多

2022-12-6 10:05
0
雪    币: 185
活跃值: (482)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4


这个和工具解析方式有关 工具可能是顺序执行的 最终实际上需要修正偏移

2022-12-6 14:40
0
雪    币: 370
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
iamshy 试了下把字符串个数改成396也行,不用改那么多
确实,这个方法简单一点,这样改就直接把那四个00 改为最后一个字符串的偏移了,不过出现了两个versionCode字符串应该不是原本最真实的状态
2022-12-6 15:06
0
雪    币: 370
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
2022-12-6 15:08
0
雪    币: 914
活跃值: (334)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7

https://gitee.com/qq247321453/axml-editor
可以试试我这个,不少加固修改字符串都会多几个00。


StringChunk类里面有读取方法

最后于 2022-12-6 15:14 被我是一只马鹿编辑 ,原因:
2022-12-6 15:11
0
雪    币: 370
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
我是一只马鹿 https://gitee.com/qq247321453/axml-editor可以试试我这个,不少加固修改字符串都会多几个00。StringChunk类里面有读取方法
2022-12-6 16:16
0
游客
登录 | 注册 方可回帖
返回
//