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,62 @@
FROM ubuntu:14.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 /workspace
RUN git init /workspace/hopper && \
cd /workspace/hopper && \
git remote add origin https://github.com/cuplv/hopper.git && \
git fetch --depth=1 origin 9f0e99360468f74762cacc81dcba933ac255bc87 && \
git reset --hard FETCH_HEAD
RUN git init /workspace/droidel && \
cd /workspace/droidel && \
git remote add origin https://github.com/cuplv/droidel.git && \
git fetch --depth=1 origin 04dd9858a20d166571b56af164059aad5ebe60d2 && \
git reset --hard FETCH_HEAD
RUN apt-get update && apt-get install -y openjdk-7-jdk ant wget unzip maven maven2 binutils g++ \
make scala python
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/*
RUN cd /workspace/ && \
wget -O - https://github.com/sbt/sbt/releases/download/v0.13.18/sbt-0.13.18.tgz | tar xzv && \
cd sbt && \
mkdir -p /root/.ivy2/local && \
cp -r lib/local-preloaded/* /root/.ivy2/local/
ENV PATH="/workspace/sbt/bin:/workspace/dex2jar:$PATH"
RUN mkdir /workspace/hopper/lib && git init /workspace/hopper/lib/z3 && \
cd /workspace/hopper/lib/z3 && \
git remote add origin https://github.com/Z3Prover/z3.git && \
git fetch --depth=1 origin 7f6ef0b6c0813f2e9e8f993d45722c0e5b99e152 && \
git reset --hard FETCH_HEAD && \
python scripts/mk_make.py --java && cd build && make && \
cp *.jar ../.. && cp *.so ../..
RUN sed -i 's#cd walautil#cd walautil \&\& git checkout 6aad86d730da36f6b21363a14612eb7fa45535ac#' /workspace/droidel/lib/install_deps.sh && \
sed -i 's#cd jphantom#cd jphantom \&\& git checkout 097a8f82bd09cf32b7826fa3876be4018c3eb562#' /workspace/droidel/lib/install_deps.sh && \
sed -i 's#javac#javac -encoding ISO-8859-1#g' /workspace/droidel/stubs/compile_stubs.sh && \
cd /workspace/droidel/lib/ && ./install_deps.sh && \
cd /workspace/droidel && sbt compile && sbt publishLocal
COPY android-4.4.2.jar /workspace/droidel/stubs/
RUN cd /workspace/droidel/stubs/ && \
./compile_stubs.sh android-4.4.2.jar && \
cp /workspace/droidel/stubs/out/droidel_android-4.4.2.jar /workspace/hopper/lib/
RUN cd /workspace/hopper && \
sed -i 's#target/scala-2.10/hopper_2.10-0.1-one-jar.jar#/workspace/hopper/target/scala-2.10/hopper_2.10-0.1-one-jar.jar#' /workspace/hopper/hopper.sh && \
sed -i 's#pwd#dirname -- "$(readlink -f "${BASH_SOURCE}")"#' /workspace/hopper/hopper.sh && \
sbt one-jar
COPY run.sh /

View file

@ -0,0 +1,151 @@
JarClassLoader: Warning: Null manifest from input stream associated with: lib/libz3java.so
JarClassLoader: Warning: Null manifest from input stream associated with: lib/javax.inject-1.jar
JarClassLoader: Warning: Null manifest from input stream associated with: lib/libz3.s
13CC67ECBFF7B04A052F3690E553BE321285B9379D9CF0A9FCB479FD772DF395.apk:
```
128 invokevirtual < Application, Lcom/reg/MainRegActivity$2, onClick(Landroid/view/View;)V > v128,v122 @128 exception:v130
BB127
at scala.Predef$.assert(Predef.scala:179)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.forkToPredecessorBlocks(UnstructuredSymbolicExecutor.scala:459)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.forkToPredecessorBlocks(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackwardIntraproceduralWhile(UnstructuredSymbolicExecutor.scala:406)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackwardIntraproceduralWhile(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackwardWhileHelper(UnstructuredSymbolicExecutor.scala:776)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackwardWhileHelper(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackwardWhile(UnstructuredSymbolicExecutor.scala:759)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackwardWhile(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackward(UnstructuredSymbolicExecutor.scala:815)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackward(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackward(UnstructuredSymbolicExecutor.scala:803)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackward(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$generateWitness$1.apply(AndroidLeakClient.scala:258)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$generateWitness$1.apply(AndroidLeakClient.scala:247)
at scala.collection.LinearSeqOptimized$class.exists(LinearSeqOptimized.scala:80)
at scala.collection.immutable.List.exists(List.scala:84)
at edu.colorado.hopper.client.android.AndroidLeakClient.generateWitness(AndroidLeakClient.scala:247)
at edu.colorado.hopper.client.android.AndroidLeakClient.refuteFieldErrorForward(AndroidLeakClient.scala:184)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$refuteFieldErrors$1.apply(AndroidLeakClient.scala:121)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$refuteFieldErrors$1.apply(AndroidLeakClient.scala:119)
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144)
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144)
at scala.collection.mutable.LinkedHashSet.foreach(LinkedHashSet.scala:87)
at scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:144)
at scala.collection.AbstractTraversable.foldLeft(Traversable.scala:105)
at edu.colorado.hopper.client.android.AndroidLeakClient.refuteFieldErrors(AndroidLeakClient.scala:119)
at edu.colorado.hopper.client.android.AndroidLeakClient.check(AndroidLeakClient.scala:81)
at edu.colorado.hopper.client.android.AndroidLeakClient.check(AndroidLeakClient.scala:24)
at edu.colorado.hopper.driver.Main$.main(Main.scala:72)
at edu.colorado.hopper.driver.Main.main(Main.scala)
... 6 more
```
62BDA1D7ABB522DEFE0A82731792D0E3F9DB38969778B837CB1B51782051F46B.apk:
```
902 v996 = invokevirtual < Application, Lcom/nd/dianjin/b, onTouch(Landroid/view/View;Landroid/view/MotionEvent;)Z > v994,v26,v201 @902 exception:v997
BB844
at scala.Predef$.assert(Predef.scala:179)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.forkToPredecessorBlocks(UnstructuredSymbolicExecutor.scala:459)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.forkToPredecessorBlocks(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackwardIntraproceduralWhile(UnstructuredSymbolicExecutor.scala:406)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackwardIntraproceduralWhile(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackwardWhileHelper(UnstructuredSymbolicExecutor.scala:776)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackwardWhileHelper(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackwardWhile(UnstructuredSymbolicExecutor.scala:759)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackwardWhile(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackward(UnstructuredSymbolicExecutor.scala:815)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackward(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackward(UnstructuredSymbolicExecutor.scala:803)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackward(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$generateWitness$1.apply(AndroidLeakClient.scala:258)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$generateWitness$1.apply(AndroidLeakClient.scala:247)
at scala.collection.LinearSeqOptimized$class.exists(LinearSeqOptimized.scala:80)
at scala.collection.immutable.List.exists(List.scala:84)
at edu.colorado.hopper.client.android.AndroidLeakClient.generateWitness(AndroidLeakClient.scala:247)
at edu.colorado.hopper.client.android.AndroidLeakClient.refuteFieldErrorForward(AndroidLeakClient.scala:184)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$refuteFieldErrors$1.apply(AndroidLeakClient.scala:121)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$refuteFieldErrors$1.apply(AndroidLeakClient.scala:119)
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144)
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144)
at scala.collection.mutable.LinkedHashSet.foreach(LinkedHashSet.scala:87)
at scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:144)
at scala.collection.AbstractTraversable.foldLeft(Traversable.scala:105)
at edu.colorado.hopper.client.android.AndroidLeakClient.refuteFieldErrors(AndroidLeakClient.scala:119)
at edu.colorado.hopper.client.android.AndroidLeakClient.check(AndroidLeakClient.scala:81)
at edu.colorado.hopper.client.android.AndroidLeakClient.check(AndroidLeakClient.scala:24)
at edu.colorado.hopper.driver.Main$.main(Main.scala:72)
at edu.colorado.hopper.driver.Main.main(Main.scala)
... 6 more
```
K9Mail:
```
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.simontuffs.onejar.Boot.run(Boot.java:340)
at com.simontuffs.onejar.Boot.main(Boot.java:166)
Caused by: java.lang.RuntimeException:
at scala.sys.package$.error(package.scala:27)
at edu.colorado.walautil.Util$.Assert(Util.scala:23)
at edu.colorado.walautil.Util$.Assert(Util.scala:22)
at edu.colorado.hopper.client.android.AndroidLeakClient.refuteFieldErrorForward(AndroidLeakClient.scala:198)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$refuteFieldErrors$1.apply(AndroidLeakClient.scala:121)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$refuteFieldErrors$1.apply(AndroidLeakClient.scala:119)
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144)
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144)
at scala.collection.mutable.LinkedHashSet.foreach(LinkedHashSet.scala:87)
at scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:144)
at scala.collection.AbstractTraversable.foldLeft(Traversable.scala:105)
at edu.colorado.hopper.client.android.AndroidLeakClient.refuteFieldErrors(AndroidLeakClient.scala:119)
at edu.colorado.hopper.client.android.AndroidLeakClient.check(AndroidLeakClient.scala:81)
at edu.colorado.hopper.client.android.AndroidLeakClient.check(AndroidLeakClient.scala:24)
at edu.colorado.hopper.driver.Main$.main(Main.scala:72)
at edu.colorado.hopper.driver.Main.main(Main.scala)
... 6 more
```
DroidLife:
```
v343 = phi v10,v12,v14,v16,v18,v20,v22,v24,v26,v28,v30,v32,v34,v36,v38,v40,v42,v44,v46,v48,v50,v52,v54,v56,v58,v60,v62,v64,v66,v68,v70,v72,v74,v76,v78,v80,v82,v84,v86,v88,v90,v92
296 invokevirtual < Application, Lorg/jtb/droidlife/CustomDialog$Builder$1, onClick(Landroid/content/DialogInterface;I)V > v341,v343,v344 @296 exception:v345
BB268
at scala.Predef$.assert(Predef.scala:179)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.forkToPredecessorBlocks(UnstructuredSymbolicExecutor.scala:459)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.forkToPredecessorBlocks(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackwardIntraproceduralWhile(UnstructuredSymbolicExecutor.scala:406)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackwardIntraproceduralWhile(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackwardWhileHelper(UnstructuredSymbolicExecutor.scala:776)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackwardWhileHelper(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackwardWhile(UnstructuredSymbolicExecutor.scala:759)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackwardWhile(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackward(UnstructuredSymbolicExecutor.scala:815)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackward(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.executor.UnstructuredSymbolicExecutor$class.executeBackward(UnstructuredSymbolicExecutor.scala:803)
at edu.colorado.hopper.executor.DefaultSymbolicExecutor.executeBackward(UnstructuredSymbolicExecutor.scala:34)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$generateWitness$1.apply(AndroidLeakClient.scala:258)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$generateWitness$1.apply(AndroidLeakClient.scala:247)
at scala.collection.LinearSeqOptimized$class.exists(LinearSeqOptimized.scala:80)
at scala.collection.immutable.List.exists(List.scala:84)
at edu.colorado.hopper.client.android.AndroidLeakClient.generateWitness(AndroidLeakClient.scala:247)
at edu.colorado.hopper.client.android.AndroidLeakClient.refuteFieldErrorForward(AndroidLeakClient.scala:184)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$refuteFieldErrors$1.apply(AndroidLeakClient.scala:121)
at edu.colorado.hopper.client.android.AndroidLeakClient$$anonfun$refuteFieldErrors$1.apply(AndroidLeakClient.scala:119)
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144)
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144)
at scala.collection.mutable.LinkedHashSet.foreach(LinkedHashSet.scala:87)
at scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:144)
at scala.collection.AbstractTraversable.foldLeft(Traversable.scala:105)
at edu.colorado.hopper.client.android.AndroidLeakClient.refuteFieldErrors(AndroidLeakClient.scala:119)
at edu.colorado.hopper.client.android.AndroidLeakClient.check(AndroidLeakClient.scala:81)
at edu.colorado.hopper.client.android.AndroidLeakClient.check(AndroidLeakClient.scala:24)
at edu.colorado.hopper.driver.Main$.main(Main.scala:72)
at edu.colorado.hopper.driver.Main.main(Main.scala)
... 6 more
```

View file

@ -0,0 +1,26 @@
#!/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"
JAR_FILENAME=$(echo ${APK_FILENAME} | sed 's/.apk/-dex2jar.jar/')
cd /mnt
#/usr/bin/time -o /mnt/report -q /usr/bin/timeout --kill-after=20s ${TIMEOUT}
sh -c "d2j-dex2jar.sh ${APK_FILENAME} && /workspace/hopper/hopper.sh -app ${JAR_FILENAME} -droidel_home /workspace/droidel -android_jar /workspace/hopper/lib/droidel_android-4.4.2.jar -check_android_leaks"
#> /mnt/stdout 2> /mnt/stderr