远程软件
采集端把远端光标位置填进每帧帧头,供主控端画标记(4b 解决看不见远端鼠标)。 - fold_cursor 纯函数承载全部折叠判定:隐藏(CURSOR_SHOWING 未置位)/ 越出采集画面 [0,w)x[0,h)(副屏负坐标区,Q5=A)/超 i16 范围(防截断成 看似合法的错坐标)→ None;坐标语义单一来源在被控端 - sample_cursor 只负责 Win32 读数(cbSize 契约注释)与失败/越界留痕 (会话期各只打一条日志,可见后果但不逐帧刷屏) - 采样点在 emit! 宏(唯一发送入口):新帧/静止 500ms 保活重发/强制 IDR 三条路径天然全覆盖,帧头 cursor 与 ts_ms 同刻 - 前提:agent 的 per-monitor DPI 感知(3b/D2)保证 ptScreenPos 是物理像素 - agent crate 首批单测 4 例(界内含原点/隐藏/五类越界/i16 上界), mutation 反向验证(>= 改 > 后越界用例确实红) - dump_stream 帧表加光标列,Windows 端实测(本机同回环): 界内 Some(1000,600) 精确、副屏 -960 折叠 None、None->Some(300,250) 恢复 全部 PASS;期间发现有人操控真鼠标,探针已改静置门控+读回自校验设计 |
||
|---|---|---|
| .cargo | ||
| agent | ||
| agent-core | ||
| android-ffi | ||
| apps/android-viewer | ||
| common | ||
| linux-agent | ||
| scripts | ||
| tools | ||
| vendor/nvenc | ||
| viewer | ||
| viewer-core | ||
| .gitattributes | ||
| .gitignore | ||
| B侧设计文档.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Git协作规范.md | ||
| README.md | ||
| 借鉴映射与落地规范.md | ||
| 多平台架构设计.md | ||
| 打洞与信令设计.md | ||
| 打洞验证记录.md | ||
| 构建运行手册.md | ||
mvp-remote
自研远程桌面控制软件(办公场景),技术路线参考网易 UU 远程逆向分析结论。
架构
| Crate | 角色 | 说明 |
|---|---|---|
common |
协议库 | 控制消息 / 视频帧线格式,三端共享契约 |
agent |
被控端 | DXGI 屏幕采集 + openh264(H.264) 编码 + QUIC 服务 + SendInput 键鼠注入 |
viewer |
主控端 | QUIC 客户端 + openh264 解码 + minifb 渲染 + 键鼠采集 + 延迟 HUD |
构建
cargo build --release
产物:target/release/agent.exe(被控端)、viewer.exe(主控端),需附带 3 个 mingw 运行库 DLL(libstdc++-6 / libgcc_s_seh-1 / libwinpthread-1)。
运行
# 被控机
agent.exe --port 47800 --code 123456
# 主控机
viewer.exe --addr <被控机IP> --port 47800 --code 123456
详见《构建运行手册.md》、《Git协作规范.md》与《打洞与信令设计.md》。