梦殇国际

标题: 关于apktool反编译出错Error occured at code address 0的解决办法 [打印本页]

作者: 胸罩哥    时间: 2014-1-16 21:10
标题: 关于apktool反编译出错Error occured at code address 0的解决办法
在使用apktool反编译apkeditor_v180的时候,出现了下面的错误:
I: Baksmaling...
Exception in thread "main" org.jf.dexlib.Util.ExceptionWithContext: Index: 4112,
Size: 1437
        at org.jf.dexlib.Util.ExceptionWithContext.withContext(ExceptionWithCont
ext.java:54)
        at org.jf.dexlib.IndexedSection.getItemByIndex(IndexedSection.java:77)
        at org.jf.dexlib.Code.InstructionWithReference.lookupReferencedItem(Inst
ructionWithReference.java:79)
        at org.jf.dexlib.Code.InstructionWithReference.<init>(InstructionWithRef
erence.java:57)
        at org.jf.dexlib.Code.Format.Instruction22c.<init>(Instruction22c.java:5
9)
        at org.jf.dexlib.Code.Format.Instruction22c.<init>(Instruction22c.java:4
0)
        at org.jf.dexlib.Code.Format.Instruction22c$Factory.makeInstruction(Inst
ruction22c.java:103)
        at org.jf.dexlib.Code.InstructionIterator.IterateInstructions(Instructio
nIterator.java:82)
        at org.jf.dexlib.CodeItem.readItem(CodeItem.java:154)
        at org.jf.dexlib.Item.readFrom(Item.java:77)
        at org.jf.dexlib.OffsettedSection.readItems(OffsettedSection.java:48)
        at org.jf.dexlib.Section.readFrom(Section.java:143)
        at org.jf.dexlib.DexFile.<init>(DexFile.java:431)
        at org.jf.dexlib.DexFile.<init>(DexFile.java:267)
        at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:49)
        at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:34)
        at brut.androlib.Androlib.decodeSourcesSmali(Androlib.java:74)
        at brut.androlib.ApkDecoder.decode(ApkDecoder.java:89)
        at brut.apktool.Main.cmdDecode(Main.java:146)
        at brut.apktool.Main.main(Main.java:77)
Caused by: java.lang.IndexOutOfBoundsException: Index: 4112, Size: 1437
        at java.util.ArrayList.RangeCheck(Unknown Source)
        at java.util.ArrayList.get(Unknown Source)
        at org.jf.dexlib.IndexedSection.getItemByIndex(IndexedSection.java:75)
        ... 18 more
Error occured while retrieving the field_id_item item at index 4112
Error occured at code address 0
code_item @0x5061c
原因,很明显是程序在字符串上面动了手脚。那么怎么样才能够正常的进行反编译呢?
解决办法:
1 使用apktool进行反编译,但是不要反编译source code,命令如下:
java -jar apktool.jar d -s -f test.apk test
2 使用baksmali对classes.dex文件进行反编译,命令如下:
java -jar baksmali-2.0.2.jar -o test-out\ test\classes.dex
这样的话,所有的反编译后的smali文件都在test-out目录下了
3 使用smali对修改后的smali文件进行编译,从而编译出新的classes.dex,然后,替换旧的classes.dex文件,命令如下:
java -Xmx512M -jar smali-2.0.2.jar test-out\ -o test\classes.dex
4 使用apktool进行编译和打包
java -jar apktool.jar b -f test new-test.apk
5 最后使用zipalign和testsign.jar进行对齐和签名即可

作者: 梦中人@    时间: 2014-1-16 21:11
看不到怎么破

作者: 樱    时间: 2014-1-16 21:11
你没弄头像么QAQ

作者: 胸罩哥    时间: 2014-1-16 21:14
苏离 发表于 2014-1-16 21:11
你没弄头像么QAQ

没有怎么了

作者: 小宇0721    时间: 2014-1-16 21:15
你看的懂吗?

作者: 樱    时间: 2014-1-16 21:18
胸罩哥 发表于 2014-1-16 21:14
没有怎么了

==就问下   

作者: 胸罩哥    时间: 2014-1-16 21:27
苏离 发表于 2014-1-16 21:18
==就问下

傻= =...

作者: 樱    时间: 2014-1-16 21:27
胸罩哥 发表于 2014-1-16 21:27
傻= =...

为何这样说自己     

作者: 胸罩哥    时间: 2014-1-16 21:28
小宇0721 发表于 2014-1-16 21:15
你看的懂吗?

Android略懂皮毛而已,留个纪念以后慢慢学撒

作者: 胸罩哥    时间: 2014-1-16 21:28
苏离 发表于 2014-1-16 21:27
为何这样说自己

你赢了

作者: Clelo。    时间: 2014-1-16 21:32
这些术语好可怕0-0

作者: 樱    时间: 2014-1-16 21:37
胸罩哥 发表于 2014-1-16 21:28
你赢了

在你面前一直得赢

作者: 胸罩哥    时间: 2014-1-16 22:20
苏离 发表于 2014-1-16 21:37
在你面前一直得赢

让着你而已

作者: 胸罩哥    时间: 2014-1-16 22:21
苏离 发表于 2014-1-16 21:37
在你面前一直得赢

截图狗,笑嘻嘻

作者: 胸罩哥    时间: 2014-1-16 22:21
Clelo。 发表于 2014-1-16 21:32
这些术语好可怕0-0

世上无难事

作者: 樱    时间: 2014-1-16 22:27
胸罩哥 发表于 2014-1-16 22:21
截图狗,笑嘻嘻

看透再贱!

作者: 胸罩哥    时间: 2014-1-16 22:37
苏离 发表于 2014-1-16 22:27
看透再贱!

我错了苏姐,只是一时想起鸡冻了

作者: 樱    时间: 2014-1-16 22:38
胸罩哥 发表于 2014-1-16 22:37
我错了苏姐,只是一时想起鸡冻了

==我是哥哥        

作者: 胸罩哥    时间: 2014-1-16 23:20
苏离 发表于 2014-1-16 22:38
==我是哥哥

对,苏哥哥思密达

作者: 樱    时间: 2014-1-16 23:21
胸罩哥 发表于 2014-1-16 23:20
对,苏哥哥思密达

今天你在社区干嘛了啊

作者: yuan6975    时间: 2014-6-16 11:36
留名感谢教程  成功了的说





欢迎光临 梦殇国际 (https://714.hk/) Powered by Discuz! X3.4