android中的仪器dalvik在v0~v15

时间:2015-05-08 03:15:51

标签: android dalvik instrumentation

最近,我尝试分析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)

那么,有没有办法满足我的要求? 非常感谢!

0 个答案:

没有答案