To run DidFail:
- Open a Bash shell.
- Set the environment variable
didfail
to be the directory in which DidFail was installed. E.g.,
- To run DidFail (both phases 1 and 2):
- ~/didfail/cert/run-didfail.sh OUT_DIR APK1 ... APKn
- Running just parts of phase 1:
- The scripts for running parts of Phase 1 independently are available in the latest versions of the three branches in the repository. These scripts are a bit finicky and not well-tested. You may need to create a
log
directory inside the OUT_DIR for some of them to work.
- First, set up environment variables in your Bash shell:
- source ~/didfail/cert/paths.local.sh
- Running APK Transformer:
- ~/didfail/cert/run-transformer.sh OUT_DIR APK
- Running FlowDroid:
- ~/didfail/cert/run-indep-flowdroid.sh OUT_DIR APK
- Running Epicc:
- ~/didfail/cert/run-indep-epicc.sh OUT_DIR APK
- Extracting manifest file (to stdout):
- ~/didfail/cert/extract-manifest.sh APK
- Running Phase 2:
- Usage:
- python ~/didfail/cert/taintflows.py phase1_output_files [--js out.json] [--gv graph] [--quiet]
- This creates
out.json
, graph.gv
, graph.txt
, and graph.pdf
.
- The
find-processed-apps.sh
script finds the Phase-1 output files in a given directory. E.g.,
- python ~/didfail/cert/taintflows.py $(~/didfail/cert/find-processed-apps.sh outdir) --js out.json