0%

修复反编译资源文件报错问题(resource spec)

关于0x01010540错误

0x01010540是因为SDK版本太高,反编译工具识别不出来,需要替换成0x0101048f
具体方法见后文

关于0x01010543错误

如果只有

1
Exception in thread "main" b.a.a.e: resource spec: 0x01010543

没有UndefinedResObject
则更换apktool后再试
apktool可以在爱盘下载

实在要修复的话,往下看:(都是修改resources.arsc

修复UndefinedResObject错误

报错信息:

1
Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec: 0x7f000006

解决方法

aapt dump查看apk的资源信息,并保存到文件

1
aapt d --values resources test.apk >1.txt

找到DataType数据类型不正确的值(搜索attribute即可)对应的描述符(一般是把7f改成00,0x00000006
文件中没有识别出正确的数据类型,显示的是(attribute) 0x00000006
使用010Editor,Ctrl+F,字节形式搜索对应描述的16进制数的小端字节(就是00000006写成06000000
然后把它前面的字节0x02修改为0x03,保存后替换进apk即可

修复resource spec: 0x01010543

报错信息:

1
Exception in thread "main" b.a.a.e: resource spec: 0x01010543

解决方法

使用010Editor,Ctrl+F,字节形式搜索报错的16进制数的小端字节(就是12345678写成78564312
这里我们搜索43050101,然后把它前面的字节0x02修改为0x03,保存后替换进apk即可

修复resource spec: 0x01010540

0x01010540是因为SDK版本太高,反编译工具识别不出来,需要替换成0x0101048f

解决方法

使用010Editor,Ctrl+F,字节形式搜索报错的16进制数的小端字节(就是40050101换成8f040101

参考

记录Android Killer反编译时遇到的异常
保护Android resources文件不被反编译原理分析