A simple collection of dummy applications to showcase DroidGround.
The following applications are currently available:
| Application | Description |
|---|---|
| Hidden Activity | A simple application with an hidden activity that contains the flag |
| Multi Step | An application with an exported activity with a state machine within it |
| Net Multi Step | Same application as the previous one, which makes a network request instead of displaying the flag on the screen |
Every sample app has the following:
- a placeholder flag set to
DROIDGROUND_FLAG_PLACEHOLDER - a
config.jsonfile in the root of the app directory that specifies:- The file(s) that contain the placeholder flag
- The actual flag
Using this info the GitHub action can build two versions of each app (one with the placeholder flag and one with the actual flag). This simulates what should happen in a real CTF event, where the player are given the placeholder version while the real one is installed on the device accessible through DroidGround.
The release signing config is set as follows:
signingConfigs {
getByName("debug") {
}
create("release") {
// Only configure if all props are provided
val storeFileProp = project.findProperty("android.injected.signing.store.file") as String?
val storePasswordProp = project.findProperty("android.injected.signing.store.password") as String?
val keyAliasProp = project.findProperty("android.injected.signing.key.alias") as String?
val keyPasswordProp = project.findProperty("android.injected.signing.key.password") as String?
if (
storeFileProp != null &&
storePasswordProp != null &&
keyAliasProp != null &&
keyPasswordProp != null
) {
storeFile = file(storeFileProp)
storePassword = storePasswordProp
keyAlias = keyAliasProp
keyPassword = keyPasswordProp
} else {
// Leave it untouched. Do NOT set bogus values.
}
}
}
buildTypes {
getByName("debug") {
signingConfig = signingConfigs.getByName("debug")
isDebuggable = true
}
getByName("release") {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}If you want to build them on your own you can use the build.sh script provided here in the root of the repo.