ruction22c.java:118)
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:58)
at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:42)
at brut.androlib.Androlib.decodeSourcesSmali(Androlib.java:74)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:90)
at brut.apktool.Main.cmdDecode(Main.java:168)
at brut.apktool.Main.main(Main.java:91)
Caused by: java.lang.IndexOutOfBoundsException: Index: 24600, Size: 452
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
at org.jf.dexlib.IndexedSection.getItemByIndex(IndexedSection.java:75)
... 18 more
Error occured while retrieving the field_id_item item at index 24600
Error occured at code address 0
这种错误可能一些人都见过了,我第一次见是在黑帽会 老外ruby程序的pdf里面,可以防住一些工具的逆向,使其获取不到smali进行再次打包,在和论坛的搭档 梦入神机 经过一段时间的研究,通过修改apktool源码实现了,并且批量应用在我们的游戏上,在这种防护在被当乐搞定之后也不用了,所以放出来,曾经应用过的防护还有混淆类名和路径名成乱码;axml解析资源报错,持续更新,先放上字段脚标溢出的.
供上的apktool经过修改 可以复制一个文件并且对这个文件的字段进行越界混淆,并且可以解开混淆过的apk。现在和 rover 持续完成修改版apktool 代码地址: https://github.com/rover12421/RsApktool
下载地址:
http://pan.baidu.com/share/link?shareid=1154960514&uk=1208889887
补充,使用方法:先用d -f 的命令把apk解开,解出smali文件,再回编译,你的apk就被字段混淆了,可以防御原版apktool,dex2jar等常见工具,回编译时候的命令apktool.jar b -z path(path为文件路径)
[课程]Linux pwn 探索篇!