• 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>
    yibo authored
     
    Browse Dir »
  • 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>
    yibo authored
     
    Browse Dir »

  • 修复 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>
    yibo authored
     
    Browse Dir »