最近,我尝试分析android应用程序路径,当我使用路径分析算法时,我需要检测dalvik指令以满足更具伸缩性的应用程序分析。 但现在我遇到了注册限制中不可避免的问题。 在我的仪器工作期间,我需要至少8个寄存器添加,但在一个方法中,通常会限制v0~v15内的寄存器数量,如果我直接修改'.locals x'块,我将触发重新编译错误。 通常是这样的。
.method public static mixCir(I)Ljava/lang/String;
.locals 10
.parameter "max"
如果我们只修改10 - > 18,apktool编译会触发错误:
Exception in thread "main" java.lang.NullPointerException
at org.jf.util.PathUtil.getRelativeFile(PathUtil.java:44)
at org.jf.smali.smaliFlexLexer.getSourceName(smaliFlexLexer.java:292
at org.antlr.runtime.CommonTokenStream.getSourceName(CommonTokenStre
ava:345)
at org.antlr.runtime.Parser.getSourceName(Parser.java:88)
at org.jf.smali.smaliParser.getErrorHeader(smaliParser.java:358)
at org.antlr.runtime.BaseRecognizer.displayRecognitionError(BaseReco
er.java:192)
at org.antlr.runtime.BaseRecognizer.reportError(BaseRecognizer.java:
at org.jf.smali.smaliParser.smali_file(smaliParser.java:736)
at brut.androlib.mod.SmaliMod.assembleSmaliFile(SmaliMod.java:71)
at brut.androlib.src.DexFileBuilder.addSmaliFile(DexFileBuilder.java
at brut.androlib.src.DexFileBuilder.addSmaliFile(DexFileBuilder.java
at brut.androlib.src.SmaliBuilder.buildFile(SmaliBuilder.java:64)
at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:48)
at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:35)
at brut.androlib.Androlib.buildSourcesSmali(Androlib.java:222)
at brut.androlib.Androlib.buildSources(Androlib.java:179)
at brut.androlib.Androlib.build(Androlib.java:170)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)
那么,有没有办法满足我的要求? 非常感谢!