├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.yml
│ ├── config.yml
│ └── feature_request.yml
├── AUTHOR.md
├── README.md
└── app
└── src
└── main
└── kotlin
└── wx
└── demo
└── hook
├── chat
├── AntiRevoke1Hook.kt
├── AutoSelectOriginalPhotoHook.kt
├── AutoViewOriginalPhotoHook.kt
└── MsgFormatHook.kt
├── experiment
└── PadModeHook.kt
├── helper
├── EmojiGameHook.kt
├── LocationHook.kt
└── VoiceLengthHook.kt
└── misc
├── AutoLoginWinHook.kt
├── MockScanHook.kt
├── MultiWebViewHook.kt
├── NewBizListHook.kt
└── ShareCheckHook.kt
/.github/ISSUE_TEMPLATE/bug_report.yml:
--------------------------------------------------------------------------------
1 | name: 问题反馈
2 | description: 问题反馈
3 | labels: [ "Bug" ]
4 | title: "[问题反馈] "
5 | body:
6 | - type: textarea
7 | attributes:
8 | label: 复现步骤
9 | placeholder: |
10 | 1.
11 | 2.
12 | 3.
13 | validations:
14 | required: true
15 |
16 | - type: textarea
17 | attributes:
18 | label: 预期行为
19 | placeholder: "正常应该发生什么"
20 | validations:
21 | required: true
22 |
23 | - type: textarea
24 | attributes:
25 | label: 实际行为
26 | placeholder: "实际上发生了什么"
27 | validations:
28 | required: true
29 |
30 | - type: input
31 | attributes:
32 | label: 模块版本(模块关于页查看)
33 | placeholder: "如: 1.2.2.r623.655c448"
34 | validations:
35 | required: true
36 |
37 | - type: input
38 | attributes:
39 | label: 微信版本(模块关于页查看)
40 | placeholder: "如: 8.0.45(2521)_0x28002D34"
41 | validations:
42 | required: true
43 |
44 | - type: input
45 | attributes:
46 | label: 框架版本
47 | placeholder: "如: LSPosed IT v1.9.2(7376)"
48 | validations:
49 | required: true
50 |
51 | - type: input
52 | attributes:
53 | label: 系统版本
54 | placeholder: "如: 12"
55 | validations:
56 | required: true
57 |
58 | - type: checkboxes
59 | attributes:
60 | label: 其他要求
61 | options:
62 | - label: 我在 [Issue](https://github.com/HdShare/WAuxiliary_Public/issues) 没有发现相同问题
63 | required: true
64 | - label: 我已知晓不按照模板提供的指示进行填写, 则我的 Issue 可能会被无条件删除
65 | required: true
66 |
67 | - type: textarea
68 | attributes:
69 | label: 补充说明(可选)
70 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.yml:
--------------------------------------------------------------------------------
1 | name: 功能请求
2 | description: 功能请求
3 | labels: [ "Feature" ]
4 | title: "[功能请求] "
5 | body:
6 | - type: input
7 | attributes:
8 | label: 模块版本(模块关于页查看)
9 | placeholder: "如: 1.2.2.r623.655c448"
10 | validations:
11 | required: true
12 |
13 | - type: textarea
14 | attributes:
15 | label: 功能描述(更具体的描述可加快开发)
16 | placeholder: "如: 可在当前设备登录另一台设备的微信号"
17 | validations:
18 | required: true
19 |
20 | - type: textarea
21 | attributes:
22 | label: 你为什么需要此功能
23 | placeholder: "如: 我为了方便在不同设备上使用同一微信号"
24 | validations:
25 | required: true
26 |
--------------------------------------------------------------------------------
/AUTHOR.md:
--------------------------------------------------------------------------------
1 |
2 | https://github.com/lovejiuwu
3 |
4 | https://github.com/suzhelan
5 |
6 | https://github.com/Evening-01
7 |
8 | https://github.com/Keeperorowner
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 | ---
50 |
51 | ## 说明:
52 |
53 | WeChat Auxiliary
54 | > 在 GitHub 点击右上角 ⭐ Star 以支持我在空余时间继续开发
55 |
56 | - 一切开发旨在学习,请勿用于非法用途
57 | - 如果某功能被大量运用于非法用途,那么该功能将会被移除
58 | - 鉴于项目的特殊性,开发团队可能随时**停止更新**或**删除项目**
59 |
60 | ---
61 |
62 | ## 问题:
63 |
64 | | Question | Answer |
65 | |----------|------------------------------|
66 | | 适配版本 | 理论适配 8.0.33~8.0.60 国内与PLAY版本 |
67 |
68 | ---
69 |
70 | ## 致谢:
71 |
72 | | Name | Link |
73 | |-------------|-----------------------------------------------------------|
74 | | YukiHookAPI | [YukiHookAPI](https://github.com/HighCapable/YukiHookAPI) |
75 | | DexKit | [DexKit](https://github.com/LuckyPray/DexKit) |
76 | | QAuxiliary | [QAuxiliary](https://github.com/cinit/QAuxiliary) |
77 | | TimTool | [TimTool](https://github.com/suzhelan/TimTool) |
78 | | TSBattery | [TSBattery](https://github.com/fankes/TSBattery) |
79 | | Icon | [MaiTungTM](https://github.com/Lagrio) |
80 |
81 | ---
82 |
83 | ## 星图:
84 |
85 |
86 |
87 |
88 |
89 |
90 |
--------------------------------------------------------------------------------
/app/src/main/kotlin/wx/demo/hook/chat/AntiRevoke1Hook.kt:
--------------------------------------------------------------------------------
1 | package wx.demo.hook.chat
2 |
3 | import me.hd.wauxv.data.config.DescriptorData
4 | import me.hd.wauxv.hook.anno.HookAnno
5 | import me.hd.wauxv.hook.anno.ViewAnno
6 | import me.hd.wauxv.hook.base.SwitchHook
7 | import me.hd.wauxv.hook.core.dex.IDexFind
8 | import me.hd.wauxv.hook.factory.findDexClassMethod
9 | import me.hd.wauxv.hook.factory.toDexMethod
10 | import org.lsposed.lsparanoid.Obfuscate
11 | import org.luckypray.dexkit.DexKitBridge
12 |
13 | @Obfuscate
14 | @HookAnno
15 | @ViewAnno
16 | object AntiRevoke1Hook : SwitchHook("AntiRevoke1Hook"), IDexFind {
17 | private object MethodDoRevokeMsg : DescriptorData("AntiRevoke1Hook.MethodDoRevokeMsg")
18 |
19 | override val location = "聊天"
20 | override val funcName = "阻止消息撤回1"
21 | override val funcDesc = "无撤回提示, 流畅款, 3选1"
22 |
23 | override fun initOnce() {
24 | MethodDoRevokeMsg.toDexMethod {
25 | hook {
26 | beforeIfEnabled {
27 | resultNull()
28 | }
29 | }
30 | }
31 | }
32 |
33 | override fun dexFind(dexKit: DexKitBridge) {
34 | MethodDoRevokeMsg.findDexClassMethod(dexKit) {
35 | onMethod {
36 | matcher {
37 | usingEqStrings("doRevokeMsg xmlSrvMsgId=%d talker=%s isGet=%s")
38 | }
39 | }
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/src/main/kotlin/wx/demo/hook/chat/AutoSelectOriginalPhotoHook.kt:
--------------------------------------------------------------------------------
1 | package wx.demo.hook.chat
2 |
3 | import android.app.Activity
4 | import com.highcapable.yukihookapi.hook.factory.method
5 | import com.highcapable.yukihookapi.hook.type.android.BundleClass
6 | import me.hd.wauxv.hook.anno.HookAnno
7 | import me.hd.wauxv.hook.anno.ViewAnno
8 | import me.hd.wauxv.hook.base.SwitchHook
9 | import me.hd.wauxv.hook.factory.toAppClass
10 | import org.lsposed.lsparanoid.Obfuscate
11 |
12 | @Obfuscate
13 | @HookAnno
14 | @ViewAnno
15 | object AutoSelectOriginalPhotoHook : SwitchHook("AutoSelectOriginalPhotoHook") {
16 | override val location = "聊天"
17 | override val funcName = "自动勾选原图"
18 | override val funcDesc = "在发送图片和视频时自动勾选原图选项"
19 |
20 | override fun initOnce() {
21 | listOf("com.tencent.mm.plugin.gallery.ui.AlbumPreviewUI", "com.tencent.mm.plugin.gallery.ui.ImagePreviewUI").forEach { clazzName ->
22 | clazzName.toAppClass().apply {
23 | method {
24 | name = "onCreate"
25 | param(BundleClass)
26 | }.hook {
27 | beforeIfEnabled {
28 | val activity = instance()
29 | activity.intent.putExtra("send_raw_img", true)
30 | }
31 | }
32 | }
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/main/kotlin/wx/demo/hook/chat/AutoViewOriginalPhotoHook.kt:
--------------------------------------------------------------------------------
1 | package wx.demo.hook.chat
2 |
3 | import android.widget.Button
4 | import androidx.core.view.isVisible
5 | import com.highcapable.yukihookapi.hook.factory.field
6 | import com.highcapable.yukihookapi.hook.factory.method
7 | import com.highcapable.yukihookapi.hook.type.android.ButtonClass
8 | import me.hd.wauxv.hook.anno.HookAnno
9 | import me.hd.wauxv.hook.anno.ViewAnno
10 | import me.hd.wauxv.hook.base.SwitchHook
11 | import me.hd.wauxv.hook.factory.toAppClass
12 | import org.lsposed.lsparanoid.Obfuscate
13 |
14 | @Obfuscate
15 | @HookAnno
16 | @ViewAnno
17 | object AutoViewOriginalPhotoHook : SwitchHook("AutoViewOriginalPhotoHook") {
18 | override val location = "聊天"
19 | override val funcName = "自动查看原图"
20 | override val funcDesc = "在打开图片和视频时自动点击查看原图"
21 |
22 | override fun initOnce() {
23 | "com.tencent.mm.ui.chatting.gallery.ImageGalleryUI".toAppClass().method {
24 | name = "initView"
25 | }.hook {
26 | afterIfEnabled {
27 | instanceClass!!.field {
28 | type = ButtonClass
29 | }.all(instance).forEach {
30 | it.cast