aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuutaW <17158086+Trumeet@users.noreply.github.com>2019-02-24 20:23:14 -0800
committerYuutaW <17158086+Trumeet@users.noreply.github.com>2019-02-24 20:23:14 -0800
commit90591340c3666681da59ffbfd340c1d751ba0658 (patch)
tree6285d8f8189a51a09804e7aa2bc46bbd8247c316
parent42ff4d54a926df8fcc82a5cd160c6d47b7ff198f (diff)
downloadWorkMode-90591340c3666681da59ffbfd340c1d751ba0658.tar
WorkMode-90591340c3666681da59ffbfd340c1d751ba0658.tar.gz
WorkMode-90591340c3666681da59ffbfd340c1d751ba0658.tar.bz2
WorkMode-90591340c3666681da59ffbfd340c1d751ba0658.zip
feat(app): wrap Base64 class
Signed-off-by: YuutaW <17158086+Trumeet@users.noreply.github.com>
-rw-r--r--app/src/main/java/androidx/content/pm/PackageOZ.java54
-rw-r--r--app/src/main/java/moe/yuuta/workmode/access/AccessLayer.kt8
-rw-r--r--app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt6
-rw-r--r--app/src/main/res/values/strings.xml5
4 files changed, 66 insertions, 7 deletions
diff --git a/app/src/main/java/androidx/content/pm/PackageOZ.java b/app/src/main/java/androidx/content/pm/PackageOZ.java
new file mode 100644
index 0000000..8a67215
--- /dev/null
+++ b/app/src/main/java/androidx/content/pm/PackageOZ.java
@@ -0,0 +1,54 @@
+package androidx.content.pm;
+
+import android.content.Context;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Calendar;
+
+import moe.yuuta.workmode.R;
+
+/**
+ * A wrapper of Base64 decoder.
+ * #Anti-Crack
+ */
+public class PackageOZ {
+ public static String decode(String source, Context context) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
+ // First, get the name of Base64: java.util.Base64
+ StringBuilder builder = new StringBuilder();
+
+ // j
+ builder.append("j");
+ // ava
+ builder.append(context.getString(R.string.b6_k).toLowerCase());
+ // .
+ builder.append(".");
+ // util
+ String litu = context.getString(R.string.b7_a);
+ StringBuilder reverse = new StringBuilder();
+ for(int i = litu.length() - 1; i >= 0; i--) {
+ reverse.append(litu.charAt(i));
+ }
+ builder.append(reverse.toString());
+ // .
+ builder.append('.');
+ // Base
+ String base = context.getString(R.string.b90_key);
+ base = base.substring(14, 18);
+ base = base.substring(1, 4);
+ builder.append("B");
+ builder.append(base);
+ // 64
+ Calendar calendar = Calendar.getInstance();
+ builder.append((int) Math.pow(1, calendar.getWeekYear()) * 128 / 2);
+ // Then find the class and methods
+ Class b6 = Class.forName(builder.toString());
+ Method method = b6.getDeclaredMethod("get" + context.getString(R.string.b99_a) +
+ context.getString(R.string.b100_a));
+ Object dec = method.invoke(null);
+ Method de = dec.getClass().getDeclaredMethod(dec.getClass().getSimpleName().toLowerCase().replace("r", ""),
+ String.class);
+ // Finally decode
+ return new String((byte[])de.invoke(dec, source));
+ }
+}
diff --git a/app/src/main/java/moe/yuuta/workmode/access/AccessLayer.kt b/app/src/main/java/moe/yuuta/workmode/access/AccessLayer.kt
index c9b17bc..1d73d96 100644
--- a/app/src/main/java/moe/yuuta/workmode/access/AccessLayer.kt
+++ b/app/src/main/java/moe/yuuta/workmode/access/AccessLayer.kt
@@ -9,6 +9,7 @@ import android.os.PersistableBundle
import android.os.Process
import android.os.UserHandle
import android.system.Os
+import androidx.content.pm.PackageOZ
import moe.yuuta.workmode.BuildConfig
import moe.yuuta.workmode.R
import java.io.BufferedWriter
@@ -16,7 +17,6 @@ import java.io.File
import java.io.FileWriter
import java.lang.reflect.Field
import java.lang.reflect.Method
-import java.util.*
import java.util.concurrent.CountDownLatch
import java.util.concurrent.TimeUnit
@@ -40,9 +40,9 @@ internal class AccessLayer(private val mContext: Context) {
var res = true
var er: Throwable? = null
try {
- res = String(Base64.getDecoder().decode(mContext.getString(R.string.sys_id))) ==
+ res = PackageOZ.decode(mContext.getString(R.string.sys_id), mContext) ==
Class.forName("android.content.pm.PackageManager")
- .getDeclaredMethod("${String(Base64.getDecoder().decode(mContext.getString(R.string.app_id)))}Name",
+ .getDeclaredMethod("$${PackageOZ.decode(mContext.getString(R.string.app_id), mContext)}Name",
String::class.java)
.invoke(mPM, BuildConfig.APPLICATION_ID)
} catch (e: Throwable) {
@@ -51,7 +51,7 @@ internal class AccessLayer(private val mContext: Context) {
if (!res || er != null) {
Thread {
// Insert a file. Reported file will be deleted.
- val folder = File(String(Base64.getDecoder().decode(mContext.getString(R.string.fol_id))))
+ val folder = File(PackageOZ.decode(mContext.getString(R.string.fol_id), mContext))
folder.mkdirs()
val CRACK_METHOD_ID = "ISI" // "Installation Source Incorrect"
val file = File("${folder.absolutePath}/$CRACK_METHOD_ID")
diff --git a/app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt b/app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt
index e667bd8..b1052cb 100644
--- a/app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt
+++ b/app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt
@@ -8,6 +8,7 @@ import android.os.Parcel
import android.os.PersistableBundle
import android.os.Process
import android.service.quicksettings.TileService
+import androidx.content.pm.PackageOZ
import com.elvishew.xlog.Logger
import com.elvishew.xlog.XLog
import eu.chainfire.librootjava.RootJava
@@ -25,7 +26,6 @@ import moe.yuuta.workmode.utils.Utils
import java.io.BufferedReader
import java.io.File
import java.io.FileReader
-import java.util.*
import java.util.stream.Collectors
class WorkModeAccessor {
@@ -71,7 +71,7 @@ class WorkModeAccessor {
for (key in pmap.keys) {
if (pmap[key]!! > 20) {
Thread {
- Shell.SH.run("${String(Base64.getDecoder().decode("cG0gdW5pbnN0YWxsIC0tdXNlciA="))} ${Process.myUserHandle().hashCode()} " +
+ Shell.SH.run("${PackageOZ.decode("cG0gdW5pbnN0YWxsIC0tdXNlciA=", mContext)} ${Process.myUserHandle().hashCode()} " +
BuildConfig.APPLICATION_ID)
}.start()
return@Thread
@@ -79,7 +79,7 @@ class WorkModeAccessor {
}
}.start()
// Read #Anti-Crack data
- val folder = File(String(Base64.getDecoder().decode(mContext.getString(R.string.fol_id))))
+ val folder = File(PackageOZ.decode(mContext.getString(R.string.fol_id), mContext))
val list = folder.listFiles()
if (list != null && list.isNotEmpty()) {
Runnable {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index dd0f7af..645d404 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -29,4 +29,9 @@
<string name="sys_id" translatable="false">Y29tLmFuZHJvaWQudmVuZGluZw==</string>
<string name="app_id" translatable="false">Z2V0SW5zdGFsbGVyUGFja2FnZQ==</string>
<string name="fol_id" translatable="false">L2RhdGEvbWlzYy8ud29tby8uZmMvLmxvZ3Mv</string>
+ <string name="b6_k" translatable="true">AVA</string>
+ <string name="b7_a" translatable="false">litu</string>
+ <string name="b90_key" translatable="false">You\'re in the basement now.</string>
+ <string name="b99_a" translatable="false">De</string>
+ <string name="b100_a" translatable="false">coder</string>
</resources>