修改反编译资源文件报错(resource spec)
本帖最后由 XhyEax 于 2019-2-28 17:30 编辑## 关于`0x01010540`错误
`0x01010540`是因为SDK版本太高,反编译工具识别不出来,需要替换成`0x0101048f`
具体方法见后文
## 关于`0x01010543`错误
如果只有
```
Exception in thread "main" b.a.a.e: resource spec: 0x01010543
```
没有`UndefinedResObject`
则更换`apktool`后再试
`apktool`可以在[爱盘](https://down.52pojie.cn/Tools/Android_Tools/)下载
实在要修复的话,往下看:(都是修改`resources.arsc`)
## 修复UndefinedResObject错误
报错信息:
```
Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec: 0x7f000006
```
### 解决方法
`aapt dump`查看apk的资源信息,并保存到文件
```
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
报错信息:
```
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反编译时遇到的异常](https://blog.csdn.net/u012400885/article/details/80409689)
[保护Android resources文件不被反编译原理分析](http://blog.csdn.net/pwelyn/article/details/50620136) 您好 最近手上有一款安卓APP 想逆向分析
但是对于您的解释 有点不解
错误解决方法
1.使用010Editor 16进制搜索报错的 0x16进制数字 的倒序
例如:报错位置是0x010104e2 那么搜索 e4040101
为什么0x010104e2倒序会变成e4040101
另外,我的反编译报错信息是:
>Exception in thread "main" java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at b.a.d.b.a.a(Unknown Source)
> at b.a.d.b.a.b(Unknown Source)
> at b.a.d.b.a.a(Unknown Source)
> at b.a.d.a.a(Unknown Source)
> at b.a.d.a.a(Unknown Source)
> at b.a.d.a.a(Unknown Source)
> at b.a.a.a(Unknown Source)
> at b.a.E.b(Unknown Source)
> at b.a.E.a(Unknown Source)
> at b.b.a.a(Unknown Source)
> at b.b.a.a(Unknown Source)
> at com.rover12421.shaka.cli.Main.main(Unknown Source)
>Caused by: b.a.D: Invalid chunk type: expected=0x00000002, got=0x0000aa4c
> at b.a.d.b.a.b(Unknown Source)
> at b.a.d.b.a.nextChunkCheckType(Unknown Source)
> ... 16 more
希望您能看看,针对我的这种出错,如何修复使得能反编译呢?谢谢呢! lyrong 发表于 2018-8-11 11:59
您好 最近手上有一款安卓APP 想逆向分析
但是对于您的解释 有点不解
aapt dump查看apk的资源aapt d --values resources test.apk
找到0x010104e2 发现资源描述是010104e4 至于为什么要修改为03 ,博文里面有说。我就再转一次。修改数据类型 让他解析正常
也可以参考下这篇帖子:http://bbs.pediy.com/showthread.php?p=1415499
多谢楼主分享 不大懂你在说啥子 学习一下,努力 您好 请问这样该怎么解决? 表示操作失败了,修改后还是无法反编译,我会搜索出来2个, 小灰灰~ 发表于 2017-12-13 16:18
表示操作失败了,修改后还是无法反编译,我会搜索出来2个,
那就换过一个框架资源apk试试
页:
[1]
2