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 @@
provided_build

View file

@ -0,0 +1,14 @@
# Perfcheck
- [source (not available)](http://castle.cse.ust.hk/perfchecker/tool_obtain.php)
- [paper](https://dl.acm.org/doi/pdf/10.1145/2568225.2568229)
- language: Java 6 (works with 7, probably better because dex2jar oldest release is also java 7)
- number of years without at least 1 commit since first commit: ?
- License: Proprietary
## Notes
The binary is only available on demand, so we don't provide it ourself. We can still provide the dockerfile, which will only build if provided with the provided .jar.
To make sure the same .jar we used are provided, there checksum is provided and checked in the dockerfile (cf `checksums.sha256`).
The bytecode to analyse must be convert to java bytecode and loaded as code (with `-cp`), as does the `android.jar`. This means that the supported android version are limited by the java version (`Unsupported major.minor version` errors for android.jar >= sdk 24)

View file

@ -0,0 +1,68 @@
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y time wget unzip openjdk-7-jdk
RUN mkdir /workspace
COPY perfchecker.jar /workspace/
COPY soot-2.5.0.jar /workspace/
COPY checksums.sha256 /workspace/
# Check that the provided perfchecker.jar and soot-2.5.0.jar are the same as the one
# we got
RUN cd /workspace && sha256sum -c checksums.sha256
# Get android.jar s. Note: we don't download android.jar s for version >= 24 because it uses version 52.0 of java bytecode, not supported by java 7
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-20 && \
wget -O /opt/android-sdk/platforms/android-20/zip.zip https://dl.google.com/android/repository/android-20_r02.zip && \
/usr/bin/find /opt/android-sdk/platforms/ -name '*.zip' -execdir bsdtar -x --strip-components=1 -f {} \;
RUN cd /workspace/ && \
wget http://downloads.sourceforge.net/project/dex2jar/dex2jar-2.0-20140818.061505-10.zip && \
unzip dex2jar-2.0-20140818.061505-10.zip && rm dex2jar-2.0-20140818.061505-10.zip && \
mv dex2jar-2.0-SNAPSHOT dex2jar && \
chmod +x /workspace/dex2jar/*
ENV PATH="/workspace/dex2jar:$PATH"
COPY run.sh /
COPY subrun.sh /

View file

@ -0,0 +1,4 @@
- select android.jar?
- put everything in timeout
- check errors
- check success

View file

@ -0,0 +1,2 @@
cb8b09f515b246dd93c52f42cd13b16133735be209b12efa162334b6c4852e0a perfchecker.jar
b177a7d137f1cd1c8b41bfc00eef31566947ffbbe84e85f42d194ce643a5b276 soot-2.5.0.jar

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} /subrun.sh ${APK_FILENAME} > /mnt/stdout 2> /mnt/stderr

View file

@ -0,0 +1,17 @@
#!/usr/bin/env bash
APK_FILENAME=$1
ANDROID_JARS='/opt/android-sdk/platforms/android-10/android.jar:/opt/android-sdk/platforms/android-11/android.jar:/opt/android-sdk/platforms/android-12/android.jar:/opt/android-sdk/platforms/android-13/android.jar:/opt/android-sdk/platforms/android-14/android.jar:/opt/android-sdk/platforms/android-15/android.jar:/opt/android-sdk/platforms/android-3/android.jar:/opt/android-sdk/platforms/android-16/android.jar:/opt/android-sdk/platforms/android-17/android.jar:/opt/android-sdk/platforms/android-18/android.jar:/opt/android-sdk/platforms/android-19/android.jar:/opt/android-sdk/platforms/android-20/android.jar:/opt/android-sdk/platforms/android-4/android.jar:/opt/android-sdk/platforms/android-21/android.jar:/opt/android-sdk/platforms/android-5/android.jar:/opt/android-sdk/platforms/android-22/android.jar:/opt/android-sdk/platforms/android-6/android.jar:/opt/android-sdk/platforms/android-23/android.jar:/opt/android-sdk/platforms/android-7/android.jar:/opt/android-sdk/platforms/android-8/android.jar'
cd /mnt
d2j-dex2jar.sh ${APK_FILENAME}
JAR_FILENAME=$(echo ${APK_FILENAME} | sed 's/.apk/-dex2jar.jar/')
mkdir /mnt/classes
mv "/mnt/$JAR_FILENAME" /mnt/classes
cd /mnt/classes
unzip ${JAR_FILENAME}
rm ${JAR_FILENAME}
echo -e '1\ny\n/mnt/classes/' | java ${JAVA_PARAM} -cp "/workspace/perfchecker.jar:/workspace/soot-2.5.0.jar:${ANDROID_JARS}:/mnt/classes" androidPerf.CheckerMain