您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
反编译实战-解决ERROR com.googlecode.dex2jar.reader.DexFileReader
发布时间:2021-03-31 14:13:30编辑:雪饮阅读()
今天在翻译几年前的一个叫做雪饮狂刀的游戏时候对其classes.dex反编译时候报错如下:
C:\Users\Administrator\Desktop\decode\apktool1.4.1>dex2jar classes.dex
0 [main] INFO com.googlecode.dex2jar.v3.Main - version:0.0.7.11-SNAPSHOT
3 [main] INFO com.googlecode.dex2jar.v3.Main - dex2jar classes.dex -> classes_dex2jar.jar
664 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - dex2jar got an Exception, but will continue.
664 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - . while accept class id:[148],name:[Li;]
664 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .. while accept method:[Li;.n(Lcom/a/a/a/h;)V]
664 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - ... while accept code in method:[Li;.n(Lcom/a/a/a/h;)V]
664 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .... Not support Opcode :0xd1=RSUB_INT @[0x085a]
728 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - dex2jar got an Exception, but will continue.
728 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - . while accept class id:[176],name:[Lm;]
728 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .. while accept method:[Lm;.x()V]
728 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - ... while accept code in method:[Lm;.x()V]
728 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .... ROOT cause:
java.lang.RuntimeException: Not support Opcode:[0x00d9]=RSUB_INT_LIT8 yet!
at com.googlecode.dex2jar.v3.V3CodeAdapter.visitInInsn(V3CodeAdapter.java:830)
at com.googlecode.dex2jar.reader.DexOpcodeAdapter.visit(DexOpcodeAdapter.java:365)
at com.googlecode.dex2jar.reader.DexCodeReader.accept(DexCodeReader.java:335)
at com.googlecode.dex2jar.reader.DexFileReader.acceptMethod(DexFileReader.java:538)
at com.googlecode.dex2jar.reader.DexFileReader.acceptClass(DexFileReader.java:323)
at com.googlecode.dex2jar.reader.DexFileReader.accept(DexFileReader.java:205)
at com.googlecode.dex2jar.v3.Main.doData(Main.java:52)
at com.googlecode.dex2jar.v3.Main.doFile(Main.java:85)
at com.googlecode.dex2jar.v3.Main.main(Main.java:113)
732 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - dex2jar got an Exception, but will continue.
732 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - . while accept class id:[180],name:[Lme/gall/skuld/adapter/CMCCGameCommunityAdapter;]
732 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .. while accept method:[Lme/gall/skuld/adapter/CMCCGameCommunityAdapter;.b(Ljava/util/Map;)V]
733 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - ... while accept code in method:[Lme/gall/skuld/adapter/CMCCGameCommunityAdapter;.b(Ljava/util/Map;)V]
733 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .... ROOT cause:
java.lang.RuntimeException: Not support Opcode:[0x00d9]=RSUB_INT_LIT8 yet!
at com.googlecode.dex2jar.v3.V3CodeAdapter.visitInInsn(V3CodeAdapter.java:830)
at com.googlecode.dex2jar.reader.DexOpcodeAdapter.visit(DexOpcodeAdapter.java:365)
at com.googlecode.dex2jar.reader.DexCodeReader.accept(DexCodeReader.java:335)
at com.googlecode.dex2jar.reader.DexFileReader.acceptMethod(DexFileReader.java:538)
at com.googlecode.dex2jar.reader.DexFileReader.acceptClass(DexFileReader.java:323)
at com.googlecode.dex2jar.reader.DexFileReader.accept(DexFileReader.java:205)
at com.googlecode.dex2jar.v3.Main.doData(Main.java:52)
at com.googlecode.dex2jar.v3.Main.doFile(Main.java:85)
at com.googlecode.dex2jar.v3.Main.main(Main.java:113)
123
762 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - dex2jar got an Exception, but will continue.
762 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - . while accept class id:[201],name:[Lme/gall/tinybee/TinybeeLogger$EventTask;]
762 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .. while accept method:[Lme/gall/tinybee/TinybeeLogger$EventTask;.uploadEvent()V]
763 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - ... while exec insn at 265
763 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .... ROOT cause:
java.lang.NullPointerException
at com.googlecode.dex2jar.optimize.TypeDetectTransformer.req(TypeDetectTransformer.java:355)
at com.googlecode.dex2jar.optimize.TypeDetectTransformer.exec(TypeDetectTransformer.java:431)
at com.googlecode.dex2jar.optimize.TypeDetectTransformer.transform(TypeDetectTransformer.java:191)
at com.googlecode.dex2jar.v3.V3MethodAdapter.visitEnd(V3MethodAdapter.java:168)
at com.googlecode.dex2jar.reader.DexFileReader.acceptMethod(DexFileReader.java:547)
at com.googlecode.dex2jar.reader.DexFileReader.acceptClass(DexFileReader.java:323)
at com.googlecode.dex2jar.reader.DexFileReader.accept(DexFileReader.java:205)
at com.googlecode.dex2jar.v3.Main.doData(Main.java:52)
at com.googlecode.dex2jar.v3.Main.doFile(Main.java:85)
at com.googlecode.dex2jar.v3.Main.main(Main.java:113)
123
769 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - dex2jar got an Exception, but will continue.
769 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - . while accept class id:[202],name:[Lme/gall/tinybee/TinybeeLogger$RequestLiveParamsTask;]
769 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .. while accept method:[Lme/gall/tinybee/TinybeeLogger$RequestLiveParamsTask;.requestLiveParams()V]
769 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - ... while exec insn at 205
769 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .... ROOT cause:
java.lang.NullPointerException
at com.googlecode.dex2jar.optimize.TypeDetectTransformer.req(TypeDetectTransformer.java:355)
at com.googlecode.dex2jar.optimize.TypeDetectTransformer.exec(TypeDetectTransformer.java:431)
at com.googlecode.dex2jar.optimize.TypeDetectTransformer.transform(TypeDetectTransformer.java:191)
at com.googlecode.dex2jar.v3.V3MethodAdapter.visitEnd(V3MethodAdapter.java:168)
at com.googlecode.dex2jar.reader.DexFileReader.acceptMethod(DexFileReader.java:547)
at com.googlecode.dex2jar.reader.DexFileReader.acceptClass(DexFileReader.java:323)
at com.googlecode.dex2jar.reader.DexFileReader.accept(DexFileReader.java:205)
at com.googlecode.dex2jar.v3.Main.doData(Main.java:52)
at com.googlecode.dex2jar.v3.Main.doFile(Main.java:85)
at com.googlecode.dex2jar.v3.Main.main(Main.java:113)
123
776 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - dex2jar got an Exception, but will continue.
776 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - . while accept class id:[203],name:[Lme/gall/tinybee/TinybeeLogger$RequestUpdateTask;]
776 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .. while accept method:[Lme/gall/tinybee/TinybeeLogger$RequestUpdateTask;.updateInfo()V]
776 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - ... while exec insn at 224
776 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .... ROOT cause:
java.lang.NullPointerException
at com.googlecode.dex2jar.optimize.TypeDetectTransformer.req(TypeDetectTransformer.java:355)
at com.googlecode.dex2jar.optimize.TypeDetectTransformer.exec(TypeDetectTransformer.java:431)
at com.googlecode.dex2jar.optimize.TypeDetectTransformer.transform(TypeDetectTransformer.java:191)
at com.googlecode.dex2jar.v3.V3MethodAdapter.visitEnd(V3MethodAdapter.java:168)
at com.googlecode.dex2jar.reader.DexFileReader.acceptMethod(DexFileReader.java:547)
at com.googlecode.dex2jar.reader.DexFileReader.acceptClass(DexFileReader.java:323)
at com.googlecode.dex2jar.reader.DexFileReader.accept(DexFileReader.java:205)
at com.googlecode.dex2jar.v3.Main.doData(Main.java:52)
at com.googlecode.dex2jar.v3.Main.doFile(Main.java:85)
at com.googlecode.dex2jar.v3.Main.main(Main.java:113)
827 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - dex2jar got an Exception, but will continue.
827 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - . while accept class id:[222],name:[Lo;]
829 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .. while accept method:[Lo;.o(I)V]
829 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - ... while accept code in method:[Lo;.o(I)V]
829 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .... ROOT cause:
java.lang.RuntimeException: Not support Opcode:[0x00d9]=RSUB_INT_LIT8 yet!
at com.googlecode.dex2jar.v3.V3CodeAdapter.visitInInsn(V3CodeAdapter.java:830)
at com.googlecode.dex2jar.reader.DexOpcodeAdapter.visit(DexOpcodeAdapter.java:365)
at com.googlecode.dex2jar.reader.DexCodeReader.accept(DexCodeReader.java:335)
at com.googlecode.dex2jar.reader.DexFileReader.acceptMethod(DexFileReader.java:538)
at com.googlecode.dex2jar.reader.DexFileReader.acceptClass(DexFileReader.java:319)
at com.googlecode.dex2jar.reader.DexFileReader.accept(DexFileReader.java:205)
at com.googlecode.dex2jar.v3.Main.doData(Main.java:52)
at com.googlecode.dex2jar.v3.Main.doFile(Main.java:85)
at com.googlecode.dex2jar.v3.Main.main(Main.java:113)
930 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - dex2jar got an Exception, but will continue.
930 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - . while accept class id:[290],name:[Lorg/meteoroid/plugin/vd/AbstractButton;]
930 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .. while accept method:[Lorg/meteoroid/plugin/vd/AbstractButton;.onDraw(Landroid/graphics/Canvas;)V]
931 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - ... while accept code in method:[Lorg/meteoroid/plugin/vd/AbstractButton;.onDraw(Landroid/graphics/Canvas;)V]
931 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .... Not support Opcode :0xd1=RSUB_INT @[0x00ea]
935 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - dex2jar got an Exception, but will continue.
935 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - . while accept class id:[292],name:[Lorg/meteoroid/plugin/vd/ArcadeJoyStick;]
935 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .. while accept method:[Lorg/meteoroid/plugin/vd/ArcadeJoyStick;.onDraw(Landroid/graphics/Canvas;)V]
936 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - ... while accept code in method:[Lorg/meteoroid/plugin/vd/ArcadeJoyStick;.onDraw(Landroid/graphics/Canvas;)V]
936 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .... Not support Opcode :0xd1=RSUB_INT @[0x0060]
953 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - dex2jar got an Exception, but will continue.
953 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - . while accept class id:[304],name:[Lorg/meteoroid/plugin/vd/Joystick;]
953 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .. while accept method:[Lorg/meteoroid/plugin/vd/Joystick;.onDraw(Landroid/graphics/Canvas;)V]
954 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - ... while accept code in method:[Lorg/meteoroid/plugin/vd/Joystick;.onDraw(Landroid/graphics/Canvas;)V]
954 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .... Not support Opcode :0xd1=RSUB_INT @[0x0064]
969 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - dex2jar got an Exception, but will continue.
969 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - . while accept class id:[311],name:[Lorg/meteoroid/plugin/vd/SteeringWheel;]
970 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .. while accept method:[Lorg/meteoroid/plugin/vd/SteeringWheel;.onDraw(Landroid/graphics/Canvas;)V]
970 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - ... while accept code in method:[Lorg/meteoroid/plugin/vd/SteeringWheel;.onDraw(Landroid/graphics/Canvas;)V]
970 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .... Not support Opcode :0xd1=RSUB_INT @[0x0066]
1031 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - dex2jar got an Exception, but will continue.
1031 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - . while accept class id:[341],name:[Lp;]
1032 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .. while accept method:[Lp;.d(B)V]
1032 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - ... while accept code in method:[Lp;.d(B)V]
1032 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .... Not support Opcode :0xd1=RSUB_INT @[0x0c32]
1043 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - dex2jar got an Exception, but will continue.
1043 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - . while accept class id:[344],name:[Lt;]
1043 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .. while accept method:[Lt;.a([Ljava/lang/String;II)V]
1044 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - ... while accept code in method:[Lt;.a([Ljava/lang/String;II)V]
1044 [main] ERROR com.googlecode.dex2jar.reader.DexFileReader - .... ROOT cause:
java.lang.RuntimeException: Not support Opcode:[0x00d9]=RSUB_INT_LIT8 yet!
at com.googlecode.dex2jar.v3.V3CodeAdapter.visitInInsn(V3CodeAdapter.java:830)
at com.googlecode.dex2jar.reader.DexOpcodeAdapter.visit(DexOpcodeAdapter.java:365)
at com.googlecode.dex2jar.reader.DexCodeReader.accept(DexCodeReader.java:335)
at com.googlecode.dex2jar.reader.DexFileReader.acceptMethod(DexFileReader.java:538)
at com.googlecode.dex2jar.reader.DexFileReader.acceptClass(DexFileReader.java:323)
at com.googlecode.dex2jar.reader.DexFileReader.accept(DexFileReader.java:205)
at com.googlecode.dex2jar.v3.Main.doData(Main.java:52)
at com.googlecode.dex2jar.v3.Main.doFile(Main.java:85)
at com.googlecode.dex2jar.v3.Main.main(Main.java:113)
1079 [main] INFO com.googlecode.dex2jar.v3.Main - Done.
发现错误后一般我都是从第一个错误开始排查,但是第一个错误查询资料后发现是一个非常笼统的错误,大概说是什么java版本过高之类的,这里的确本人用的是java7 ,而想想几年前的项目相比之下应该是高了。
那么就需要切换到低版本上。
我这里系统环境变量path里有两个java版本,一个是1.6一个是1.7,我试着把1.6向上移动,结果查看版本仍旧是1.7,后来发现我还有一个JAVA_HOME的环境变量,里面直接执行jre7,于是把这个也改为1.6了。仍旧不行。
那么好吧,where java一下,查看都有哪些地方有java
原来在windows/system32下还有,进入这个目录后发现里面不止java还有像声明javaws等其它以java为前缀的程序。怀疑是把整个java7的bin目录都放到这个windows/system32里面了吧。但是又不敢轻易乱删,于是看到控制面板里面有java7,于是卸载了控制面板中的java7,这个目录中的java前缀以及java.exe程序都被干掉了,看来我的怀疑是对的。
那么再次回到命令行中查看java版本已经变成了1.6
C:\Users\Administrator\Desktop\decode\apktool1.4.1>java -version
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
但是若继续进行反编译还是会出现上面的错误,所以考虑应该是还有其它问题。
那么接下来是通过最上面报错信息里面第一个显眼的关键信息“Not support Opcode:[0x00d9]=RSUB_INT_LIT8 yet”查到相关资料,说是反编译工具dex2jar的版本低的原因。
从反编译过程中第一行就可以看到我用的是0.0.7.11。于是下载了dex2jar-0.0.9.9这个版本。
再次进行反编译,就能顺利的反编译成功了。
C:\Users\Administrator\Desktop\decode\dex2jar-0.0.9.9>dex2jar classes.dex
this cmd is deprecated, use the d2j-dex2jar if possible
dex2jar version: translator-0.0.9.9
dex2jar classes.dex -> classes_dex2jar.jar
Done.
关键字词:dex2jar,反编译,ERROR com.googlecode.dex2jar.reader.DexFileReader,ERROR com.googleco
上一篇:如何无线调试安卓应用
下一篇:php的门面设计模式