700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 用apktool反编译 修改添加smali文 再打包apk遇到的64k问题的解决方法 Unsigned

用apktool反编译 修改添加smali文 再打包apk遇到的64k问题的解决方法 Unsigned

时间:2024-06-14 01:32:11

相关推荐

用apktool反编译 修改添加smali文  再打包apk遇到的64k问题的解决方法 Unsigned

我把apk文件用apktool反编译后得到smali,smali_classes2,smali_classes3,smali_classes4..........

然后手工修改包里的smali文件,增加了些内容进去,尝试再打包回apk文件时遇到错误.上网查了一下原因.是我添加了东西,导致Unsignedshortvalueoutofrange:65536。每个包长度超限了.

Exceptioninthread"main"org.jf.util.ExceptionWithContext:Exceptionoccurredwhilewritingcode_itemformethodLcom/google/gson/internal/b$b;-><init>(Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)V

atorg.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java:1046)

atorg.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:345)

atorg.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:300)

atbrut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:61)

atbrut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:36)

atbrut.androlib.Androlib.buildSourcesSmali(Androlib.java:420)

atbrut.androlib.Androlib.buildSources(Androlib.java:351)

atbrut.androlib.Androlib.build(Androlib.java:303)

atbrut.androlib.Androlib.build(Androlib.java:270)

atbrut.apktool.Main.cmdBuild(Main.java:259)

atbrut.apktool.Main.main(Main.java:85)

Causedby:org.jf.util.ExceptionWithContext:Errorwhilewritinginstructionatcodeoffset0x39

atorg.jf.dexlib2.writer.DexWriter.writeCodeItem(DexWriter.java:1319)

atorg.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java:1042)

...10more

Causedby:org.jf.util.ExceptionWithContext:Unsignedshortvalueoutofrange:65536

atorg.jf.dexlib2.writer.DexDataWriter.writeUshort(DexDataWriter.java:116)

atorg.jf.dexlib2.writer.InstructionWriter.write(InstructionWriter.java:356)

atorg.jf.dexlib2.writer.DexWriter.writeCodeItem(DexWriter.java:1279)

...11more

为此问题,特意论坛上问了一下结果没人回答

网上找了个笨方法实现. 有位大神用python实现了, 命令如下.

解包

java -jar apktool_2.5.0.jar d D:\apk反编译\base.apk -f -r -s -o D:\apk反编译\base12301

#apktool反编译 不解源代码包 生成dev文件

python smali_decompile.py -d D:\apk反编译\base12301 -o D:\apk反编译\base12301 -m one

#运行python命令,将将原dex文件解出,整合到class目录

----------------------------------------------------------------

修改class目录里你想要修改的smali文件,例如添加类,

----------------------------------------------------------------

python smali_split.py -a D:\apk反编译\base12301\classes -o D:\apk反编译\base12301

#将class文件再次分开打包成dex文件. 可以见到产生的dev数量比原来要多.

#将新产生的dev文件拷贝出来取代原来的dev

生成包

java -jar apktool_2.5.0.jar b D:\apk反编译\base12301 -o D:\apk反编译\base12301.apk

#编译成apk文件

签名

java -jar signapk.jar testkey.x509.pem testkey.pk8 D:\apk反编译\base12301.apk D:\apk反编译\base12301_final.apk

#对apk文件进行签名

本文所需所有工具下载地址

/download/konglai/13986088

用apktool反编译 修改添加smali文 再打包apk遇到的64k问题的解决方法 Unsigned short value out of range: 65536

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。