├── .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 | socialify 4 | 5 |

6 | 7 |

8 | 9 | downloads 10 | 11 | 12 | stars 13 | 14 | 15 | forks 16 | 17 | 18 | issues 19 | 20 |

21 | 22 |

23 | 24 | downloads 25 | 26 | 27 | stars 28 | 29 | 30 | forks 31 | 32 | 33 | issues 34 | 35 |

36 | 37 |

38 | 39 | release 40 | 41 | 42 | Telegram 43 | 44 | 45 | Telegram 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 | starchart 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