Skip to content

Commit

Permalink
Open source fully obfuscated stub
Browse files Browse the repository at this point in the history
  • Loading branch information
topjohnwu committed Sep 3, 2021
1 parent a967afc commit 9c09ad3
Show file tree
Hide file tree
Showing 67 changed files with 535 additions and 184 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ out
*.apk
/config.prop
/update.sh
/dict.txt

# Built binaries
native/out
Expand Down
24 changes: 1 addition & 23 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import org.apache.tools.ant.filters.FixCrLfFilter
import java.io.PrintStream

plugins {
id("com.android.application")
Expand Down Expand Up @@ -143,32 +142,11 @@ android.applicationVariants.all {
val outSrcDir = File(buildDir, "generated/source/keydata/$name")
val outSrc = File(outSrcDir, "com/topjohnwu/magisk/signing/KeyData.java")

fun PrintStream.newField(name: String, file: File) {
println("public static byte[] $name() {")
print("byte[] buf = {")
val bytes = file.readBytes()
print(bytes.joinToString(",") { "(byte)(${it.toInt() and 0xff})" })
println("};")
println("return buf;")
println("}")
}

val genSrcTask = tasks.register("generate${name.capitalize()}KeyData") {
inputs.dir(keysDir)
outputs.file(outSrc)
doLast {
outSrc.parentFile.mkdirs()
PrintStream(outSrc).use {
it.println("package com.topjohnwu.magisk.signing;")
it.println("public final class KeyData {")

it.newField("testCert", File(keysDir, "testkey.x509.pem"))
it.newField("testKey", File(keysDir, "testkey.pk8"))
it.newField("verityCert", File(keysDir, "verity.x509.pem"))
it.newField("verityKey", File(keysDir, "verity.pk8"))

it.println("}")
}
genKeyData(keysDir, outSrc)
}
}
registerJavaGeneratingTask(genSrcTask, outSrcDir)
Expand Down
4 changes: 4 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@
-repackageclasses 'a'
-allowaccessmodification

-obfuscationdictionary ../dict.txt
-classobfuscationdictionary ../dict.txt
-packageobfuscationdictionary ../dict.txt

-dontwarn org.bouncycastle.jsse.BCSSLParameters
-dontwarn org.bouncycastle.jsse.BCSSLSocket
-dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider
Expand Down
4 changes: 4 additions & 0 deletions app/shared/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,7 @@ android {
consumerProguardFiles("proguard-rules.pro")
}
}

dependencies {
api("io.michaelrocks:paranoid-core:0.3.5")
}
5 changes: 5 additions & 0 deletions app/shared/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,9 @@
android:usesCleartextTraffic="true"
tools:ignore="UnusedAttribute" />

<!-- Hardcode GMS version -->
<meta-data
android:name="com.google.android.gms.version"
android:value="12451000" />

</manifest>
5 changes: 4 additions & 1 deletion app/shared/src/main/java/com/topjohnwu/magisk/DynAPK.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
package com.topjohnwu.magisk;

import static android.os.Build.VERSION.SDK_INT;

import android.content.Context;
import android.content.res.AssetManager;

import java.io.File;
import java.lang.reflect.Method;
import java.util.Map;

import static android.os.Build.VERSION.SDK_INT;
import io.michaelrocks.paranoid.Obfuscate;

@Obfuscate
public class DynAPK {

// Indices of the object array
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,12 @@
import java.util.HashMap;
import java.util.Map;

import io.michaelrocks.paranoid.Obfuscate;

/**
* Modified from androidx.core.content.FileProvider
*/
@Obfuscate
public class FileProvider extends ContentProvider {
private static final String[] COLUMNS = {OpenableColumns.DISPLAY_NAME, OpenableColumns.SIZE};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

import android.content.Context;

import io.michaelrocks.paranoid.Obfuscate;

@Obfuscate
public class ProviderInstaller {

public static boolean install(Context context) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@

import java.io.File;

import io.michaelrocks.paranoid.Obfuscate;

@Obfuscate
public class APKInstall {

public static Intent installIntent(Context c, File apk) {
Expand Down
5 changes: 0 additions & 5 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,6 @@
android:exported="false"
android:grantUriPermissions="true" />

<!-- Hardcode GMS version -->
<meta-data
android:name="com.google.android.gms.version"
android:value="12451000" />

<!-- Initialize WorkManager on-demand -->
<provider
android:name="androidx.startup.InitializationProvider"
Expand Down
1 change: 1 addition & 0 deletions buildSrc/src/main/java/BuildSource.kt
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class MagiskPlugin : Plugin<Project> {
override fun apply(project: Project) = project.applyPlugin()

private fun Project.applyPlugin() {
initRandom(rootProject.file("dict.txt"))
props.clear()
rootProject.file("gradle.properties").inputStream().use { props.load(it) }
val configPath: String? by this
Expand Down
Loading

0 comments on commit 9c09ad3

Please sign in to comment.