From 6a3070711d22f4f2ce70f068ac192d4dee490788 Mon Sep 17 00:00:00 2001 From: Mingyueyixi <1379598589@qq.com> Date: Tue, 25 Jul 2023 23:42:42 +0800 Subject: [PATCH 1/5] [doc] update --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6bdc5c5..2b77317 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ v1.13版本开始,默认隐藏App在桌面的图标。隐藏以后,打开模 8.0.35 (2340) 2023-04-20 (PS. 不是作者写错,而是特么下载到了一个和8.0.34版本号一样的8.0.35) 8.0.35 (2360) 2023-04-20 8.0.37 (2380) 2023-05-25 +8.0.38 (2400) 2023-06-21 **PS.** - 仅支持上述版本,所有其他版本号以及32位版本未经测试,预计百分之九十九不可用 @@ -114,11 +115,7 @@ SHA1: 410E675B0014F6DF768825F647F69D98A110D50D SHA1: F62FAD64F70F1181EC62DD3BD796A047028078FA -推荐8.0.32(2300)、8.0.33(2320),8.0.34(2340),因为: - -- 自2.11版本以来,正在逐步放弃支持8.0.22版本微信 -- 8.0.35 刚适配,怕不是有点毛病,有一个版本,它的版本号和8.0.34一样 -- 8.0.37 刚刚适配,不建议。 +推荐8.0.37(2340),8.0.38(2360) **问题4:是否支持Google Play版本?** 答:不支持。 From c11f519dd47efba52c83661f959d6646619c5e16 Mon Sep 17 00:00:00 2001 From: Mingyueyixi <1379598589@qq.com> Date: Sat, 29 Jul 2023 01:57:49 +0800 Subject: [PATCH 2/5] [scm] upgrade version to v1.19-bug --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ad5de16..fd55e49 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,8 +67,8 @@ android { applicationId "com.lu.wxmask" minSdk 24 targetSdk 34 - versionCode 19 - versionName "1.18.端午" + versionCode 20 + versionName "1.19-bug" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" From 789be722fb9e8531d3432e126b5ddfc5acc0caea Mon Sep 17 00:00:00 2001 From: Mingyueyixi <1379598589@qq.com> Date: Sat, 29 Jul 2023 01:58:16 +0800 Subject: [PATCH 3/5] =?UTF-8?q?[mod]=20=E5=BE=AE=E4=BF=A18.0.40=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=88=9D=E6=AD=A5=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/lu/wxmask/Constrant.kt | 1 + .../java/com/lu/wxmask/plugin/WXConfigPlugin.java | 2 +- .../part/EmptySingChatHistoryGalleryPluginPart.kt | 5 +++-- .../plugin/part/EnterChattingUIPluginPart.kt | 1 + .../wxmask/plugin/part/HideMainUIListPluginPart.kt | 7 +++++-- .../plugin/part/HideSearchListUIPluginPart.kt | 14 ++++++++++---- .../java/com/lu/wxmask/util/dev/DebugUtil.java | 4 ++-- 7 files changed, 23 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/lu/wxmask/Constrant.kt b/app/src/main/java/com/lu/wxmask/Constrant.kt index 76c750d..759036f 100644 --- a/app/src/main/java/com/lu/wxmask/Constrant.kt +++ b/app/src/main/java/com/lu/wxmask/Constrant.kt @@ -38,6 +38,7 @@ class Constrant { const val WX_CODE_8_0_35 = 2360 const val WX_CODE_8_0_37 = 2380 const val WX_CODE_8_0_38 = 2400 + const val WX_CODE_8_0_40 = 2420 } } \ No newline at end of file diff --git a/app/src/main/java/com/lu/wxmask/plugin/WXConfigPlugin.java b/app/src/main/java/com/lu/wxmask/plugin/WXConfigPlugin.java index f22aae8..c155e32 100644 --- a/app/src/main/java/com/lu/wxmask/plugin/WXConfigPlugin.java +++ b/app/src/main/java/com/lu/wxmask/plugin/WXConfigPlugin.java @@ -234,7 +234,7 @@ private Object findChatUserObject(Object fragmentObj) { Object v = XposedHelpers2.getObjectField(f, "h"); return v; } - else if (AppVersionUtil.getVersionCode() <= Constrant.WX_CODE_8_0_37) { + else if (AppVersionUtil.getVersionCode() <= Constrant.WX_CODE_8_0_40) { Object v = XposedHelpers2.getObjectField(f, "i"); return v; } diff --git a/app/src/main/java/com/lu/wxmask/plugin/part/EmptySingChatHistoryGalleryPluginPart.kt b/app/src/main/java/com/lu/wxmask/plugin/part/EmptySingChatHistoryGalleryPluginPart.kt index 881398d..a9fd258 100644 --- a/app/src/main/java/com/lu/wxmask/plugin/part/EmptySingChatHistoryGalleryPluginPart.kt +++ b/app/src/main/java/com/lu/wxmask/plugin/part/EmptySingChatHistoryGalleryPluginPart.kt @@ -34,7 +34,7 @@ class EmptySingChatHistoryGalleryPluginPart : IPlugin { private fun setEmptyDetailHistoryUIForMedia(context: Context, lpparam: XC_LoadPackage.LoadPackageParam?) { var mediaMethodName = when (AppVersionUtil.getVersionCode()) { in Constrant.WX_CODE_8_0_32..Constrant.WX_CODE_8_0_35 -> "k" - in Constrant.WX_CODE_8_0_35..Constrant.WX_CODE_8_0_38 -> "l" + in Constrant.WX_CODE_8_0_35..Constrant.WX_CODE_8_0_40 -> "l" else -> "l" } val MediaHistoryListUI = "com.tencent.mm.ui.chatting.gallery.MediaHistoryListUI" @@ -82,7 +82,7 @@ class EmptySingChatHistoryGalleryPluginPart : IPlugin { val MediaHistoryGalleryUI = "com.tencent.mm.ui.chatting.gallery.MediaHistoryGalleryUI" val methodName = when (AppVersionUtil.getVersionCode()) { in Constrant.WX_CODE_8_0_22..Constrant.WX_CODE_8_0_35 -> "k" - in Constrant.WX_CODE_8_0_35 .. Constrant.WX_CODE_8_0_38 -> "l" + in Constrant.WX_CODE_8_0_35 .. Constrant.WX_CODE_8_0_40 -> "l" else -> null } var galleryMethod: Method? = null @@ -144,6 +144,7 @@ class EmptySingChatHistoryGalleryPluginPart : IPlugin { Constrant.WX_CODE_8_0_35 -> "P" Constrant.WX_CODE_8_0_37 -> "Q" Constrant.WX_CODE_8_0_38 -> "R" + Constrant.WX_CODE_8_0_40 -> "Q" else -> null } LogUtil.d("setEmptyActionBarTabPageUI method is :", commonHookMethodName) diff --git a/app/src/main/java/com/lu/wxmask/plugin/part/EnterChattingUIPluginPart.kt b/app/src/main/java/com/lu/wxmask/plugin/part/EnterChattingUIPluginPart.kt index faa0efb..21e8b12 100644 --- a/app/src/main/java/com/lu/wxmask/plugin/part/EnterChattingUIPluginPart.kt +++ b/app/src/main/java/com/lu/wxmask/plugin/part/EnterChattingUIPluginPart.kt @@ -70,6 +70,7 @@ class EnterChattingUIPluginPart() : IPlugin { Constrant.WX_CODE_8_0_35 -> "J" Constrant.WX_CODE_8_0_37 -> "K" Constrant.WX_CODE_8_0_38 -> "M" + Constrant.WX_CODE_8_0_40 -> "K" else -> null } var dispatchMethod: Method? = null diff --git a/app/src/main/java/com/lu/wxmask/plugin/part/HideMainUIListPluginPart.kt b/app/src/main/java/com/lu/wxmask/plugin/part/HideMainUIListPluginPart.kt index 3f8ce0e..d9a6498 100644 --- a/app/src/main/java/com/lu/wxmask/plugin/part/HideMainUIListPluginPart.kt +++ b/app/src/main/java/com/lu/wxmask/plugin/part/HideMainUIListPluginPart.kt @@ -49,8 +49,9 @@ class HideMainUIListPluginPart : IPlugin { "com.tencent.mm.ui.conversation.p" } } + Constrant.WX_CODE_8_0_35 -> "com.tencent.mm.ui.conversation.r" - in Constrant.WX_CODE_8_0_35 .. Constrant.WX_CODE_8_0_38 -> "com.tencent.mm.ui.conversation.x" + in Constrant.WX_CODE_8_0_35..Constrant.WX_CODE_8_0_40 -> "com.tencent.mm.ui.conversation.x" else -> null } var adapterClazz: Class<*>? = null @@ -207,10 +208,12 @@ class HideMainUIListPluginPart : IPlugin { } //8.0.32-8.0.34 com.tencent.mm.ui.y //8.0.35-8.0.37  com.tencent.mm.ui.z + //搞实际Adapter的父类,是个抽象类 val adapterClazzName = when (AppVersionUtil.getVersionCode()) { Constrant.WX_CODE_8_0_22 -> "com.tencent.mm.ui.g" in Constrant.WX_CODE_8_0_32..Constrant.WX_CODE_8_0_34 -> "com.tencent.mm.ui.y" in Constrant.WX_CODE_8_0_35..Constrant.WX_CODE_8_0_38 -> "com.tencent.mm.ui.z" +// in Constrant.WX_CODE_8_0_38..Constrant.WX_CODE_8_0_40 -> "com.tencent.mm.ui.b0" else -> null } var getItemMethod = if (adapterClazzName != null && getItemMethodName != null) { @@ -239,7 +242,7 @@ class HideMainUIListPluginPart : IPlugin { if (isHookGetItemMethod) { return } - LogUtil.w(AppVersionUtil.getSmartVersionName(), "guess setAdapter: ", adapter) + LogUtil.w(AppVersionUtil.getSmartVersionName(), "guess setAdapter: ", adapter, adapter.javaClass.superclass) getItemMethod = XposedHelpers2.findMethodExactIfExists(adapter::class.java.superclass, "k", Integer.TYPE) if (getItemMethod == null) { getItemMethod = XposedHelpers2.findMethodExactIfExists(adapter::class.java.superclass, "getItem", Integer.TYPE) diff --git a/app/src/main/java/com/lu/wxmask/plugin/part/HideSearchListUIPluginPart.kt b/app/src/main/java/com/lu/wxmask/plugin/part/HideSearchListUIPluginPart.kt index d8a1c86..2edcf1e 100644 --- a/app/src/main/java/com/lu/wxmask/plugin/part/HideSearchListUIPluginPart.kt +++ b/app/src/main/java/com/lu/wxmask/plugin/part/HideSearchListUIPluginPart.kt @@ -72,7 +72,7 @@ class HideSearchListUIPluginPart : IPlugin { private fun handleDetailSearch(context: Context, lpparam: XC_LoadPackage.LoadPackageParam) { var hookClazzName = when (AppVersionUtil.getVersionCode()) { - Constrant.WX_CODE_8_0_38 -> "com.tencent.mm.plugin.fts.ui.x" + in Constrant.WX_CODE_8_0_38.. Constrant.WX_CODE_8_0_40 -> "com.tencent.mm.plugin.fts.ui.x" else -> "com.tencent.mm.plugin.fts.ui.y" } //全局搜索详情置空 @@ -103,7 +103,7 @@ class HideSearchListUIPluginPart : IPlugin { // val wxVersionCode = AppVersionUtil.getVersionCode() // 理论上 hook com.tencent.mm.plugin.fts.ui.z#getItem 也是一样的,但是被覆盖重命名了 var hookClazzName = when (AppVersionUtil.getVersionCode()) { - Constrant.WX_CODE_8_0_38 -> "com.tencent.mm.plugin.fts.ui.y" + in Constrant.WX_CODE_8_0_38 .. Constrant.WX_CODE_8_0_40 -> "com.tencent.mm.plugin.fts.ui.y" else -> "com.tencent.mm.plugin.fts.ui.z" } //全局搜索首页 @@ -150,13 +150,19 @@ class HideSearchListUIPluginPart : IPlugin { // "wt1.u" -> XposedHelpers2.getObjectField(itemData, "q") // else -> null // } ?: return false - XposedHelpers2.getObjectField(itemData, "q") + + val fieldName = when (AppVersionUtil.getVersionCode()) { + Constrant.WX_CODE_8_0_40 -> "q1" + else -> "q" + } + XposedHelpers2.getObjectField(itemData, fieldName) + } catch (e: Throwable) { null } if (chatUser == null) { when (AppVersionUtil.getVersionCode()) { - in Constrant.WX_CODE_8_0_33..Constrant.WX_CODE_8_0_38 -> { + in Constrant.WX_CODE_8_0_33..Constrant.WX_CODE_8_0_40 -> { val fieldValue: Any = XposedHelpers2.getObjectField(itemData, "p") ?: return false chatUser = XposedHelpers2.getObjectField(fieldValue, "e") } diff --git a/app/src/main/java/com/lu/wxmask/util/dev/DebugUtil.java b/app/src/main/java/com/lu/wxmask/util/dev/DebugUtil.java index 89fb37e..77fa254 100644 --- a/app/src/main/java/com/lu/wxmask/util/dev/DebugUtil.java +++ b/app/src/main/java/com/lu/wxmask/util/dev/DebugUtil.java @@ -68,7 +68,7 @@ public static void printAllFields(Object obj) { } } try { - LogUtil.d(GsonUtil.toJson(data)); + LogUtil.d("item data class: ", GsonUtil.toJson(data)); } catch (Exception ex) { LogUtil.e(ex); } @@ -82,7 +82,7 @@ private static Map collectFieldValueMap(Class clazz, Object o for (Field field : fields) { try { field.setAccessible(true); - String k = field.getName(); + String k = field.getDeclaringClass() + "_" + field.getName(); //String type = field.getType().getSimpleName(); Object v = field.get(obj); map.put(k, v); From 1fc51cf6f431ccb509beff68ec8862b1ffaaa199 Mon Sep 17 00:00:00 2001 From: Mingyueyixi <1379598589@qq.com> Date: Thu, 3 Aug 2023 23:25:44 +0800 Subject: [PATCH 4/5] =?UTF-8?q?[mod]=20=E7=A7=BB=E9=99=A4=E4=B8=8D?= =?UTF-8?q?=E6=94=AF=E6=8C=818.0.40=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/lu/wxmask/util/AppVersionUtil.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/lu/wxmask/util/AppVersionUtil.kt b/app/src/main/java/com/lu/wxmask/util/AppVersionUtil.kt index 5901c2e..042acdd 100644 --- a/app/src/main/java/com/lu/wxmask/util/AppVersionUtil.kt +++ b/app/src/main/java/com/lu/wxmask/util/AppVersionUtil.kt @@ -53,7 +53,8 @@ class AppVersionUtil { Constrant.WX_CODE_8_0_34, Constrant.WX_CODE_8_0_35, Constrant.WX_CODE_8_0_37, - Constrant.WX_CODE_8_0_38 -> true + Constrant.WX_CODE_8_0_38, + Constrant.WX_CODE_8_0_40 -> true else -> false } From 55c5ad7fbe60b446b365709dfeb9953d72ed1d60 Mon Sep 17 00:00:00 2001 From: Mingyueyixi <1379598589@qq.com> Date: Sat, 2 Sep 2023 14:11:36 +0800 Subject: [PATCH 5/5] =?UTF-8?q?[doc]=20=E6=96=87=E6=A1=A3=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2b77317..277ff4e 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,7 @@ v1.13版本开始,默认隐藏App在桌面的图标。隐藏以后,打开模 8.0.35 (2360) 2023-04-20 8.0.37 (2380) 2023-05-25 8.0.38 (2400) 2023-06-21 +8.0.40 (2420) 2023-07-20 **PS.** - 仅支持上述版本,所有其他版本号以及32位版本未经测试,预计百分之九十九不可用 @@ -114,8 +115,12 @@ SHA1: 410E675B0014F6DF768825F647F69D98A110D50D 8.0.38(2400):[https://dldir1.qq.com/weixin/android/weixin8038android2400_arm64.apk](https://dldir1.qq.com/weixin/android/weixin8038android2400_arm64.apk) SHA1: F62FAD64F70F1181EC62DD3BD796A047028078FA +8.0.40(2420):[https://dldir1.qq.com/weixin/android/weixin8040android2420_arm64.apk](https://dldir1.qq.com/weixin/android/weixin8040android2420_arm64.apk) +SHA1: BCCA3CCACE5F40184A42FEFB06190C7279024985 -推荐8.0.37(2340),8.0.38(2360) + + +推荐适配的最后两个版本,因为其他版本,作者自己不再使用 **问题4:是否支持Google Play版本?** 答:不支持。