吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1819|回复: 28
收起左侧

[Android 分享] Apk反编译报错的7个解决方法

  [复制链接]
lichuntian00 发表于 2024-8-5 23:09

一、Exception in thread "main" brut.androlib.AndrolibException: Multiple res specs: anim/abc_fade_in

报错提示:多种资源规范。
同一个类型的资源里,有多个同名称的资源。比如anim类型的资源里,有2个名称都为abc_fade_in的资源,这就意味着res/anim目录下有2个abc_fade_in.xml文件,名称相同,arsc解析器无法处理这种情况。
用010 Editor查看文件的ResTable_entry,这是类型资源,其中key为类型的名称字符串abc_fade_in,index为类型字符串池的索引,看到有多个索引都为0。
image.png

对应找到类型字符串池,索引为0的位置放着anim,所以这几个索引都指向anim,
image.png
意味着有多个anim资源名称都为abc_fade_in.xml,按索引顺序修改回来即可反编译成功
image.png

二、Could not decode file, replacing by FALSE value: attr/abc_grow_fade_in_from_bottom
报错提示:无法解码anim/abc_grow_fade_in_from_bottom.xml文件,用值false替代abc_fade_in这个值
查看文件,定位到名称字符串池处,发现名称字符串是abc_grow_fade_in_from_bottom没错,再定位到ResTable_entry类型资源处,查看发现有2个索引都指向2,类型字符串池索引为2的值为attr
image.png
也就是第2个指向的值没法解析,因为不允许有相同的id,把第二项的索引改回1即可
三、Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file

报错提示:无法解码resource.arsc文件,这个报错是比较早的,还没开始解析arsc文件内部,应该是arsc文件头部附近字段被修改过了,
image.png
只解析了一部分,字符串池没有解析出来,格式被破坏了,看第2行的01 00 1C 00,这是正常字符串池的固定文件头标识,解析器通过这4个字节来判断字符串池从哪里开始读取,很明显AA BB CC DD是插入的混淆字节,删除即可反编译通过

四、Exception in thread "main" brut.androlib.AndrolibException: Could not decode XML
报错提示:无法解码Androidmanifest.xml文件,很早之前的防护,文件头字段被修改,
image.png

改回来03 00,解码成功

五、Unknown chunk type at: (0x00000e38) skipping..
这个提示相关的防护是截止目前为止依然可以作对抗的,而且对抗手段多样化的
1.基于scStylePoolOffset字段
报错提示:解析Androidmanifest.xml遇到未知的数据块类型,这个数据块位于文件的偏移位置0x00000e38处,该偏移处之后的数据块无法解析,准备跳过这个数据块解析文件,
image.png
e38处是文件的结尾部分,可是只解析到了stringChunk出来了,说明这个字段被修改了,从字段头看起,发现scStylePoolOffset异常,正常应该是4个字节都为0,(ps:实际的分析过程要对文件格式非常熟练,又得算偏移,还得结合010 Editor报错信息,动态调试,写起来太麻烦,所以后面的定位过程都是写了基于哪个字段修改,分析过程省略一点)
image.png
scStylePoolOffset字段,4个字节全部改为00即可
2.基于startTagChunk字段
image.png
文件解析到startTagChunk,这个数据块是一块接一块的,正常后面应该紧跟着02 01 10 00字节的,可是看到中间明显隔了4个01字节,删除这4个字节即可编译通过
2.基于Apk的frCompression字段
image.png
frCompression字段修改,也会报同样的错误,改回08 00即可
3.基于通用标记位
原理都是一样的,只要熟悉文件格式,都能破解,就不放图了
4.基于磁盘编号
5.基于目录数的
其他字段也可以作防护,有不少

六、W: Bad string block: string entry is at 240, past end at 240
报错提示:解析到错误的字符串块,这个数据块位于文件的偏移位置240(转换为16进制是0xf0)处,这个位置以后(包括这个位置)的字符串无法解析,定位到0xf0的位置查看
image.png
看到字符串的偏移值突然变得很大,比文件还长,肯定是有问题的,既然是从0xf0的位置,字符串解析出现异常,那正常的字符串偏移也就是到索引50的地方,字符串个数是51个才对,将scStringCount的值修改为51,



反编译通过

七、Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 20603 out of bounds for length 1980
报错提示:ArrayIndexOutOfBounds线程出现异常,索引值20603超出长度1980的界限
基于scStringOffsets字段造成的,定位到报错处
image.png
介于810和981之间得值,修改第2个字节50为03即可
总结:上述有些对抗已经被修复,有些还存在,哪些字段可以修改做对抗,哪些字段不能,是基于Android源码和反编译工具之间的检测差异,所以APK层面的攻防会随着Android系统升级和不同Apk反编译工具原理的修改而改变。

免费评分

参与人数 8吾爱币 +12 热心值 +7 收起 理由
metoo2 + 1 + 1 谢谢@Thanks!
Atnil + 1 + 1 谢谢@Thanks!
Issacclark1 + 1 谢谢@Thanks!
gzhdssj + 1 + 1 谢谢@Thanks!
jyz20010903 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
正己 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
杨辣子 + 1 + 1 谢谢@Thanks!
不负韶华 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| lichuntian00 发表于 2024-8-8 16:18
肥钢 发表于 2024-8-7 12:37
brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1)
大佬 想 ...

2.9.2版本及以下可以搜到,2.9.3到最新的2.10.0已经修改了这个报错
image.png
这个是属于回编译的报错,看不到完整的报错提示,不好确定,猜测可能是2个原因:
1.res资源不匹配,(解决办法1、 加入 -r 参数,忽略资源编译 2、定位到具体出错的资源文件,修改资源格式或者删除)
2.AndroidManifest中引入的新属性,(解决办法1、升级回编译环境,以适应新属性,包括升级apktool、升级sdk 2、定位到Androidmanifest.xml文件中引入的新属性,删除即可)
肥钢 发表于 2024-8-7 12:37
本帖最后由 肥钢 于 2024-8-7 12:44 编辑

brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1)
大佬 想问下这个是什么错误 搜索找不到
用2.9.3版本apktool 还要改什么参数才行吗
白泽1994 发表于 2024-8-6 10:30
不负韶华 发表于 2024-8-6 10:34
学到了,很棒!
lws0318 发表于 2024-8-6 10:36
学到了,感谢!
wasm2023 发表于 2024-8-6 12:16
学到了,感谢楼主
MrYuxuan 发表于 2024-8-6 13:28
感谢楼主分享,学习学习
zero1580 发表于 2024-8-6 14:04
感谢分享,好好学习
liming521xin 发表于 2024-8-6 14:54
学习了,楼主无私
alonestree 发表于 2024-8-6 15:24
感谢分享,收藏了
funwell 发表于 2024-8-6 15:33

谢谢大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-4 01:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表