-
Hook.java v3.1 (315 行): - body 捕获:okio.Buffer 读取 POST/PUT body(截断 2000 字符) - Proxy poller(后台线程,1s 轮询 /xhs_proxy/pending): executeOkHttp() 在 XHS 进程内用 OkHttpClient 执行代理请求, 自动经过 XHS 拦截器签名,结果 POST /xhs_proxy/result - 手写 JSON 解析器(无外部依赖) - 保留 /xhs_params 转发(每条 edith 请求实时上报) event_server.py(Hermes 编写): - proxy_requests 表(pending→ok/error 状态机) - POST /xhs_proxy — Hermes 下发代理请求 - GET /xhs_proxy/pending — Hook 轮询取下一个任务 - POST /xhs_proxy/result — Hook 上报执行结果 - GET /xhs_proxy/result/{id} — Hermes 轮询取结果 - DELETE /xhs_proxy/{id} — 清理完成的任务 架构:Hermes → event_server → Hook(XHS进程内OkHttp签名) → event_server → Hermes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> -
Hook.java v3:在现有 logcat 日志基础上,后台线程 POST 每条 edith.xiaohongshu.com 请求(method/url/全量 headers)到 Hermes event_server(127.0.0.1:8765/xhs_params)。 Hermes server 未运行时静默失败,logcat 捕获不受影响。 rebuild_xhshook.sh:d8 步骤改用 find 通配所有 .class 文件, 避免新增匿名类时漏掉(之前写死 Hook$1.class)。 update_xhshook_db.sh:两阶段更新策略 - Phase 1:Python in-place UPDATE + commit(不做 checkpoint, lspd 持有写锁时 checkpoint 会 OperationalError) - Phase 2:pull DB+WAL → Mac 本地 checkpoint → push 干净主文件 → 删设备端 WAL/SHM,确保重启后 DB 正确 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
-
修复 LSPosed(JingMatrix/Vector fork)在 Android 16 上 zygote64 崩溃问题, 并完成 xhshook Xposed 模块注入 XHS(com.xingin.xhs),实现 edith.xiaohongshu.com xy-common-params header 的实时拦截。 A16 崩溃根因:NDK 26 compile-time sizeof(JNINativeInterface) 不包含 Android 16 ART 新增的函数指针,memcpy 截断导致垃圾指针 → zygote 崩溃。 修复:从 env->functions->reserved0 读运行期实际大小,heap-alloc 后 memcpy。 其他修复: - service.sh 去掉 Android toybox 不支持的 --propagation slave flag - daemon 入口类名 org.lsposed.lspd.Main → org.matrix.vector.daemon.VectorDaemon xhshook 踩坑记录: - APK 必须含 assets/xposed_init(而非根目录),VectorConfigCache 只认这个路径 - adb install 必须加 --no-incremental,Incremental Install marker 破坏 ZipFile 解析 - Xposed API 类不能打进 module DEX,LSPosed 会检查 XposedBridge classloader 一致性 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>