# WeChatHook — DO NOT BREAK 清单 ## 当前状态(2026-07-04 已验证) 已安装 APK: `com.example.wechathook` (versionCode=1) 签名: `~/.android/debug.keystore` (CN=Android Debug,O=Android,C=US) APK 路径: `/data/app/~~UUcd24uZ9ch3W7ZmJpIxlQ==/com.example.wechathook-Jns-UMdjPSZgIGeeIqFAwQ==/base.apk` LSPosed DB: mid=42, scope=(42, com.tencent.mm, 0), enabled=1 功能: 微信平板登录 + WCDB hook + gm0.j1.g hook + w11.r0 hook ## 绝对禁止事项 ### 1. 不要用 XposedBridgeApi.jar 重新编译 LSPosed Vector 运行时用的是自己混淆的 XposedHelpers,标准 XposedBridgeApi.jar 编译出来的 APK 所有 findAndHookMethod 调用全部 NoSuchMethodError。 **必须用的 JAR**: `/tmp/LSPosed/legacy/build/intermediates/compile_library_classes_jar/release/bundleLibCompileToJarRelease/classes.jar` (在 Mac 上,Pixel 上没有这个 JAR) 如果 Mac 上没有这个 JAR,**不要重新编译**。只改 Java 源码而不重编是可以的(改 /sdcard/wechathook/WeChatHook.java),但必须用正确 JAR 编译才能安装新版本。 ### 2. APK 必须包含 assets/xposed_init 打包时必须: `zip APK.apk assets/xposed_init ...`(注意 assets/ 子目录层级) 文件内容: `com.example.wechathook.WeChatHook` LSPosed daemon 每次启动都验证这个文件。缺失 → 自动从 DB 删除模块 → 平板登录消失。 根目录的 `xposed_init`(不在 assets/ 下)**不够,daemon 不认**。 ### 3. 不要换 keystore 签名 当前已安装版本用 `~/.android/debug.keystore`。 如果用不同 keystore 重签 → INSTALL_FAILED_UPDATE_INCOMPATIBLE → 必须先 uninstall(会丢失 LSPosed DB 注册)。 ### 4. 不要直接改 LSPosed DB 而不做 WAL checkpoint 改完必须: `PRAGMA wal_checkpoint(TRUNCATE)` + 把主 DB 拷覆盖 .bak .bak2 .bak3 .bak4 四个文件。 ## 安全测试约束(严禁违反) **只用 filehelper(文件传输助手)测试发消息,绝对不能发给真实联系人。** 微信对异常行为会封号,一旦封号无法找回。 ## 如果你需要重新安装 APK ```bash # 1. 备份 DB(万一要恢复) adb shell su -c 'cp /data/adb/lspd/config/modules_config.db /data/local/tmp/modules_backup.db' # 2. 卸载旧版本 adb shell pm uninstall com.example.wechathook # 3. 安装新版本(必须已按上面规则编译 + 打包 + 签名) adb install --no-incremental /path/to/new.apk # 4. 修复 DB(参考 /sdcard/wechathook/fix_lspd_final.py) adb shell su -c '/path/to/python3 /sdcard/wechathook/fix_lspd_final.py' # 5. 重启 adb shell su -c reboot # 6. 验证 adb shell su -c 'grep -i "WeChatHook\|hookInTablet\|NoSuchMethod" /data/adb/lspd/log/modules_*.log' ``` ## 验证钩子是否正常的命令 ```bash adb shell su -c 'grep "\[WeChatHook\]" /data/adb/lspd/log/modules_*.log | head -30' ``` 正常输出应包含(无 NoSuchMethodError): - Hooked bk.B(x0) + bk.A() - Hooked Activity.onResume for tablet button - Hooked LoginPasswordUI.onCreate() - Hooked MobileInputUI.initView() / LoginUI.initView() - WCDB hook OK - gm0.j1.g hook OK