Open source fully obfuscated stub

This commit is contained in:
topjohnwu
2021-09-02 21:31:33 -07:00
parent a967afc629
commit 9c09ad3b62
67 changed files with 535 additions and 184 deletions

View File

@@ -1,5 +1,4 @@
import org.apache.tools.ant.filters.FixCrLfFilter
import java.io.PrintStream
plugins {
id("com.android.application")
@@ -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)

View File

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

View File

@@ -8,3 +8,7 @@ android {
consumerProguardFiles("proguard-rules.pro")
}
}
dependencies {
api("io.michaelrocks:paranoid-core:0.3.5")
}

View File

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

View File

@@ -1,5 +1,7 @@
package com.topjohnwu.magisk;
import static android.os.Build.VERSION.SDK_INT;
import android.content.Context;
import android.content.res.AssetManager;
@@ -7,8 +9,9 @@ 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

View File

@@ -19,9 +19,12 @@ import java.io.IOException;
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};

View File

@@ -2,6 +2,9 @@ package com.topjohnwu.magisk;
import android.content.Context;
import io.michaelrocks.paranoid.Obfuscate;
@Obfuscate
public class ProviderInstaller {
public static boolean install(Context context) {

View File

@@ -12,6 +12,9 @@ import com.topjohnwu.magisk.FileProvider;
import java.io.File;
import io.michaelrocks.paranoid.Obfuscate;
@Obfuscate
public class APKInstall {
public static Intent installIntent(Context c, File apk) {

View File

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