demo
This commit is contained in:
parent
fc71f3a992
commit
c0a33536b9
8 changed files with 31 additions and 23 deletions
|
|
@ -3,7 +3,32 @@
|
|||
## Requirements to build
|
||||
|
||||
- Openjdk 17 at `/usr/lib/jvm/java-17-openjdk`
|
||||
- Android SDK at `$(HOME)/Android/Sdk` with `build-tools;34.0.0` and `platform-tools`
|
||||
- Android SDK at `$(HOME)/Android/Sdk` with `build-tools;34.0.0`, `platform-tools` and `platforms;android-34`
|
||||
|
||||
## Demo
|
||||
|
||||
Build the demo:
|
||||
|
||||
```
|
||||
cd simple_demo/
|
||||
make
|
||||
```
|
||||
|
||||
### Flowdroid:
|
||||
|
||||
Get Flowdroid from https://github.com/secure-software-engineering/FlowDroid
|
||||
|
||||
Run flow analysis:
|
||||
|
||||
- `./simple_demo/build/tests.apk` is the apk
|
||||
- `~/Android/Sdk/platforms/` is the platform directory, it must contains `android-34/android.jar` (if not, `sdkmanager platforms;android-34`)
|
||||
- `-r`: "Enable support for reflective method calls"
|
||||
- `./simple_demo/source_sink.txt` contains the sources and sinks for our demo app
|
||||
|
||||
```
|
||||
java -jar soot-infoflow-cmd-jar-with-dependencies.jar -a ./simple_demo/build/tests.apk -p ~/Android/Sdk/platforms/ -r -s ./simple_demo/source_sink.txt
|
||||
|
||||
```
|
||||
|
||||
## Filtering logs:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
SDK_TOOLS="${HOME}/Android/Sdk/"
|
||||
VERSION='34.0.0'
|
||||
VERSION_B=$(echo "${VERSION}" | sed 's/\..*//')
|
||||
ANDROID_JAR="${SDK_TOOLS}/platforms/android-${VERSION_B}/android.jar"
|
||||
|
||||
FOLDER=$(dirname "$(realpath $0)")
|
||||
|
||||
FLOWDROID="${FOLDER}/soot-infoflow-cmd-jar-with-dependencies.jar"
|
||||
SOURCE_SINK="${FOLDER}/source_sink.txt"
|
||||
JAVA='/usr/lib/jvm/java-17-openjdk/bin/java'
|
||||
|
||||
"${JAVA}" -jar "${FLOWDROID}" -a "${1}" -p "${ANDROID_JAR}" -s "${SOURCE_SINK}"
|
||||
|
|
@ -4,7 +4,7 @@ JAVA_PATH=/usr/lib/jvm/java-17-openjdk/bin
|
|||
JAVAC=/usr/lib/jvm/java-17-openjdk/bin/javac
|
||||
JAR=/usr/lib/jvm/java-17-openjdk/bin/jar
|
||||
PYTHON=python3
|
||||
APP=tests
|
||||
APP=demo
|
||||
|
||||
PACKAGE=com.example.theseus
|
||||
MAIN_ACTIVITY=MainActivity
|
||||
|
|
@ -51,6 +51,7 @@ build/classes/classes: build/deps.jar build/inline/classes.dex $(shell find java
|
|||
mkdir -p ./build/classes/classes
|
||||
sed -i "s# private static final String DEX =.*# private static final String DEX = \"$$(base64 -w 0 build/inline/classes.dex)\";#" java/classes/com/example/theseus/Main.java
|
||||
$(JAVAC) $(JAVAC_ARGS) -d ./build/classes/classes -classpath build/deps.jar:$(SDK_TOOLS)/platforms/android-$(VERSION_B)/android.jar $$(find java/$*/ -type f -regex ".*\.java")
|
||||
rm build/classes/classes/com/example/theseus/Malicious.class
|
||||
|
||||
build/%/classes.dex: build/%/classes
|
||||
mkdir -p ./build/$*
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import java.security.Key;
|
|||
|
||||
public class Main {
|
||||
|
||||
private static final String DEX = "ZGV4CjAzNQAvtfp88wvPHZi+B2FO1HZ02SatJfZGyA94BAAAcAAAAHhWNBIAAAAAAAAAANgDAAAVAAAAcAAAAAcAAADEAAAABQAAAOAAAAAAAAAAAAAAAAgAAAAcAQAAAQAAAFwBAAD8AgAAfAEAACACAAAoAgAAKwIAAC8CAAA0AgAATAIAAG0CAACKAgAAngIAALICAADNAgAA3QIAAOoCAADtAgAA8gIAAPUCAAD9AgAABwMAABIDAAAYAwAAIgMAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAwAAAABAAAABAAAAAAAAAADAAAABAAAAAgCAAACAAAABQAAABACAAAMAAAABgAAAAAAAAANAAAABgAAABgCAAABAAMAAAAAAAEAAQAQAAAAAQABABEAAAACAAQAEgAAAAMAAwAAAAAABQADAAAAAAAFAAIADwAAAAUAAAATAAAAAQAAAAEAAAADAAAAAAAAAAoAAAAAAAAAwAMAAAAAAAADAAIAAgAAAPQBAAAaAAAAIgIFAHAQBQACABoACwBuIAYAAgAMAm4gBgASAAwBGgIOAG4gBgAhAAwBbhAHAAEADAERAQIAAgACAAAA+gEAAAUAAABxIAMAAQASABEAAAABAAEAAQAAAAECAAAEAAAAcBAEAAAADgAGAgAADgAKAgAADjwABAAOAAAAAAIAAAAEAAAAAQAAAAQAAAACAAAAAAAEAAY8aW5pdD4AAUwAAkxMAANMTEwAFkxhbmRyb2lkL2FwcC9BY3Rpdml0eTsAH0xjb20vZXhhbXBsZS90aGVzZXVzL01hbGljaW91czsAG0xjb20vZXhhbXBsZS90aGVzZXVzL1V0aWxzOwASTGphdmEvbGFuZy9PYmplY3Q7ABJMamF2YS9sYW5nL1N0cmluZzsAGUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsADk1hbGljaW91cy5qYXZhAAtTZWNyZXREYXRhWwABVgADVkxMAAFdAAZhcHBlbmQACGdldF9kYXRhAAlzZW5kX2RhdGEABHNpbmsACHRvU3RyaW5nAJsBfn5EOHsiYmFja2VuZCI6ImRleCIsImNvbXBpbGF0aW9uLW1vZGUiOiJkZWJ1ZyIsImhhcy1jaGVja3N1bXMiOmZhbHNlLCJtaW4tYXBpIjoxLCJzaGEtMSI6ImZhY2VkZjQxYmJkMjhiNTYzZDFlOWUwOWM1ZjcyZDdjNWNhNTk4ZDUiLCJ2ZXJzaW9uIjoiOC4yLjItZGV2In0AAAADAACBgATcAwEJ/AIBCcADAAAAAAAADQAAAAAAAAABAAAAAAAAAAEAAAAVAAAAcAAAAAIAAAAHAAAAxAAAAAMAAAAFAAAA4AAAAAUAAAAIAAAAHAEAAAYAAAABAAAAXAEAAAEgAAADAAAAfAEAAAMgAAADAAAA9AEAAAEQAAADAAAACAIAAAIgAAAVAAAAIAIAAAAgAAABAAAAwAMAAAMQAAABAAAA1AMAAAAQAAABAAAA2AMAAA==";
|
||||
private static final String DEX = "ZGV4CjAzNQDonIk5owDjcxORqWvCJ0rZuaMyJCy5AF7kAwAAcAAAAHhWNBIAAAAAAAAAAEQDAAAQAAAAcAAAAAYAAACwAAAABAAAAMgAAAAAAAAAAAAAAAYAAAD4AAAAAQAAACgBAACcAgAASAEAAMQBAADMAQAA0AEAANUBAADtAQAADgIAACsCAAA/AgAAUwIAAGMCAABmAgAAawIAAHUCAACAAgAAhgIAAI4CAAADAAAABAAAAAUAAAAGAAAABwAAAAkAAAABAAAABAAAAKwBAAACAAAABAAAALQBAAAJAAAABQAAAAAAAAAKAAAABQAAALwBAAABAAIAAAAAAAEAAQALAAAAAQABAAwAAAACAAMADQAAAAIAAAAOAAAAAwACAAAAAAABAAAAAQAAAAMAAAAAAAAACAAAAAAAAAAsAwAAAAAAAAIAAgABAAAAmAEAAAUAAABxEAQAAAAMABEAAAACAAIAAgAAAJ4BAAAFAAAAcSADAAEAEgARAAAAAQABAAEAAAClAQAABAAAAHAQBQAAAA4ABgIAAA4ACgIAAA48AAQADgAAAAABAAAABAAAAAIAAAAEAAAAAgAAAAAABAAGPGluaXQ+AAJMTAADTExMABZMYW5kcm9pZC9hcHAvQWN0aXZpdHk7AB9MY29tL2V4YW1wbGUvdGhlc2V1cy9NYWxpY2lvdXM7ABtMY29tL2V4YW1wbGUvdGhlc2V1cy9VdGlsczsAEkxqYXZhL2xhbmcvT2JqZWN0OwASTGphdmEvbGFuZy9TdHJpbmc7AA5NYWxpY2lvdXMuamF2YQABVgADVkxMAAhnZXRfZGF0YQAJc2VuZF9kYXRhAARzaW5rAAZzb3VyY2UAmwF+fkQ4eyJiYWNrZW5kIjoiZGV4IiwiY29tcGlsYXRpb24tbW9kZSI6ImRlYnVnIiwiaGFzLWNoZWNrc3VtcyI6ZmFsc2UsIm1pbi1hcGkiOjEsInNoYS0xIjoiZmFjZWRmNDFiYmQyOGI1NjNkMWU5ZTA5YzVmNzJkN2M1Y2E1OThkNSIsInZlcnNpb24iOiI4LjIuMi1kZXYifQAAAAMAAIGABIADAQnIAgEJ5AIAAAAAAAANAAAAAAAAAAEAAAAAAAAAAQAAABAAAABwAAAAAgAAAAYAAACwAAAAAwAAAAQAAADIAAAABQAAAAYAAAD4AAAABgAAAAEAAAAoAQAAASAAAAMAAABIAQAAAyAAAAMAAACYAQAAARAAAAMAAACsAQAAAiAAABAAAADEAQAAACAAAAEAAAAsAwAAAxAAAAEAAABAAwAAABAAAAEAAABEAwAA";
|
||||
private Key key;
|
||||
ClassLoader cl;
|
||||
Activity ac;
|
||||
|
|
|
|||
|
|
@ -5,11 +5,8 @@ import android.app.AlertDialog;
|
|||
|
||||
|
||||
public class Utils {
|
||||
public static String source() {
|
||||
return "Secret";
|
||||
}
|
||||
public static String source(String tag) {
|
||||
return "[" + tag + "] Secret";
|
||||
return "SecretData[" + tag + "]";
|
||||
}
|
||||
|
||||
public static void popup(Activity ac, String title, String msg) {
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import android.app.Activity;
|
|||
|
||||
public class Malicious {
|
||||
public static String get_data(String data, Activity ac) {
|
||||
return "SecretData[" + data + "]";
|
||||
return Utils.source(data);
|
||||
}
|
||||
|
||||
public static String send_data(String data, Activity ac) {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,2 @@
|
|||
<com.example.theseus.Utils: java.lang.String source()> -> _SOURCE_
|
||||
<com.example.theseus.Utils: java.lang.String source(java.lang.String)> -> _SOURCE_
|
||||
<com.example.theseus.Utils: void sink(android.app.Activity,java.lang.String)> -> _SINK_
|
||||
Loading…
Add table
Add a link
Reference in a new issue