diff options
author | YuutaW <17158086+Trumeet@users.noreply.github.com> | 2019-02-24 20:23:14 -0800 |
---|---|---|
committer | YuutaW <17158086+Trumeet@users.noreply.github.com> | 2019-02-24 20:23:14 -0800 |
commit | 90591340c3666681da59ffbfd340c1d751ba0658 (patch) | |
tree | 6285d8f8189a51a09804e7aa2bc46bbd8247c316 | |
parent | 42ff4d54a926df8fcc82a5cd160c6d47b7ff198f (diff) | |
download | WorkMode-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>
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> |