[Soot-list] automatic instrument the results produced by FlowDroid with "Failure [INSTALL_FAILED_DEXOPT]"

Jin Li lijin1988 at gmail.com
Thu Sep 25 05:03:40 EDT 2014


Hi all,

I want to check if the results produced by FlowDroid are really reached at
runtime. So I instrument the statments of the results automaticly as soon
as these paths are produced.

But when I install the instrumented apk on my devices, it said that
Failure [INSTALL_FAILED_DEXOPT]

I think I had something wrong when instrumenting the apk.

some related code snippets:

public class TaintFlowInstrumentDriver {

    public static InfoflowResults infoflowResults;

    /**
     * @param args[0] = path to apk-file
     * @param args[1] = path to android-dir (path/android-platforms)
     * @throws InterruptedException
     * @throws IOException
     */
    public static void main(String[] args) throws IOException,
InterruptedException {

        //insert some code for getting flowdroid results which represents
the taintgraph
        if(args.length < 2){
            printUsage();
            return;
        }
        String filePath = args[0];
        String androidJarPath = args[1];
        infoflowResults = runAnalysis(filePath, androidJarPath);

        soot.G.reset();
        //prefer Android APK files// -src-prec apk
        Options.v().set_src_prec(Options.src_prec_apk);

        //output as APK, too//-f J
        Options.v().set_output_format(Options.output_format_dex);
        Options.v().set_output_dir("D:\\Android\\sootOutput");

Options.v().set_process_dir(Collections.singletonList("D:\\Android\\TestApk\\traccar-client-debug-unaligned.apk"));
        Options.v().set_allow_phantom_refs(true);
        Options.v().set_whole_program(true);

Options.v().set_soot_classpath(".;D:\\Android\\adt-bundle-windows-x86_64-20131030\\sdk\\platforms\\android-19\\android.jar");

Options.v().set_android_jars("D:\\Android\\adt-bundle-windows-x86_64-20131030\\sdk\\platforms");


        Scene.v().addBasicClass("java.io.PrintStream",SootClass.SIGNATURES);
        Scene.v().addBasicClass("java.lang.System",SootClass.SIGNATURES);
        Scene.v().addBasicClass("InstrumentHelper",SootClass.SIGNATURES);

        Scene.v().loadNecessaryClasses();
        PackManager.v().getPack("jtp").add(new
Transform("jtp.myInstrumenter", new TaintFlowInstrument()));
        soot.Main.main(args);
    }

    Even I use an empty Instrumentation whch I mean I do not instrument any
stmts in internalTransform(), the transformed apk can't install on my
devices.

Did you have any idea about my results?  or
Can you shed light on me about instrumening the results of FlowDroid?


Best Regards,
Jin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20140925/4ff27012/attachment-0001.html 


More information about the Soot-list mailing list