Closed zjbthomas closed 3 years ago
Hi Junbin,
first of all, to get started with CoDiDroid, let me suggest to checkout the paper's artifact (https://dl.acm.org/do/10.1145/3345841/full).
Now let me try to answer your questions:
Questions on setting up CoDiDroid:
-configwizard, -cw
. Or access the Configuration-Wizard via the AQL-System's GUI (Help → Configuration Wizard).Questions on configurating and running CoDiDroid:
<runOnEntry>, <runOnExit>, <runOnSuccess>, <runOnFail> and <runOnAbort>
https://github.com/FoelliX/AQL-System/wiki/Configuration).Flows FROM App('A.apk') TO App('B.apk') ?
into queries as you mentioned it.Hope it helps!
Cheers,
FoelliX
Hi @FoelliX , thanks for the reply!
I decided to use a combinations of DroidRA, FlowDroid, HornDroid, IC3, NOAH, PIM as stated in the ESEC/FSE 19 paper. Currently we don't want to handle IAC related flows.
I still have two questions related to ICC:
MATCH
, it requires PIM to take effect. Does it mean that without PIM (since it is dynamic and we also want to test a version that is totally static), the combination I used is not able to detect ICC flows within one app?Thank you!
Hi Junbin (@zjbthomas),
You can use the default AQL operator CONNECT
instead of MATCH
(PIM). However, it will be less accurate, since it only checks whether the action and category of an intent (IntentSink) and an intent-filter (IntentSource) match exactly. On a match it assumes that the intent can be "received" by the intent filter. PIM in contrast creates both, intent and intent filter, on an Android device to check if the intent can be "received" by the intent filter.
Yes, any Android device can be used. The artifact comes as a Linux virtual machine and since an emulator could not be run efficiently inside a virtual machine, we decided to make a physical device mandatory regarding the artifact. Android emulators typically cannot be run WITH hardware support inside a virtual machine. WITHOUT hardware support such emulators are very slow.
Happy to help!
Cheers, FoelliX
Hi @FoelliX thanks!
Here are two follow-up questions:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<answer>
<flows/>
</answer>
Hi Junbin (@zjbthomas),
You can switch the versions like that but use "FlowDroid" as name for the old version and "FlowDroid2" as name for the new version in the associated AQL-System/WebService's config file then.
No, it can be run in any AQL-System implementation (including BREW, AQL-WebService, ...). If you are able to execute all tools on the same machine, there is no need to setup multiple AQL-System/WebServices.
Cheers, FoelliX
Hi @FoelliX ,
Take InterComponentCommunication/ActivityCommunication3 in DroidBench as an example. I used the following query. The IC3 I used is the one inside /tools/IC3/new/
CHECK [
CONNECT [
Flows IN App('/path/to/ActivityCommunication3' | 'DEOBFUSCATE') ?,
IntentSinks IN App('/path/to/ActivityCommunication3' | 'DEOBFUSCATE') ?,
IntentSources IN App('/path/to/ActivityCommunication3' | 'DEOBFUSCATE') ?
],
CONNECT [
Flows IN App('/path/to/ActivityCommunication3' | 'DEOBFUSCATE') USES 'HornDroid' ?,
IntentSinks IN App('/path/to/ActivityCommunication3' | 'DEOBFUSCATE') ?,
IntentSources IN App('/path/to/ActivityCommunication3' | 'DEOBFUSCATE') ?
]
]
I compared my results (attached below) with the one in RQ1_results (/BREW/data/storage/71fbbee247b9723506e83a00350f7e2bc30e94b3a86d3d6b1e9fbe9b44e5b214.xml). Inside the getIntent()
. The other look like the same.
InterComponentCommunication.ActivityCommunication3.zip
CONNECT
< IccTA < PIM. Does this make sense?Thank you in advanced.
Hi @zjbthomas,
The flows you are missing were added by PIM. Thus, they will not be found when using the CONNECT operator. I added a description that explains how to make PIM find these additional IntentSources (see "PIM together with IC3" here: https://github.com/FoelliX/PIM)
<runOnEntry>
/ <runOnExit>
scripts (see https://github.com/FoelliX/AQL-System/wiki/Configuration). The newer AQL-System version which is still in development and not released yet will allow to make this "feeding" process more comfortable.Cheers, FoelliX
Hi FoelliX,
Thanks for your help and now I can successfully run AQL-System to output static analysis results. However, I want to further use CoDiDroid but I am wondering if there is a guide/wiki on how to run it?
Specifically, I have the following questions:
Questions on setting up CoDiDroid:
config.properties
s that can be used, so these WebServices work as expected in CoDiDroid?config_example.xml
to configure my AQL-System, so it can be connected to the two AQL-WebServices. Is this idea correct?Questions on configurating and running CoDiDroid:
Flows IN App('A.apk') ?
only finds intra-component flows in A.apk? If I want to ALSO find ICC flows in A.apk, do I need to use the following query?Thank you in advance!