Skip to content

Commit 9c09ad3

Browse files
committed
Open source fully obfuscated stub
1 parent a967afc commit 9c09ad3

File tree

67 files changed

+535
-184
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+535
-184
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ out
44
*.apk
55
/config.prop
66
/update.sh
7+
/dict.txt
78

89
# Built binaries
910
native/out

app/build.gradle.kts

+1-23
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import org.apache.tools.ant.filters.FixCrLfFilter
2-
import java.io.PrintStream
32

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

146-
fun PrintStream.newField(name: String, file: File) {
147-
println("public static byte[] $name() {")
148-
print("byte[] buf = {")
149-
val bytes = file.readBytes()
150-
print(bytes.joinToString(",") { "(byte)(${it.toInt() and 0xff})" })
151-
println("};")
152-
println("return buf;")
153-
println("}")
154-
}
155-
156145
val genSrcTask = tasks.register("generate${name.capitalize()}KeyData") {
157146
inputs.dir(keysDir)
158147
outputs.file(outSrc)
159148
doLast {
160-
outSrc.parentFile.mkdirs()
161-
PrintStream(outSrc).use {
162-
it.println("package com.topjohnwu.magisk.signing;")
163-
it.println("public final class KeyData {")
164-
165-
it.newField("testCert", File(keysDir, "testkey.x509.pem"))
166-
it.newField("testKey", File(keysDir, "testkey.pk8"))
167-
it.newField("verityCert", File(keysDir, "verity.x509.pem"))
168-
it.newField("verityKey", File(keysDir, "verity.pk8"))
169-
170-
it.println("}")
171-
}
149+
genKeyData(keysDir, outSrc)
172150
}
173151
}
174152
registerJavaGeneratingTask(genSrcTask, outSrcDir)

app/proguard-rules.pro

+4
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@
4949
-repackageclasses 'a'
5050
-allowaccessmodification
5151

52+
-obfuscationdictionary ../dict.txt
53+
-classobfuscationdictionary ../dict.txt
54+
-packageobfuscationdictionary ../dict.txt
55+
5256
-dontwarn org.bouncycastle.jsse.BCSSLParameters
5357
-dontwarn org.bouncycastle.jsse.BCSSLSocket
5458
-dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider

app/shared/build.gradle.kts

+4
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,7 @@ android {
88
consumerProguardFiles("proguard-rules.pro")
99
}
1010
}
11+
12+
dependencies {
13+
api("io.michaelrocks:paranoid-core:0.3.5")
14+
}

app/shared/src/main/AndroidManifest.xml

+5
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,9 @@
2424
android:usesCleartextTraffic="true"
2525
tools:ignore="UnusedAttribute" />
2626

27+
<!-- Hardcode GMS version -->
28+
<meta-data
29+
android:name="com.google.android.gms.version"
30+
android:value="12451000" />
31+
2732
</manifest>

app/shared/src/main/java/com/topjohnwu/magisk/DynAPK.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package com.topjohnwu.magisk;
22

3+
import static android.os.Build.VERSION.SDK_INT;
4+
35
import android.content.Context;
46
import android.content.res.AssetManager;
57

68
import java.io.File;
79
import java.lang.reflect.Method;
810
import java.util.Map;
911

10-
import static android.os.Build.VERSION.SDK_INT;
12+
import io.michaelrocks.paranoid.Obfuscate;
1113

14+
@Obfuscate
1215
public class DynAPK {
1316

1417
// Indices of the object array

app/shared/src/main/java/com/topjohnwu/magisk/FileProvider.java

+3
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@
1919
import java.util.HashMap;
2020
import java.util.Map;
2121

22+
import io.michaelrocks.paranoid.Obfuscate;
23+
2224
/**
2325
* Modified from androidx.core.content.FileProvider
2426
*/
27+
@Obfuscate
2528
public class FileProvider extends ContentProvider {
2629
private static final String[] COLUMNS = {OpenableColumns.DISPLAY_NAME, OpenableColumns.SIZE};
2730

app/shared/src/main/java/com/topjohnwu/magisk/ProviderInstaller.java

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import android.content.Context;
44

5+
import io.michaelrocks.paranoid.Obfuscate;
6+
7+
@Obfuscate
58
public class ProviderInstaller {
69

710
public static boolean install(Context context) {

app/shared/src/main/java/com/topjohnwu/magisk/utils/APKInstall.java

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212

1313
import java.io.File;
1414

15+
import io.michaelrocks.paranoid.Obfuscate;
16+
17+
@Obfuscate
1518
public class APKInstall {
1619

1720
public static Intent installIntent(Context c, File apk) {

app/src/main/AndroidManifest.xml

-5
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,6 @@
7171
android:exported="false"
7272
android:grantUriPermissions="true" />
7373

74-
<!-- Hardcode GMS version -->
75-
<meta-data
76-
android:name="com.google.android.gms.version"
77-
android:value="12451000" />
78-
7974
<!-- Initialize WorkManager on-demand -->
8075
<provider
8176
android:name="androidx.startup.InitializationProvider"

buildSrc/src/main/java/BuildSource.kt

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class MagiskPlugin : Plugin<Project> {
2626
override fun apply(project: Project) = project.applyPlugin()
2727

2828
private fun Project.applyPlugin() {
29+
initRandom(rootProject.file("dict.txt"))
2930
props.clear()
3031
rootProject.file("gradle.properties").inputStream().use { props.load(it) }
3132
val configPath: String? by this

0 commit comments

Comments
 (0)