关于反编译apk出现Exception in thread "main" java.lang.ClassCastException: ....

来源:互联网 发布:ubuntu arm 国内源 编辑:程序博客网 时间:2024/05/22 03:46

在反编译APK的时候:遇到这种情况

> 正在反编译Apk...  - 失败:Exception in thread "main" java.lang.ClassCastException: brut.androlib.res.data.value.ResFileValue cannot be cast to brut.androlib.res.data.value.ResScalarValue
at brut.androlib.res.decoder.ARSCDecoder.readComplexEntry(ARSCDecoder.java:206)
at brut.androlib.res.decoder.ARSCDecoder.readEntry(ARSCDecoder.java:174)
at brut.androlib.res.decoder.ARSCDecoder.readConfig(ARSCDecoder.java:162)
at brut.androlib.res.decoder.ARSCDecoder.readType(ARSCDecoder.java:128)
at brut.androlib.res.decoder.ARSCDecoder.readPackage(ARSCDecoder.java:103)
at brut.androlib.res.decoder.ARSCDecoder.readTable(ARSCDecoder.java:81)
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:49)
at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:607)
at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java:74)
at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.java:66)
at brut.androlib.Androlib.getResTable(Androlib.java:52)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:94)
at brut.apktool.Main.cmdDecode(Main.java:169)
at brut.apktool.Main.main(Main.java:85)
笔者 最近用APKtool在反编译 搜狗输入法,保卫萝卜2 ,百度输入法等遇到问题  无法正常反编译 用2.0版的apktool 反编译目录无法生成任何文件,换成1.X的apktool 发现反编译目录下生成smali文件,其他的资源文件均未反编译出来。
于是谷歌了下,没怎么看到解决的办法,只看到一篇12年帖子 说的是什么编码问题,具体也不知道怎么解决的,但是对于这种现象还是可以进行反编译的。

思路:

既然无法进行正常的反编译可以单独的进行反编译
首先 是把文件全部解压出来
然后单独 进行反编译 或者  每次值是反编译一个资源 至于如何查看resources.arsc资源 大家 可以找个ARSC编辑器即可 单独编译dex文件 建议用Xtemp 速度挺快的 配合notepad++ 来搜索 修改

如果有错误,还望指教微笑

0 0