first commit

This commit is contained in:
Jean-Marie Mineau 2023-11-15 15:59:13 +01:00
commit cd1e91bb99
Signed by: histausse
GPG key ID: B66AEEDA9B645AD2
287 changed files with 86425 additions and 0 deletions

View file

@ -0,0 +1 @@
home_build

View file

@ -0,0 +1,16 @@
# Didfail
- [source](https://bitbucket.org/wklieber/didfail/src/master/)
- [paper](https://dl.acm.org/doi/10.1145/2614628.2614633)
- language: Java, Python2
- Build: Makefile
- number of years without at least 1 commit since first commit: 8
- license: BSD-3-Clause
# Notes:
Trouble on the laptop with ulimit:
```
docker run --ulimit nofile=65536:65536 -it ...
```

View file

@ -0,0 +1,167 @@
FROM ubuntu:12.04
RUN sed -i -e "s/archive.ubuntu.com/old-releases.ubuntu.com/g" /etc/apt/sources.list
RUN apt-get update && apt-get install -y git time
RUN mkdir -p /workspace/didfail
RUN apt-get update && \
apt-get install -y wget unzip make ant && \
apt-get install -y openjdk-7-jdk openjdk-7-jre-headless && \
apt-get remove -y openjdk-6-jre openjdk-6-jre-headless && \
apt-get install -y gcc-4.6-multilib && \
apt-get install -y lib32stdc++6 && \
apt-get install -y zlib1g-dev:i386
# Download the android-sdk (no sdk-manager on 12.04)
RUN apt-get update && apt-get install -y bsdtar && \
mkdir -p /opt/android-sdk/platforms/android-3 && \
wget -O /opt/android-sdk/platforms/android-3/zip.zip https://dl.google.com/android/repository/android-1.5_r04-linux.zip && \
mkdir -p /opt/android-sdk/platforms/android-4 && \
wget -O /opt/android-sdk/platforms/android-4/zip.zip https://dl.google.com/android/repository/android-1.6_r03-linux.zip && \
mkdir -p /opt/android-sdk/platforms/android-5 && \
wget -O /opt/android-sdk/platforms/android-5/zip.zip https://dl.google.com/android/repository/android-2.0_r01-linux.zip && \
mkdir -p /opt/android-sdk/platforms/android-6 && \
wget -O /opt/android-sdk/platforms/android-6/zip.zip https://dl.google.com/android/repository/android-2.0.1_r01-linux.zip && \
mkdir -p /opt/android-sdk/platforms/android-7 && \
wget -O /opt/android-sdk/platforms/android-7/zip.zip https://dl.google.com/android/repository/android-2.1_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-8 && \
wget -O /opt/android-sdk/platforms/android-8/zip.zip https://dl.google.com/android/repository/android-2.2_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-10 && \
wget -O /opt/android-sdk/platforms/android-10/zip.zip https://dl.google.com/android/repository/android-2.3.3_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-11 && \
wget -O /opt/android-sdk/platforms/android-11/zip.zip https://dl.google.com/android/repository/android-3.0_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-12 && \
wget -O /opt/android-sdk/platforms/android-12/zip.zip https://dl.google.com/android/repository/android-3.1_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-13 && \
wget -O /opt/android-sdk/platforms/android-13/zip.zip https://dl.google.com/android/repository/android-3.2_r01.zip && \
mkdir -p /opt/android-sdk/platforms/android-14 && \
wget -O /opt/android-sdk/platforms/android-14/zip.zip https://dl.google.com/android/repository/android-14_r04.zip && \
mkdir -p /opt/android-sdk/platforms/android-15 && \
wget -O /opt/android-sdk/platforms/android-15/zip.zip https://dl.google.com/android/repository/android-15_r05.zip && \
mkdir -p /opt/android-sdk/platforms/android-16 && \
wget -O /opt/android-sdk/platforms/android-16/zip.zip https://dl.google.com/android/repository/android-16_r05.zip && \
mkdir -p /opt/android-sdk/platforms/android-17 && \
wget -O /opt/android-sdk/platforms/android-17/zip.zip https://dl.google.com/android/repository/android-17_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-18 && \
wget -O /opt/android-sdk/platforms/android-18/zip.zip https://dl.google.com/android/repository/android-18_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-19 && \
wget -O /opt/android-sdk/platforms/android-19/zip.zip https://dl.google.com/android/repository/android-19_r04.zip && \
mkdir -p /opt/android-sdk/platforms/android-21 && \
wget -O /opt/android-sdk/platforms/android-21/zip.zip https://dl.google.com/android/repository/android-21_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-22 && \
wget -O /opt/android-sdk/platforms/android-22/zip.zip https://dl.google.com/android/repository/android-22_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-23 && \
wget -O /opt/android-sdk/platforms/android-23/zip.zip https://dl.google.com/android/repository/platform-23_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-24 && \
wget -O /opt/android-sdk/platforms/android-24/zip.zip https://dl.google.com/android/repository/platform-24_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-25 && \
wget -O /opt/android-sdk/platforms/android-25/zip.zip https://dl.google.com/android/repository/platform-25_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-26 && \
wget -O /opt/android-sdk/platforms/android-26/zip.zip https://dl.google.com/android/repository/platform-26_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-27 && \
wget -O /opt/android-sdk/platforms/android-27/zip.zip https://dl.google.com/android/repository/platform-27_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-28 && \
wget -O /opt/android-sdk/platforms/android-28/zip.zip https://dl.google.com/android/repository/platform-28_r06.zip && \
mkdir -p /opt/android-sdk/platforms/android-29 && \
wget -O /opt/android-sdk/platforms/android-29/zip.zip https://dl.google.com/android/repository/platform-29_r05.zip && \
mkdir -p /opt/android-sdk/platforms/android-20 && \
wget -O /opt/android-sdk/platforms/android-20/zip.zip https://dl.google.com/android/repository/android-20_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-30 && \
wget -O /opt/android-sdk/platforms/android-30/zip.zip https://dl.google.com/android/repository/platform-30_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-31 && \
wget -O /opt/android-sdk/platforms/android-31/zip.zip https://dl.google.com/android/repository/platform-Sv2_r01.zip && \
mkdir -p /opt/android-sdk/platforms/android-32 && \
wget -O /opt/android-sdk/platforms/android-32/zip.zip https://dl.google.com/android/repository/platform-32_r01.zip && \
mkdir -p /opt/android-sdk/platforms/android-33 && \
wget -O /opt/android-sdk/platforms/android-33/zip.zip https://dl.google.com/android/repository/platform-TiramisuPrivacySandbox_r08.zip && \
/usr/bin/find /opt/android-sdk/platforms/ -name '*.zip' -execdir bsdtar -x --strip-components=1 -f {} \;
# Build jasmin
RUN cd /workspace && \
wget https://github.com/Sable/jasmin/archive/79c79f314297e28037cfa91fa9316325e3a515bb.zip && \
unzip 79c79f314297e28037cfa91fa9316325e3a515bb.zip && \
rm 79c79f314297e28037cfa91fa9316325e3a515bb.zip && \
mv jasmin-79c79f314297e28037cfa91fa9316325e3a515bb/ jasmin && \
cd jasmin && cp ant.settings.template ant.settings && \
sed -i 's/java_cup.jar=.*/java_cup.jar=libs\/java_cup.jar/' ant.settings && \
ant jasmin-jar
# Build hero
RUN cd /workspace && \
wget https://github.com/Sable/heros/archive/5b8180ebf9ba0eb869579425a7adb3d967da8c61.zip && \
unzip 5b8180ebf9ba0eb869579425a7adb3d967da8c61.zip && \
rm 5b8180ebf9ba0eb869579425a7adb3d967da8c61.zip && \
mv heros-5b8180ebf9ba0eb869579425a7adb3d967da8c61/ heros && \
cd heros && cp ant.settings.template ant.settings && \
echo '' >> ant.settings && echo 'slf4j-api.jar=slf4j-api-1.7.5.jar' >> ant.settings && \
echo 'slf4j-simple.jar=slf4j-simple-1.7.5.jar' >> ant.settings && \
ant jar && \
cp -r build/classes bin
# Build soot
RUN cd /workspace && \
wget https://github.com/soot-oss/soot/archive/b4e51615db0effbb2ddc847035664b45756f4f82.zip && \
unzip b4e51615db0effbb2ddc847035664b45756f4f82.zip && \
rm b4e51615db0effbb2ddc847035664b45756f4f82.zip && \
mv soot-b4e51615db0effbb2ddc847035664b45756f4f82/ soot && \
cd soot && cp ant.settings.template ant.settings && mkdir -p ../JastAddExtensions/SootJastAddJ && \
sed -i 's/jasmin.jar=..\/libs\/jasminclasses-custom.jar/jasmin.jar=..\/jasmin\/lib\/jasminclasses-2.2.1.jar/' ant.settings && \
sed -i 's/javacup.jar=..\/libs\/java_cup.jar/javacup.jar=libs\/java_cup.jar/' ant.settings && \
ant fulljar
# Commit specific for nov 2014
RUN cd /workspace && \
wget https://bitbucket.org/wsnavely/soot-infoflow-latest/get/3ff51b5fb9f551aef0b3598585f83fe334c0b99b.tar.gz && \
tar -xvzf 3ff51b5fb9f551aef0b3598585f83fe334c0b99b.tar.gz && \
mv wsnavely-soot-infoflow-latest-3ff51b5fb9f5 soot-infoflow && \
cd soot-infoflow && mv ant.settings.jenkins ant.settings && \
sed -i 's/soot.jar=.*/soot.jar=..\/soot\/lib\/soot-trunk.jar/' ant.settings && \
ant jar && \
cp -r build/classes bin
# Commit specific for nov 2014
RUN cd /workspace && \
wget https://bitbucket.org/wsnavely/soot-infoflow-android-latest/get/31620d664220dfa86de4b5fcc876e866eb41979f.tar.gz && \
tar -xvzf 31620d664220dfa86de4b5fcc876e866eb41979f.tar.gz && rm 31620d664220dfa86de4b5fcc876e866eb41979f.tar.gz && \
mv wsnavely-soot-infoflow-android-latest-31620d664220 soot-infoflow-android && \
cd soot-infoflow-android && mv ant.settings.jenkins ant.settings && \
sed -i 's/soot.jar=.*/soot.jar=..\/soot\/lib\/soot-trunk.jar/' ant.settings && \
sed -i 's/infoflow.jar=.*/infoflow.jar=..\/soot-infoflow\/build\/jar\/soot-infoflow.jar/' ant.settings && \
ant jar && \
cp -r build/classes bin
SHELL ["/bin/bash", "-c"]
RUN cd /workspace/didfail && \
wget -nc http://www.cs.cmu.edu/~wklieber/didfail/epicc-0.1.tgz && \
wget -nc https://github.com/dare-android/platform_dalvik/releases/download/dare-1.1.0/dare-1.1.0-linux.tgz && \
wget -nc http://www.cs.cmu.edu/~wklieber/didfail/platform-16.zip && \
wget -nc http://www.cs.cmu.edu/~wklieber/didfail/platform-19.zip && \
wget -nc http://www.cs.cmu.edu/~wklieber/didfail/toyapps-2014-04-28.zip && \
mkdir epicc && \
tar xzf epicc-0.1.tgz -C epicc && \
tar xzf dare-1.1.0-linux.tgz && \
unzip platform-16.zip && \
unzip platform-19.zip && \
unzip -q toyapps-2014-04-28.zip && \
wget -O didfail.zip https://bitbucket.org/wklieber/didfail/get/99bc1187c822b216fca81237c16225d7540d80dd.zip && \
unzip didfail.zip -d cert && \
mv cert/*/* cert/ && \
cp cert/paths.distrib.sh cert/paths.local.sh && \
sed -i 's/export didfail=.*/export didfail=\/workspace\/didfail/' /workspace/didfail/cert/paths.local.sh && \
sed -i 's/export sdk_platforms=.*/export sdk_platforms=\/opt\/android-sdk\/platforms/' /workspace/didfail/cert/paths.local.sh && \
sed -i 's/export wkspc=.*/export wkspc=\/workspace/' /workspace/didfail/cert/paths.local.sh && \
sed -i 's/export soot_base=.*/export soot_base=\/workspace/' /workspace/didfail/cert/paths.local.sh && \
sed -i 's/export jvm_flags=.*/# export jvm_flags="-Xmx16g -Xss16g"/' /workspace/didfail/cert/paths.local.sh && \
sed -i 's/export max_mem=.*/# export max_mem=17179869184/' /workspace/didfail/cert/paths.local.sh && \
sed -i 's/export max_time=.*/# export max_time=4200/' /workspace/didfail/cert/paths.local.sh && \
source /workspace/didfail/cert/paths.local.sh; \
cd /workspace/didfail/cert/transformApk && make
# sed -i 's/export jvm_flags=.*/export jvm_flags="-Xmx16g -Xss16g"/' /workspace/didfail/cert/paths.local.sh && \
# sed -i 's/export max_mem=.*/export max_mem=17179869184/' /workspace/didfail/cert/paths.local.sh && \
# sed -i 's/export max_time=.*/export max_time=4200/' /workspace/didfail/cert/paths.local.sh && \
COPY run.sh /

View file

@ -0,0 +1,22 @@
#!/usr/bin/env bash
APK_FILENAME=$1
export TIME="time: %e
kernel-cpu-time: %S
user-cpu-time: %U
max-rss-mem: %M
avg-rss-mem: %t
avg-total-mem: %K
page-size: %Z
nb-major-page-fault: %F
nb-minor-page-fault: %R
nb-fs-input: %I
nb-fs-output: %O
nb-socket-msg-received: %r
nb-socket-msg-sent: %s
nb-signal-delivered: %k
exit-status: %x"
/usr/bin/time -o /mnt/report -q /usr/bin/timeout --kill-after=20s ${TIMEOUT} /workspace/didfail/cert/run-didfail.sh /mnt/out/ /mnt/${APK_FILENAME} > /mnt/stdout 2> /mnt/stderr

View file

@ -0,0 +1,110 @@
FROM ubuntu:12.04
RUN sed -i -e "s/archive.ubuntu.com/old-releases.ubuntu.com/g" /etc/apt/sources.list
RUN apt-get update && apt-get install -y git time
RUN mkdir -p /workspace/didfail
RUN apt-get update && \
apt-get install -y wget unzip bzip2 && \
apt-get install -y openjdk-7-jdk openjdk-7-jre-headless && \
apt-get remove -y openjdk-6-jre openjdk-6-jre-headless && \
apt-get install -y gcc-4.6-multilib && \
apt-get install -y lib32stdc++6 && \
apt-get install -y zlib1g-dev:i386
# Download the android-sdk (no sdk-manager on 12.04)
RUN apt-get update && apt-get install -y bsdtar && \
mkdir -p /opt/android-sdk/platforms/android-3 && \
wget -O /opt/android-sdk/platforms/android-3/zip.zip https://dl.google.com/android/repository/android-1.5_r04-linux.zip && \
mkdir -p /opt/android-sdk/platforms/android-4 && \
wget -O /opt/android-sdk/platforms/android-4/zip.zip https://dl.google.com/android/repository/android-1.6_r03-linux.zip && \
mkdir -p /opt/android-sdk/platforms/android-5 && \
wget -O /opt/android-sdk/platforms/android-5/zip.zip https://dl.google.com/android/repository/android-2.0_r01-linux.zip && \
mkdir -p /opt/android-sdk/platforms/android-6 && \
wget -O /opt/android-sdk/platforms/android-6/zip.zip https://dl.google.com/android/repository/android-2.0.1_r01-linux.zip && \
mkdir -p /opt/android-sdk/platforms/android-7 && \
wget -O /opt/android-sdk/platforms/android-7/zip.zip https://dl.google.com/android/repository/android-2.1_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-8 && \
wget -O /opt/android-sdk/platforms/android-8/zip.zip https://dl.google.com/android/repository/android-2.2_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-10 && \
wget -O /opt/android-sdk/platforms/android-10/zip.zip https://dl.google.com/android/repository/android-2.3.3_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-11 && \
wget -O /opt/android-sdk/platforms/android-11/zip.zip https://dl.google.com/android/repository/android-3.0_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-12 && \
wget -O /opt/android-sdk/platforms/android-12/zip.zip https://dl.google.com/android/repository/android-3.1_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-13 && \
wget -O /opt/android-sdk/platforms/android-13/zip.zip https://dl.google.com/android/repository/android-3.2_r01.zip && \
mkdir -p /opt/android-sdk/platforms/android-14 && \
wget -O /opt/android-sdk/platforms/android-14/zip.zip https://dl.google.com/android/repository/android-14_r04.zip && \
mkdir -p /opt/android-sdk/platforms/android-15 && \
wget -O /opt/android-sdk/platforms/android-15/zip.zip https://dl.google.com/android/repository/android-15_r05.zip && \
mkdir -p /opt/android-sdk/platforms/android-16 && \
wget -O /opt/android-sdk/platforms/android-16/zip.zip https://dl.google.com/android/repository/android-16_r05.zip && \
mkdir -p /opt/android-sdk/platforms/android-17 && \
wget -O /opt/android-sdk/platforms/android-17/zip.zip https://dl.google.com/android/repository/android-17_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-18 && \
wget -O /opt/android-sdk/platforms/android-18/zip.zip https://dl.google.com/android/repository/android-18_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-19 && \
wget -O /opt/android-sdk/platforms/android-19/zip.zip https://dl.google.com/android/repository/android-19_r04.zip && \
mkdir -p /opt/android-sdk/platforms/android-21 && \
wget -O /opt/android-sdk/platforms/android-21/zip.zip https://dl.google.com/android/repository/android-21_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-22 && \
wget -O /opt/android-sdk/platforms/android-22/zip.zip https://dl.google.com/android/repository/android-22_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-23 && \
wget -O /opt/android-sdk/platforms/android-23/zip.zip https://dl.google.com/android/repository/platform-23_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-24 && \
wget -O /opt/android-sdk/platforms/android-24/zip.zip https://dl.google.com/android/repository/platform-24_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-25 && \
wget -O /opt/android-sdk/platforms/android-25/zip.zip https://dl.google.com/android/repository/platform-25_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-26 && \
wget -O /opt/android-sdk/platforms/android-26/zip.zip https://dl.google.com/android/repository/platform-26_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-27 && \
wget -O /opt/android-sdk/platforms/android-27/zip.zip https://dl.google.com/android/repository/platform-27_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-28 && \
wget -O /opt/android-sdk/platforms/android-28/zip.zip https://dl.google.com/android/repository/platform-28_r06.zip && \
mkdir -p /opt/android-sdk/platforms/android-29 && \
wget -O /opt/android-sdk/platforms/android-29/zip.zip https://dl.google.com/android/repository/platform-29_r05.zip && \
mkdir -p /opt/android-sdk/platforms/android-20 && \
wget -O /opt/android-sdk/platforms/android-20/zip.zip https://dl.google.com/android/repository/android-20_r02.zip && \
mkdir -p /opt/android-sdk/platforms/android-30 && \
wget -O /opt/android-sdk/platforms/android-30/zip.zip https://dl.google.com/android/repository/platform-30_r03.zip && \
mkdir -p /opt/android-sdk/platforms/android-31 && \
wget -O /opt/android-sdk/platforms/android-31/zip.zip https://dl.google.com/android/repository/platform-Sv2_r01.zip && \
mkdir -p /opt/android-sdk/platforms/android-32 && \
wget -O /opt/android-sdk/platforms/android-32/zip.zip https://dl.google.com/android/repository/platform-32_r01.zip && \
mkdir -p /opt/android-sdk/platforms/android-33 && \
wget -O /opt/android-sdk/platforms/android-33/zip.zip https://dl.google.com/android/repository/platform-TiramisuPrivacySandbox_r08.zip && \
/usr/bin/find /opt/android-sdk/platforms/ -name '*.zip' -execdir bsdtar -x --strip-components=1 -f {} \;
RUN cd /workspace/didfail && \
wget -nc http://www.cs.cmu.edu/~wklieber/didfail/epicc-0.1.tgz && \
wget -nc https://github.com/dare-android/platform_dalvik/releases/download/dare-1.1.0/dare-1.1.0-linux.tgz && \
wget -nc http://www.cs.cmu.edu/~wklieber/didfail/platform-16.zip && \
wget -nc http://www.cs.cmu.edu/~wklieber/didfail/platform-19.zip && \
wget -nc http://www.cs.cmu.edu/~wklieber/didfail/toyapps-2014-04-28.zip && \
mkdir epicc && \
tar xzf epicc-0.1.tgz -C epicc && \
tar xzf dare-1.1.0-linux.tgz && \
unzip platform-16.zip && \
unzip platform-19.zip && \
unzip -q toyapps-2014-04-28.zip && \
wget -nc http://www.cs.cmu.edu/~wklieber/didfail/didfail.zip && \
unzip -q -d /workspace/didfail/cert didfail.zip && \
cp cert/paths.distrib.sh cert/paths.local.sh && \
sed -i 's/export didfail=.*/export didfail=\/workspace\/didfail/' /workspace/didfail/cert/paths.local.sh && \
sed -i 's/export sdk_platforms=.*/export sdk_platforms=\/opt\/android-sdk\/platforms/' /workspace/didfail/cert/paths.local.sh && \
sed -i 's/export wkspc=.*/export wkspc=\/workspace/' /workspace/didfail/cert/paths.local.sh && \
sed -i 's/export soot_base=.*/export soot_base=\/workspace/' /workspace/didfail/cert/paths.local.sh && \
sed -i 's/export jvm_flags=.*/# export jvm_flags="-Xmx16g -Xss16g"/' /workspace/didfail/cert/paths.local.sh && \
sed -i 's/export max_mem=.*/# export max_mem=17179869184/' /workspace/didfail/cert/paths.local.sh && \
sed -i 's/export max_time=.*/# export max_time=4200/' /workspace/didfail/cert/paths.local.sh && \
wget -nc http://www.cs.cmu.edu/~wklieber/didfail/workspace.tar.bz2 && \
tar xjf workspace.tar.bz2 -C /workspace
# sed -i 's/export jvm_flags=.*/export jvm_flags="-Xmx16g -Xss16g"/' /workspace/didfail/cert/paths.local.sh && \
# sed -i 's/export max_mem=.*/export max_mem=17179869184/' /workspace/didfail/cert/paths.local.sh && \
# sed -i 's/export max_time=.*/export max_time=4200/' /workspace/didfail/cert/paths.local.sh && \
COPY run.sh /workspace/run.sh

View file

@ -0,0 +1,22 @@
#!/usr/bin/env bash
APK_FILENAME=$1
export TIME="time: %e
kernel-cpu-time: %S
user-cpu-time: %U
max-rss-mem: %M
avg-rss-mem: %t
avg-total-mem: %K
page-size: %Z
nb-major-page-fault: %F
nb-minor-page-fault: %R
nb-fs-input: %I
nb-fs-output: %O
nb-socket-msg-received: %r
nb-socket-msg-sent: %s
nb-signal-delivered: %k
exit-status: %x"
/usr/bin/time -o /mnt/report -q /usr/bin/timeout --kill-after=20s ${TIMEOUT} /workspace/didfail/cert/run-didfail.sh /mnt/out/ /mnt/${APK_FILENAME} > /mnt/stdout 2> /mnt/stderr

View file

@ -0,0 +1,142 @@
import datetime
import importlib.util
import logging
import re
from typing import Any, Type, Optional
from pathlib import Path
from more_itertools import peekable
if __name__ == "__main__":
import sys
sys.path.append(str(Path(__file__).resolve().parent.parent))
import orchestrator
errors = orchestrator.error_collector
utils = orchestrator.utils
TIMEOUT = 900
GUEST_MNT = "/mnt"
PATH_APK = f"{GUEST_MNT}/app.apk"
WORKDIR = "/"
CMD = "/workspace/run.sh"
TOOL_NAME = "didfail"
# Version name -> folder name
TOOL_VERSIONS = {
"provided_build": "provided_build",
"home_build": "home_build",
}
# Name of the default version (default folder = TOOL_VERSIONS[DEFAULT_TOOL_VERSION])
DEFAULT_TOOL_VERSION = "home_build"
EXPECTED_ERROR_TYPES: list[Type[errors.LoggedError]] = [errors.PythonError]
EXPECTED_ERROR_TYPES_FLOWDROID: list[Type[errors.LoggedError]] = [
errors.JavaError,
errors.NoPrefixJavaError,
errors.FlowdroidLog4jError,
]
EXPECTED_ERROR_TYPES_XFORM: list[Type[errors.LoggedError]] = [
errors.JavaError,
errors.NoPrefixJavaError,
errors.FlowdroidLog4jError,
]
EXPECTED_ERROR_TYPES_DARE: list[Type[errors.LoggedError]] = []
def analyse_artifacts(path: Path) -> dict[str, Any]:
"""Analyse the artifacts of a test located at `path`."""
report = utils.parse_report(path / "report")
report["errors"] = []
flowdroid_log = path / "out" / "log" / "app.flowdroid.log"
dare_log = path / "out" / "log" / "app.dare.log"
xform_log = path / "out" / "log" / "app.xform.log"
report["errors"].extend(
map(
lambda e: e.get_dict(),
errors.get_errors(path / "stdout", EXPECTED_ERROR_TYPES),
)
)
if flowdroid_log.exists():
report["errors"].extend(
map(
lambda e: e.get_dict(),
errors.get_errors(flowdroid_log, EXPECTED_ERROR_TYPES_FLOWDROID),
)
)
if dare_log.exists():
report["errors"].extend(
map(
lambda e: e.get_dict(),
errors.get_errors(dare_log, EXPECTED_ERROR_TYPES_DARE),
)
)
if xform_log.exists():
print
report["errors"].extend(
map(
lambda e: e.get_dict(),
errors.get_errors(xform_log, EXPECTED_ERROR_TYPES_XFORM),
)
)
if report["timeout"]:
report["tool-status"] = "TIMEOUT"
elif check_success(path, report):
report["tool-status"] = "FINISHED"
else:
report["tool-status"] = "FAILED"
report["tool-name"] = TOOL_NAME
report["date"] = str(datetime.datetime.now())
report["apk"] = utils.sha256_sum(path / "app.apk").upper()
return report
def check_success(path: Path, report: dict[str, Any]) -> bool:
"""Check if the analysis finished without crashing."""
with (path / "stdout").open("r", errors="replace") as file:
for line in file:
if line == "Failure!\n":
return False
if report["exit-status"] != 0:
return False
flowfile = path / "out" / "flows.out"
if not flowfile.exists():
return False
return flowfile.stat().st_size > 1
if __name__ == "__main__":
import docker # type: ignore
args = orchestrator.get_test_args(TOOL_NAME)
tool_folder = Path(__file__).resolve().parent
api_key = orchestrator.get_androzoo_key()
if args.get_apk_info:
orchestrator.load_apk_info(args.apk_refs, args.androzoo_list, api_key)
client = docker.from_env()
logging.info("Command tested: ")
logging.info(f"[{WORKDIR}]$ {CMD}")
for apk_ref in args.apk_refs:
orchestrator.test_tool_on_apk(
client,
tool_folder,
api_key,
apk_ref,
args.tool_version,
args.keep_artifacts,
args.force_test,
)