# SimpleRemoter **[简体中文](./ReadMe.md) | [繁體中文](./ReadMe_TW.md) | [English](./ReadMe_EN.md)**

GitHub Stars GitHub Forks Gitea Release Client Platforms Server Platforms Language License

Download Latest

--- > [!WARNING] > **重要法律声明** > > 本软件**仅供教育目的及授权使用场景**:组织内远程 IT 管理、经授权的渗透测试与安全研究、个人设备管理与技术学习。 > > **未经授权访问计算机系统属违法行为。** 使用者须对遵守所有适用法律承担全部责任。开发者对任何滥用行为概不负责。 --- ## 目录 - [项目简介](#项目简介) - [本版本亮点:全平台闭环](#本版本亮点全平台闭环) - [合规与反滥用](#合规与反滥用) - [功能特性](#功能特性) - [全平台支持](#全平台支持) - [系统架构](#系统架构) - [快速开始](#快速开始) - [用户文档](#用户文档) - [更新日志](#更新日志) - [相关项目](#相关项目) - [联系方式](#联系方式) --- ## 项目简介 **SimpleRemoter** 是一个端到端跨平台的远程控制解决方案。 项目核心基于经典 **Gh0st 架构**,最早始于 2019 年 1 月。历经 7 年持续迭代——从 IOCP 通信内核重构、x264 视频级编码、V2 文件传输协议、多层授权体系,到 Linux 与 macOS 客户端的引入——本版本最终完成**客户端 + 服务端的全平台闭环**:三大桌面操作系统(Windows / Linux / macOS)在任一侧都可作为受控端或主控端。 **原始来源:** [zibility/Remote](https://github.com/zibility/Remote) | **起始日期:** 2019.1.1 [![Star History Chart](https://api.star-history.com/svg?repos=yuanyuanxiang/SimpleRemoter&type=Date)](https://star-history.com/#yuanyuanxiang/SimpleRemoter&Date) --- ## 本版本亮点:全平台闭环 本项目长期以 **C++ MFC 主控**(`YAMA.exe`)为核心交付形态——经典 Gh0st 架构、IOCP 高性能内核、完整的远程桌面 / 文件 / 进程 / 媒体功能栈、多层授权体系、品牌定制——**至今仍是主要使用的主控**。MFC 主控内置了基于 WebSocket 的 Web 远程桌面服务,从 v1.3.1 起就已经支持**任意平台的浏览器**远控被管设备(手机/平板/Linux/macOS 桌面均可)。 本版本(v1.3.4)补上了最后一块拼图——**Go 主控**:一个**功能简单、聚焦于"远程桌面 + 远程终端 + 多用户分级"** 的轻量服务端,跨 Windows / Linux / macOS 编译运行。它的定位**不是替代 MFC**,而是为那些**不便于跑 Windows VPS** 的用户提供一个原生的 Linux/macOS 主控落点——例如纯 Linux 服务器、ARM Mac 长驻、嵌入式主控箱等场景。 ### 两种主控形态如何选择 | 形态 | GUI | 功能覆盖 | 平台 | 定位 | |---|---|---|---|---| | **C++ MFC 主控** (`YAMA.exe`) | 原生 Windows GUI + 内置 Web 服务 | ✅ **全部功能** | Windows | **主推方案**。日常运维、文件管理、媒体采集、多层授权、品牌定制等都用它 | | **Go 主控**(新) | Web UI(任何浏览器) | 远程桌面 + 远程终端 + 多用户 | Windows / Linux / macOS | **补充方案**。需要"零 Windows 依赖"的纯 Linux/macOS 主控部署 | > [!TIP] > 两种主控**用的是同一套客户端**——可以混搭,例如一台 Windows MFC 主控 + 一台 Linux Go 主控并行管理同一批设备群。 ### Go 主控的核心能力(v1.3.4 新增) - **远程桌面**:H.264 流通过 WebSocket 直发浏览器,WebCodecs 硬解,1080P @ 20fps 流畅 - **远程终端**:xterm.js + ConPTY/PTY,支持调整尺寸、Tab 补全 - **多用户体系**:管理员 / 普通用户分级、Challenge-Response 登录、不透明 token、按设备组授权 - **生产部署**:Nginx 反代 + Let's Encrypt + Keyboard Lock + 全屏控制、防止 ESC / F11 误退出 - **故意保持轻量**:不包含文件管理、媒体采集、注册表、服务管理等 MFC 主控专属功能——这些请走 MFC 主控 ### 全平台支持矩阵 | | **客户端 (受控端)** | **主控端** | |---|---|---| | **Windows** | ✅ 完整功能 | ✅ MFC `YAMA.exe`(推荐)/ Go | | **Linux** (X11) | ✅ 屏幕 + 终端 + 文件 + 剪贴板 | ✅ Go | | **macOS** (Intel + Apple Silicon) | ✅ 屏幕 + 终端 + 文件 + 剪贴板 | ✅ Go | --- ## 合规与反滥用 本项目长期坚持「明确的合规姿态」立场。本版本进一步收紧反滥用边界。 ### 内置技术措施 源代码层面构筑多道独立可验证的反滥用屏障,详见 [反滥用技术措施清单](./docs/Compliance_TechnicalMeasures.md): - **入站连接 IP 段校验**:试用版若被部署到公网会触发可见告警 latch - **监听端口上限**:试用版限制 ≤ 2 个监听端口,防多租户中转改造 - **应用层 RTT 反代理**:LAN 内 RTT 阈值检测,反向代理 / 隧道会被识别 - **多层授权架构**:V2 ECDSA 离线 + V1 在线 + 试用版分级,每一层限制独立 - **Web 主控认证**:强制 Challenge-Response 登录、登录限流、不透明 token、操作可审计 ### 合规文档 | 文档 | 内容 | |---|---| | 📖 [反滥用与合规使用政策](./docs/Compliance_AntiAbuse.md) | 完整的发行方-使用方责任划分 | | 📖 [反滥用技术措施清单](./docs/Compliance_TechnicalMeasures.md) | 每一道屏障的源代码位置、设计动机、已知局限 | > [!IMPORTANT] > **使用本软件即视为您已阅读、理解并接受上述合规文档全部条款。** 如您不能或不愿接受任一条款,请立即停止使用并销毁本软件副本。 ### 网络连接与隐私 | 版本类型 | 连接行为 | |---|---| | 试用版本 | 维持与授权服务器的持续连接 | | V1/V2 授权版本 | 启动时连接验证,通过后断开 | | V2 离线授权版本 | 无需连接授权服务器 | 除获得离线授权外,主控程序会与授权服务器进行必要的数据交互(如检测破解行为、验证授权有效性)。 --- ## 功能特性 ### 远程桌面 ![远程桌面](./images/Remote.jpg) - **多种屏幕捕获**:GDI / DXGI / 虚拟桌面(Windows)、X11 + XShm(Linux)、CGDisplayStream(macOS) - **智能压缩**:DIFF 差分(SSE2 优化)/ RGB565(节省 50% 带宽)/ **H.264**(视频级压缩,x264 + VideoToolbox + WebCodecs)/ 灰度模式 - **自适应质量**:根据 RTT 自动调节帧率(5-30 FPS)、分辨率、压缩算法 - **多显示器**:多屏切换 + 多屏上墙 - **跨设备文件拖拽**:Ctrl+C/V 跨设备复制粘贴文件 - **Web 远程桌面**:浏览器直接访问,手机/平板可用([配置指南](./docs/WebHTTPS.md)) ![Web远程桌面](./images/WebRemote.png) ### 文件管理 ![文件管理](./images/FileManage.jpg) - **V2 传输协议**:支持 >4GB 大文件、断点续传、SHA-256 校验 - **C2C 传输**:客户端之间直接传输,无需经过主控 - **批量操作**:搜索、压缩、批量传输 ### 终端管理 ![终端管理](./images/LinuxClient.png) - **交互式 Shell**:Tab 补全、ANSI 转义、调整尺寸 - **现代终端**:Windows ConPTY、Linux/macOS PTY - **Web 终端**:xterm.js + WebSocket,跟原生体验一致 ### 其他功能 | 模块 | 能力 | |---|---| | **进程管理** | 进程列表、CPU/内存占用、终止、DLL 注入 | | **窗口管理** | 最大化/最小化/隐藏/关闭 | | **媒体采集** | 摄像头、双向语音、键盘记录 | | **系统控制** | 服务管理、注册表、会话注销/关机 | | **网络功能** | SOCKS 代理、FRP 穿透、端口映射 | | **代码执行** | 远程执行 DLL、内存加载、热更新 | --- ## 全平台支持 ### Windows 客户端 **系统要求**:Windows 7 SP1 及以上 **功能完整性**:✅ 全部功能支持 ### Linux 客户端(v1.2.5+) **系统要求**: - 显示服务器:X11/Xorg(暂不支持 Wayland) - 必需库:libX11;推荐库:libXtst(XTest 扩展)、libXss(空闲检测) | 功能 | 状态 | 实现 | |---|---|---| | 远程桌面 | ✅ | X11 屏幕捕获 + libx264 H.264 硬件编码 | | 远程终端 | ✅ | PTY 交互式 Shell | | 文件管理 | ✅ | V2 协议、双向传输、大文件 | | 进程管理 | ✅ | 列表 + 终止 | | 剪贴板同步 | ✅ | xclip / xsel 外部工具,支持文件 URI | | 心跳/RTT | ✅ | RFC 6298 RTT 估算 | | 守护进程 | ✅ | 双 fork 守护化 | **编译**:`cd linux && cmake . && make` ### macOS 客户端(v1.3.2+) **系统要求**: - macOS 10.15 (Catalina) 及以上 - 架构:Intel (x64) 和 Apple Silicon (arm64) 通用二进制 - 系统权限:屏幕录制、辅助功能、完全磁盘访问 | 功能 | 状态 | 实现 | |---|---|---| | 远程桌面 | ✅ | CGDisplayStream + VideoToolbox H.264 硬件编码 | | 键鼠控制 | ✅ | CGEvent,支持双击、拖拽 | | 远程终端 | ✅ | PTY 交互式 Shell(zsh/bash) | | 文件管理 | ✅ | V2 协议、大文件 | | 进程管理 | ✅ | proc_listpids + 终止 | | 剪贴板同步 | ✅ | NSPasteboard,支持文件 URL + NSFilenamesPboardType | | 守护模式 | ✅ | `-d` 后台运行、电源管理、空闲检测 | **编译**:`cd macos && ./build.sh` ### Go 主控(v1.3.4+) **系统要求**:Go 1.21+(仅编译时);二进制运行无依赖 | 能力 | 实现 | |---|---| | 远程桌面 | H.264 → WebSocket → WebCodecs,1080P @ 20fps | | 远程终端 | xterm.js + PTY/ConPTY 透明转发 | | 多用户 | Challenge-Response + 不透明 token + 按组授权 | | 部署 | Nginx 反代 / Let's Encrypt / systemd unit / `/etc/environment` | **编译**:`cd server/go && go build -o server_linux_amd64 ./cmd` --- ## 系统架构 ### 全平台拓扑 ``` ┌────────────────────────────────────────────────────────┐ │ 主控层 │ │ │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ C++ MFC 主控 │ │ Go 主控 │ │ │ │ YAMA.exe │ │ (Win/Linux/Mac) │ │ │ │ Windows only │ │ Web UI 全平台 │ │ │ └────────┬─────────┘ └────────┬─────────┘ │ └────────────┼──────────────────────────┼─────────────────┘ │ │ │ TCP (自定义二进制协议) │ TCP (设备) + WS (浏览器) └────────┬─────────────────┘ │ ┌──────────────┼──────────────┐ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ Windows │ │ Linux │ │ macOS │ │ 客户端 │ │ 客户端 │ │ 客户端 │ │ (DXGI) │ │ (X11) │ │ (CG) │ └─────────┘ └─────────┘ └─────────┘ ``` ### 多层授权(简化视图) ``` 超级管理员(授权服务器) │ V2 授权 (ECDSA P-256) ▼ 第一层主控 ──┬── 第一层主控 ──┬── 第一层主控 ◄── 独立运营 / 完全隔离 │ V1 │ V1 │ V1 ▼ ▼ ▼ 下级主控 → 客户端 (10,000+) → 设备群 ``` | 授权 | 验证 | 特点 | |---|---|---| | V2 授权 | ECDSA P-256 签名 | 离线验证,下级连接数限制 | | V1 授权 | HMAC + 在线验证 | 连接上级服务器验证 | | 试用版 | 在线验证 | 功能受限、连接限制(详见 [合规文档](./docs/Compliance_AntiAbuse.md)) | 完整说明:[多层授权方案](./docs/MultiLayerLicense.md) --- ## 快速开始 ### 5 分钟快速体验 无需编译,下载即用: 1. **下载发布版** - 从 [Releases](https://git.simpleremoter.com/yuanyuanxiang/SimpleRemoter/releases/latest) 下载最新版本 2. **启动主控** - 运行 `YAMA.exe`(或 Linux 上的 `server_linux_amd64`),输入授权信息 3. **生成客户端** - 工具栏「生成」配置服务器 IP 和端口 4. **部署客户端** - 复制到目标机器运行 5. **开始控制** - 客户端上线后双击远程桌面 > [!TIP] > 首次测试建议在同一台机器上运行主控和客户端,使用 `127.0.0.1` 作为服务器地址。 ### Go 主控部署(VPS) 参见 [Web 远程桌面配置](./docs/WebHTTPS.md)。最小步骤: ```bash # 1. 在 VPS 上跑 Go 主控 nohup ./server_linux_amd64 --port 6543 --http-port 9001 > yama.log 2>&1 & # 2. nginx 反代 9001 到 HTTPS # 详见 docs/WebHTTPS.md # 3. 浏览器打开 https://yourdomain.com/,登录、添加客户端 ``` ### 试用授权(v1.2.4+) 提供 2 年有效期、20 并发连接、仅限内网的试用口令: ``` 主控 IP:127.0.0.1 序列号:12ca-17b4-9af2-2894 密码:20260201-20280201-0020-be94-120d-20f9-919a 验证码:6015188620429852704 有效期:2026-02-01 至 2028-02-01 ``` > [!NOTE] > **多层授权方案** > > 支持代理商/开发者独立运营:第一层用户获得授权后可完全离线使用,下级用户只连接到您的服务器。完整说明:[多层授权方案](./docs/MultiLayerLicense.md) ### 编译 - **C++ 主控 & Windows 客户端**:VS 2019/2022/2026 打开 `SimpleRemoter.sln` → Release | x64 - **Linux 客户端**:`cd linux && cmake . && make` - **macOS 客户端**:`cd macos && ./build.sh` - **Go 主控**:`cd server/go && go build ./cmd` --- ## 用户文档 | 文档 | 适用对象 | 内容 | |---|---|---| | 📖 [快速部署指南](./docs/QuickStart.md) | 首次使用者 | 10 分钟首次部署 | | 📖 [多级网络搭建指南](./docs/NetworkSetup.md) | 需要管理下级的用户 | 多级网络架构 | | 📖 [日常使用手册](./docs/UserManual.md) | 所有用户 | 全功能详解 | | 📖 [代理商运营手册](./docs/AgentManual.md) | 代理商/分销商 | 下级授权、FRP 配置 | | 📖 [定制化开发指南](./docs/CustomizationGuide.md) | 技术型客户 | 品牌定制、二次开发 | | 📖 [Web 远程桌面配置](./docs/WebHTTPS.md) | 移动端 / Go 主控用户 | HTTPS 反代、域名配置 | | 📖 [反滥用政策](./docs/Compliance_AntiAbuse.md) | 所有使用方 | 合规边界、责任划分 | | 📖 [反滥用技术措施](./docs/Compliance_TechnicalMeasures.md) | 合规审查方 | 屏障代码位置 + 设计动机 | --- ## 更新日志 ### v1.3.5 (2026.5.31) **硬件编码扩展(H.264 / AV1)& 多客户许可证生产化 & FRP 子级自动化** **新功能:** - **客户端硬件编码**:新增 FFmpeg 路径的 `CFFmpegH264Encoder` / `CFFmpegAV1Encoder`,可调用 NVENC / Quick Sync / AMF 等 GPU 编码器;`EncoderFactory` 运行时自动优选 - **静屏跳编码**:捕获层比对前后帧,完全相同时跳过编码与传输——硬件编码器在静屏不再被强行喂入相同帧 - **菜单驱动的压缩 / 解压**:自定义文件 + 文件夹选择器(`ZstaPickerDlg`),可从远程主机直接选混合目录树打包或解压到目标路径 - **下级主控自动起 frp client**:上级签发 V2 授权时一并下发 frp 配置,子级主控启动即接通中继链路,无需人工配 `frpc.toml` - **合规可裁剪构建**:`DISABLE_X264` / `DISABLE_FFMPEG` 编译开关,可在不动源码的前提下产出完全不带 x264 / FFmpeg 的二进制,配套 `LICENSE-THIRD-PARTY.txt` **改进:** - **多客户许可证服务端硬化**:`licenses.ini` hot-path 互斥锁 + 30s 节流,写频从 0.6 → 0.07 次/秒(外推 100 在线:~160 → ~3.3 次/秒);闭环了"预设续期配额消失"的 read-modify-write 竞态 - **`licenses.ini` IP 列表 4KB 截断修复**:分段写入避免溢出尾部被永久丢弃 - **导入 SN 按 `BindType` 严格校验**:避免离线版 / 在线版 / 试用版 SN 串库 - **客户端 SCLoader 大瘦身**:移除一万行硬编码 stub(`SCLoader.cpp`),改用主控运行时下发 DLL 注入 - **客户端 logger 优雅退出**:进程退出刷出队列里的日志并记录退出信号 - **IOCPClient 早期数据包防护**:`setManagerCallBack` 之前抵达的包不再触发空回调崩溃 - **多显示器光标位置修正 & MJPEG 录制翻转修复**:trace cursor 跨屏坐标系修正;MJPEG 上下颠倒回放修正 + 编码失败 0 字节 AVI 残留清理 - **FRP `privilegeKey` 改用 UTC 时间戳**:跨时区主控 / 中继 / 客户端不再因本地时区让 frp auth 失效 - **Linux 客户端 `install.sh` / `uninstall.sh`**:补齐一键部署 / 卸载脚本 - **Go 服务端构建管线**:`build.ps1` / `build.cmd` 把 Go 主控纳入主构建 - **Release / Download 链接全量迁移到 Gitea**:v1.3.4+ 不再发到 GitHub **Bug 修复:** - Web 文件管理触屏双击不稳:触摸阈值放宽防误判拖拽 + 两次 `click` 模拟物理双击;修复跨平台文件夹重命名 / 点击无响应 - 向 sub-master 发送 AUTH 时密码生成路径错误,下级始终认证失败 - 试用 SN 误进入 V2 / V1 授权下发分支 ### v1.3.4 (2026.5.20) **Go 主控 & 全平台主控闭环 & Linux/macOS 客户端剪贴板** **新功能:** - **Go 主控**:Go 语言实现的跨平台轻量主控服务(Windows / Linux / macOS),聚焦于"远程桌面 + 远程终端 + 多用户分级"——不替代 MFC 主控,为需要纯 Linux/macOS 落地的运维场景兜底 - **Web 远程桌面(Go 主控)**:H.264 → WebSocket → WebCodecs 解码、1080P @ 20fps、桌面 + 移动端全适配;远程光标同步、Keyboard Lock 防 ESC/F11 误退、控制态下 F11/Esc 直传目标 - **Web 远程终端(Go 主控)**:xterm.js + PTY/ConPTY 透明转发、调整尺寸、断开自动清理面板 - **多用户体系(Go 主控)**:管理员/普通用户分级、按设备组授权、Challenge-Response 登录、登录限流(IP + 用户名)、不透明 token - **Linux 客户端剪贴板**:基于 xclip / xsel 的双向剪贴板同步,支持 `text/uri-list` 文件路径 - **macOS 客户端剪贴板**:基于 NSPasteboard 的双向剪贴板同步,文件 URL + 旧版 API 兼容 **改进:** - Web 会话自适应质量被 clamp 到 H264-only 等级(≥ Good),避免 Ultra/High(DIFF/RGB565)让浏览器无法解码 - Linux 客户端默认 `QualityLevel` 改为 `QUALITY_GOOD`(对齐 Windows/macOS),不再请求服务端自适应 - 登录文本字段按客户端能力位条件解码 UTF-8 / GBK,修正德文/法文等带变音符的主机名 / 地理位置乱码 - 设备列表稳定排序(按上线时间),避免每次心跳 / WS 推送都洗牌 - RDP 重置按钮接通到设备端 `CMD_RESTORE_CONSOLE` - MFC 主控开启 Web 远控会话时不再短暂闪一下窗口(OnInitDialog 会话判定上移) **Bug 修复:** - Web 会话从全屏点关闭后设备列表点击失灵(fullscreen 子树规则,`showPage` 统一退全屏) - 客户端突然断开后 Web 远控页面停留在 "Connected" 永不刷新(新增 `device_offline` 通知) - 多显示器轮询导致两路屏幕子连接同时灌帧,画面在两个显示器间跳变(`BindScreenConn` 退役旧 sub-conn) - Go 主控 `ListDevices` 因 map 迭代随机化导致列表乱序 ### v1.3.3 (2026.5.10) **Linux/macOS 客户端深化 & 双层认证安全** - 服务端身份校验(Layer 1):Linux/macOS 客户端 HMAC-SHA256 校验服务端身份 - 子连接认证(Layer 2,TOKEN_CONN_AUTH):所有子连接首包签名 + clientID 钉死 - Linux 客户端:H.264 硬件编码、XFixes 光标类型检测、UTF-8 协议能力位 - macOS 客户端:文件管理器、远程终端、剪贴板同步、守护进程模式 - 主控:屏幕预览缩略图、区域截图、远程桌面缩放、Web 用户按组过滤 - 共享代码抽到 `common/`(rtt_estimator / client_auth_state / posix_net_helpers) ### v1.3.2 (2026.5.1) **macOS 客户端 & Web 远程桌面增强** - 全新 macOS 原生客户端:屏幕捕获、H.264 编码、键鼠控制 - Web 远程桌面光标同步 - 触发器功能、用户管理(角色权限) - DLL 执行增强、远程桌面输入法切换 ### v1.3.1 (2026.4.15) **Web 远程桌面(MFC 主控) & 多主控共享增强** - Web 远程桌面:基于 WebSocket 实现,手机/平板浏览器访问 - 多显示器禁用自适应、状态栏过期日期自动更新 - 多层授权自动更新、DLL 缓存复用 ### v1.3.0 (2026.4.8) **多层级 FRP 架构 & 品牌定制** - 本地 FRPS 服务器、多层级架构自动 FRP 集成 - V2 授权下级连接数限制、许可证文件导入/导出 - 增强型硬件 ID (V2)、UI 品牌定制 - 运行时功能限制可配置 ### 更早版本 v1.2.x 系列(邮件通知、远程音频 Opus、V2 授权协议、V2 文件传输、现代 Web 终端 xterm.js、远程桌面工具栏重写、自适应质量控制、Linux 客户端初版……)及 2019 年以来的全部演进,请见 [history.md](./history.md)。 --- ## 相关项目 - [HoldingHands](https://github.com/yuanyuanxiang/HoldingHands) - 全英文界面远程控制 - [Gh0st](https://github.com/yuanyuanxiang/Gh0st) - 经典 Gh0st 实现 --- ## 联系方式 | 渠道 | 链接 | |------|------| | **QQ** | 962914132 | | **Telegram** | [@doge_grandfather](https://t.me/doge_grandfather) | | **Email** | [yuanyuanxiang163@gmail.com](mailto:yuanyuanxiang163@gmail.com) | | **Issues** | [问题反馈](https://t.me/SimpleRemoter) | | **PR** | [贡献代码](https://git.simpleremoter.com/) | ### 赞助支持 本项目源于技术学习与兴趣爱好,作者将根据业余时间不定期更新。如果本项目对您有所帮助,欢迎赞助支持: [![Sponsor](https://img.shields.io/badge/Sponsor-Support%20This%20Project-ff69b4?style=for-the-badge)](https://github.com/yuanyuanxiang/yuanyuanxiang/blob/main/images/QR_Codes.jpg) ---

如果您喜欢这个项目,请给它一个 ⭐ Star!