[Soot-list] [Soot][FlowDroid] Running FlowDroid in whole-program mode (-w)

Umar Farooq ufaro001 at ucr.edu
Wed Feb 28 19:36:58 EST 2018


Hello Steven,

I am using FlowDroid API, The "SetupApplication" class has method "
initializeSoot" that is responsible to initialize soot, I have tried to set
the flag for whole program but it seems it is not working. Please, see the
code below.


private void initializeSoot(boolean constructCallgraph) {
        logger.info("Initializing Soot...");

        final String androidJar =
config.getAnalysisFileConfig().getAndroidPlatformDir();
        final String apkFileLocation =
config.getAnalysisFileConfig().getTargetAPKFile();

        // Clean up any old Soot instance we may have
        G.reset();

        Options.v().set_no_bodies_for_excluded(true);
        Options.v().set_allow_phantom_refs(true);
        if (config.getWriteOutputFiles())
            Options.v().set_output_format(Options.output_format_jimple);
        else
            Options.v().set_output_format(Options.output_format_none);
        Options.v().set_whole_program(constructCallgraph);
        Options.v().set_process_dir(Collections.singletonList(apkFileLocation));
        if (forceAndroidJar)
            Options.v().set_force_android_jar(androidJar);
        else
            Options.v().set_android_jars(androidJar);
        Options.v().set_src_prec(Options.src_prec_apk_class_jimple);
        Options.v().set_keep_line_number(false);
        Options.v().set_keep_offset(false);
        Options.v().set_throw_analysis(Options.throw_analysis_dalvik);
        Options.v().set_process_multiple_dex(config.getMergeDexFiles());
        *Options.v().set_whole_program(true);*
        System.out.println("Soot Initialization called");


Thanks,
Umar

On Wed, Feb 28, 2018 at 11:58 AM, Umar Farooq <ufaro001 at ucr.edu> wrote:

> Hello Steven,
>
> I am using FlowDroid API, The "SetupApplication" class has method "
> initializeSoot" that is responsible to initialize soot, I have tried to
> set the flag for whole program but it seems it is not working. Please, see
> my code in attachment.
>
> Thanks,
> Umar
>
> On Wed, Feb 28, 2018 at 1:48 AM, Arzt, Steven <
> steven.arzt at sit.fraunhofer.de> wrote:
>
>> Hi Umar,
>>
>>
>>
>> How do you attempt to run FlowDroid? Do you use the FlowDroid API or the
>> command-line program? Please show your command line or your code with which
>> you invoke FlowDroid.
>>
>>
>>
>> Best regards,
>>
>>   Steven
>>
>>
>>
>> *From:* Soot-list [mailto:soot-list-bounces at cs.mcgill.ca] *On Behalf Of *Umar
>> Farooq
>> *Sent:* Wednesday, February 28, 2018 2:33 AM
>> *To:* soot-list at cs.mcgill.ca
>> *Subject:* [Soot-list] [Soot][FlowDroid] Running FlowDroid in
>> whole-program mode (-w)
>>
>>
>>
>> Hi All,
>>
>>
>>
>> I want to run FlowDroid in whole program mode, I have tried to call "
>> soot.options.Options.*v*().set_whole_program(*true*);" it can work for
>> soot but not for FlowDroid. I need to load all the bodies level classes but
>> I am getting this message.
>>
>>
>>
>> "The data flow analysis has failed. Error message: This operation
>> requires resolving level BODIES but android.support.v7.app.AppCompatActivity
>> is at resolving level SIGNATURES
>>
>> If you are extending Soot, try to add the following call before calling
>> soot.Main.main(..):
>>
>> Scene.v().addBasicClass(android.support.v7.app.AppCompatActivity,BODIES);
>>
>> Otherwise, try whole-program mode (-w)."
>>
>>
>>
>>
>>
>> Thanks,
>>
>> Umar
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20180228/e93f81a5/attachment.html>


More information about the Soot-list mailing list