From e382fd88da0691513edc923f22a64add24ff9cb9 Mon Sep 17 00:00:00 2001 From: areteruhiro Date: Thu, 30 Jan 2025 17:10:11 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=B3=E3=83=A9=E3=83=9C?= =?UTF-8?q?=E3=81=AE=E3=83=9C=E3=82=BF=E3=83=B3=E4=BD=9C=E6=88=90=E9=A0=85?= =?UTF-8?q?=E7=9B=AE=E3=82=92=E7=84=A1=E5=8A=B9=E5=8C=96=20=E3=83=90?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E3=83=8D=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E3=81=8B=E3=82=89=E5=8F=96=E5=BE=97=E3=81=99=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../lime/hooks/CheckHookTargetVersion.java | 11 ++- .../io/github/hiro/lime/hooks/Constants.java | 72 +++++++++---------- .../github/hiro/lime/hooks/EmbedOptions.java | 14 ++-- .../hiro/lime/hooks/RemoveVoiceRecord.java | 19 ++--- 5 files changed, 58 insertions(+), 60 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9d4722d..a7229e4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,7 +10,7 @@ android { minSdk 28 targetSdk 35 versionCode 11501 - versionName "1.16.01beta" + versionName "1.16.04beta" multiDexEnabled false proguardFiles += 'proguard-rules.pro' buildConfigField 'String', 'HOOK_TARGET_VERSION', '"141910383"' diff --git a/app/src/main/java/io/github/hiro/lime/hooks/CheckHookTargetVersion.java b/app/src/main/java/io/github/hiro/lime/hooks/CheckHookTargetVersion.java index 88f4f3f..5d3c694 100644 --- a/app/src/main/java/io/github/hiro/lime/hooks/CheckHookTargetVersion.java +++ b/app/src/main/java/io/github/hiro/lime/hooks/CheckHookTargetVersion.java @@ -7,7 +7,6 @@ import android.widget.Toast; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.callbacks.XC_LoadPackage; -import io.github.hiro.lime.BuildConfig; import io.github.hiro.lime.LimeOptions; import io.github.hiro.lime.R; import io.github.hiro.lime.Utils; @@ -24,12 +23,12 @@ public class CheckHookTargetVersion implements IHook { protected void beforeHookedMethod(MethodHookParam param) throws Throwable { Context context = (Context) param.thisObject; PackageManager pm = context.getPackageManager(); - long versionCode = pm.getPackageInfo(loadPackageParam.packageName, 0).getLongVersionCode(); - String versionCodeStr = String.valueOf(versionCode); - if (!BuildConfig.HOOK_TARGET_VERSION.equals(versionCodeStr) && - !versionCodeStr.equals("142110270") && - !versionCodeStr.equals("150000454")) { + String versionName = pm.getPackageInfo(loadPackageParam.packageName, 0).versionName; + String versionNameStr = String.valueOf(versionName); + if (!versionNameStr.equals("14.19.1")&& + !versionNameStr.equals("14.21.1") && + !versionNameStr.equals("15.0.0")) { Utils.addModuleAssetPath(context); Toast.makeText(context.getApplicationContext(), context.getString(R.string.incompatible_version), Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/java/io/github/hiro/lime/hooks/Constants.java b/app/src/main/java/io/github/hiro/lime/hooks/Constants.java index 1f82f75..890108a 100644 --- a/app/src/main/java/io/github/hiro/lime/hooks/Constants.java +++ b/app/src/main/java/io/github/hiro/lime/hooks/Constants.java @@ -37,55 +37,51 @@ static HookTarget RemoveVoiceRecord_Hook_c = new HookTarget("TS.f", "run"); ), "getSystemContext"); PackageManager pm = context.getPackageManager(); - long versionCode = 0; + String versionName = ""; // 初期化 try { - versionCode = pm.getPackageInfo(loadPackageParam.packageName, 0).getLongVersionCode(); + versionName = pm.getPackageInfo(loadPackageParam.packageName, 0).versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } - // バージョンコードに応じてHookTargetを変更 - if (versionCode == 141910383) { - USER_AGENT_HOOK = new HookTarget("Wc1.c", "h"); - WEBVIEW_CLIENT_HOOK = new HookTarget("OK0.l", "onPageFinished"); - MUTE_MESSAGE_HOOK = new HookTarget("Ob1.b", "H"); - MARK_AS_READ_HOOK = new HookTarget("WM.c$d", "run"); - Archive = new HookTarget("sB.Q", "invokeSuspend"); - NOTIFICATION_READ_HOOK = new HookTarget("qd1.b", "invokeSuspend"); - REQUEST_HOOK = new HookTarget("org.apache.thrift.l", "b"); - RESPONSE_HOOK = new HookTarget("org.apache.thrift.l", "a"); - //com.linecorp.uts.android.t with result: null - RemoveVoiceRecord_Hook_a = new HookTarget("q.j", "run"); - //有効から無効 - RemoveVoiceRecord_Hook_b = new HookTarget("xg1.e$a", "run"); -//無効から有効 - RemoveVoiceRecord_Hook_c = new HookTarget("TS.f", "run"); - } else if (versionCode ==142110270) { - USER_AGENT_HOOK = new HookTarget("vf1.c", "j"); - WEBVIEW_CLIENT_HOOK = new HookTarget("pN0.l", "onPageFinished"); - MARK_AS_READ_HOOK = new HookTarget("xN.b$d", "run"); - MUTE_MESSAGE_HOOK = new HookTarget("ne1.b", "H"); - Archive = new HookTarget("tB.N", "invokeSuspend"); - NOTIFICATION_READ_HOOK = new HookTarget("Pf1.c", "invokeSuspend"); - REQUEST_HOOK = new HookTarget("org.apache.thrift.l", "b"); - RESPONSE_HOOK = new HookTarget("org.apache.thrift.l", "a"); + // バージョンネームに応じてHookTargetを変更 + if (versionName.equals("14.19.1")) { + USER_AGENT_HOOK = new HookTarget("Wc1.c", "h"); + WEBVIEW_CLIENT_HOOK = new HookTarget("OK0.l", "onPageFinished"); + MUTE_MESSAGE_HOOK = new HookTarget("Ob1.b", "H"); + MARK_AS_READ_HOOK = new HookTarget("WM.c$d", "run"); + Archive = new HookTarget("sB.Q", "invokeSuspend"); + NOTIFICATION_READ_HOOK = new HookTarget("qd1.b", "invokeSuspend"); + REQUEST_HOOK = new HookTarget("org.apache.thrift.l", "b"); + RESPONSE_HOOK = new HookTarget("org.apache.thrift.l", "a"); + RemoveVoiceRecord_Hook_a = new HookTarget("q.j", "run"); + RemoveVoiceRecord_Hook_b = new HookTarget("xg1.e$a", "run"); + RemoveVoiceRecord_Hook_c = new HookTarget("TS.f", "run"); + } else if (versionName.equals("14.21.1")) { + USER_AGENT_HOOK = new HookTarget("vf1.c", "j"); + WEBVIEW_CLIENT_HOOK = new HookTarget("pN0.l", "onPageFinished"); + MARK_AS_READ_HOOK = new HookTarget("xN.b$d", "run"); + MUTE_MESSAGE_HOOK = new HookTarget("ne1.b", "H"); + Archive = new HookTarget("tB.N", "invokeSuspend"); + NOTIFICATION_READ_HOOK = new HookTarget("Pf1.c", "invokeSuspend"); + REQUEST_HOOK = new HookTarget("org.apache.thrift.l", "b"); + RESPONSE_HOOK = new HookTarget("org.apache.thrift.l", "a"); RemoveVoiceRecord_Hook_a = new HookTarget("q.j", "run"); RemoveVoiceRecord_Hook_b = new HookTarget("Fi1.j", "run"); RemoveVoiceRecord_Hook_c = new HookTarget("Fi1.j", "run"); - } else if (versionCode == 150000454) { - USER_AGENT_HOOK = new HookTarget("Sg1.c", "j"); - WEBVIEW_CLIENT_HOOK = new HookTarget("FO0.l", "onPageFinished"); - MUTE_MESSAGE_HOOK = new HookTarget("Lf1.b", "I"); - MARK_AS_READ_HOOK = new HookTarget("KO.d$d", "run"); - Archive = new HookTarget("tB.P", "invokeSuspend"); - NOTIFICATION_READ_HOOK = new HookTarget("mh1.b", "invokeSuspend"); - REQUEST_HOOK = new HookTarget("org.apache.thrift.l", "b"); - RESPONSE_HOOK = new HookTarget("org.apache.thrift.l", "a"); + } else if (versionName.equals("15.0.0")) { + USER_AGENT_HOOK = new HookTarget("Sg1.c", "j"); + WEBVIEW_CLIENT_HOOK = new HookTarget("FO0.l", "onPageFinished"); + MUTE_MESSAGE_HOOK = new HookTarget("Lf1.b", "I"); + MARK_AS_READ_HOOK = new HookTarget("KO.d$d", "run"); + Archive = new HookTarget("tB.P", "invokeSuspend"); + NOTIFICATION_READ_HOOK = new HookTarget("mh1.b", "invokeSuspend"); + REQUEST_HOOK = new HookTarget("org.apache.thrift.l", "b"); + RESPONSE_HOOK = new HookTarget("org.apache.thrift.l", "a"); RemoveVoiceRecord_Hook_a = new HookTarget("q.j", "run"); RemoveVoiceRecord_Hook_b = new HookTarget("uk1.e$a", "run"); RemoveVoiceRecord_Hook_c = new HookTarget("C30.f", "run"); - - } + } } public static class HookTarget { diff --git a/app/src/main/java/io/github/hiro/lime/hooks/EmbedOptions.java b/app/src/main/java/io/github/hiro/lime/hooks/EmbedOptions.java index d1c7210..b0920e5 100644 --- a/app/src/main/java/io/github/hiro/lime/hooks/EmbedOptions.java +++ b/app/src/main/java/io/github/hiro/lime/hooks/EmbedOptions.java @@ -73,9 +73,9 @@ public class EmbedOptions implements IHook { ), "getSystemContext"); PackageManager pm = contextV.getPackageManager(); - long versionCode = 0; + String versionName = ""; // 初期化 try { - versionCode = pm.getPackageInfo(loadPackageParam.packageName, 0).getLongVersionCode(); + versionName = pm.getPackageInfo(loadPackageParam.packageName, 0).versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } @@ -483,11 +483,13 @@ public class EmbedOptions implements IHook { // ステータスバーの高さに係数(0.1)を掛けて調整 - String versionCodeStr = String.valueOf(versionCode); - if (versionCodeStr.contains("15") ) { - layoutParams.topMargin = (int) (statusBarHeight); // ステータスバーの高さの10%をマージンに設定 + String versionNameStr = String.valueOf(versionName); + int versionNameInt = Integer.parseInt(versionNameStr); // Convert the string to an integer + + if (versionNameInt >= 15) { + layoutParams.topMargin = (int) (statusBarHeight); // Set margin to status bar height } else { - layoutParams.topMargin = Utils.dpToPx(5, context); + layoutParams.topMargin = Utils.dpToPx(5, context); // Set margin to 5dp } button.setLayoutParams(layoutParams); button.setOnClickListener(new View.OnClickListener() { diff --git a/app/src/main/java/io/github/hiro/lime/hooks/RemoveVoiceRecord.java b/app/src/main/java/io/github/hiro/lime/hooks/RemoveVoiceRecord.java index 3ea628a..af459ed 100644 --- a/app/src/main/java/io/github/hiro/lime/hooks/RemoveVoiceRecord.java +++ b/app/src/main/java/io/github/hiro/lime/hooks/RemoveVoiceRecord.java @@ -7,7 +7,6 @@ import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.XposedHelpers; import de.robv.android.xposed.callbacks.XC_LoadPackage; -import io.github.hiro.lime.BuildConfig; import io.github.hiro.lime.LimeOptions; public class RemoveVoiceRecord implements IHook { private boolean isXg1EaRunCalled = false; @@ -28,19 +27,21 @@ public class RemoveVoiceRecord implements IHook { } param.setResult(null); - Context context = (Context) XposedHelpers.callMethod(XposedHelpers.callStaticMethod( - XposedHelpers.findClass("android.app.ActivityThread", null), - "currentActivityThread" - ), "getSystemContext"); - PackageManager pm = context.getPackageManager(); - long versionCode = pm.getPackageInfo(loadPackageParam.packageName, 0).getLongVersionCode(); - versionCodeStr = String.valueOf(versionCode); } } ); - if (BuildConfig.HOOK_TARGET_VERSION.equals(versionCodeStr)) { + Context context = (Context) XposedHelpers.callMethod(XposedHelpers.callStaticMethod( + XposedHelpers.findClass("android.app.ActivityThread", null), + "currentActivityThread" + ), "getSystemContext"); + PackageManager pm = context.getPackageManager(); + String versionName = ""; // 初期化 + versionName = pm.getPackageInfo(loadPackageParam.packageName, 0).versionName; + versionName = String.valueOf(versionName); + + if (versionName.equals("14.19.1")) { XposedBridge.hookAllMethods( loadPackageParam.classLoader.loadClass(Constants.RemoveVoiceRecord_Hook_b.className), "run",