-
v1.3.5 Stable
released this
2026-05-31 15:38:52 +00:00 | 11 commits to main since this releasev1.3.5 (2026.5.31)
⚠️ 安全提示
本软件涉及远程控制功能,请谨慎下载,建议在虚拟机中测试。主控程序会连接授权服务器进行必要的通讯和防破解检测。下载并使用本软件,即视为接受上述条款。
硬件编码扩展(H.264 / AV1)& 多客户许可证生产化 & FRP 子级自动化
本次发布历时约 11 天,跨 20 次提交,重点完成三件事:客户端硬件编码栈扩展(FFmpeg 路径补齐 H.264/AV1 GPU 编码 + 静屏跳编码)、多客户许可证的生产级硬化(hot-path 写抑制、4KB IP 截断修复、BindType 守护、合规可裁剪构建),以及子级运营自动化(FRP 子机自动启动、生成子级密码 bug 修复)。同时附带 SCLoader 大瘦身(-10K 行)、Linux 安装脚本、Web 文件管理触屏体验修复等运维向收尾。
新功能
客户端硬件编码(H.264 + AV1,FFmpeg 路径)
CFFmpegH264Encoder/CFFmpegAV1Encoder:通过 FFmpeg 调用 NVENC / Quick Sync / AMF 等 GPU 编码器,与现有 x264 软件编码路径并列;EncoderFactory统一在运行时按可用编码器优选- 静屏跳编码:捕获层比较前后帧,完全相同时跳过编码与传输——硬件编码器在静屏时不再被强行喂入相同帧浪费带宽与 GPU 时间
- AV1 通道铺好:未来可在硬件支持的机器(Intel Arc / NVIDIA Ada / AMD RDNA3+)上以更低比特率推送同等画质
备注:FFmpeg 静态库需更新到包含编码器组件的版本才会生效;旧 FFmpeg lib 不会破坏现有 x264 / DIFF / RGB565 路径。
子级运营自动化
- 下级主控自动起 frp client:上级在签发 V2 授权时可一并下发 frp 配置,子级主控启动即接通中继链路,无需人工配
frpc.toml(CLicenseDlg.cpp+2015RemoteDlg.cpp新增自动接入流程) - 菜单驱动的压缩 / 解压:自定义文件 + 文件夹选择器(
ZstaPickerDlg),可以从远程主机直接选中混合的目录树打包,或选 zip 解压到目标路径;新增compress.bmp/uncompress.bmp菜单图标
合规可裁剪构建
config.h编译开关DISABLE_X264/DISABLE_FFMPEG:合规审查 / 出口管制场景下,可在不动源码的前提下产出完全不带 x264 / FFmpeg 的二进制(LICENSE-THIRD-PARTY.txt同步收录第三方许可证摘要,Dependencies.md补充裁剪说明)
改进
多客户许可证:从能跑到生产可用
licenses.inihot-path 写抑制 + 互斥锁:心跳路径每 5s × 客户数会写一次licenses.ini,每次写都是WritePrivateProfileString全文件重写。本版本引入:LicensesIniMutex()(Meyers singleton recursive_mutex)覆盖所有 15 个触碰licenses.ini的函数,关闭SetPendingRenewal/DecrementPendingQuota之间的 read-modify-write 竞态——之前用户反馈"预设续期配额莫名消失"就是这个 raceUpdateLicenseActivity围绕 in-memoryg_activityCache重写:键为(SN, IP, machine)(不是 SN 单独,因为同一 SN 可能被批量授权部署到上百台终端),无变更且 30sLastActiveTime节流窗口未满则完全跳过磁盘写入- 实测(本地 2 客户端基线):写频从 0.60 → 0.07 次/秒;外推到 100 在线目标:~160 → ~3.3 次/秒(之前 100 在线接近文件 I/O 饱和)
licenses.iniIP 列表 4KB 截断修复:WritePrivateProfileString单值 4KB 上限会永久丢弃溢出尾部数据;改为分段写入避免 IP 历史链路被静默吞掉BindType校验:导入 SN 时按BindType字段严格校验绑定形态,避免离线版/在线版/试用版 SN 串库- 试用 SN 不再下发授权信息:trail SN 在握手阶段就被识别,不会进入授权下发分支
- License 视图 IP 列表 UI 卸锁:
OnLicenseViewIPs中m_ListLicense.SetItemText移出临界区,critical section 只覆盖真正的磁盘 I/O
客户端 / 运维
- SCLoader 大瘦身:移除
client/SCLoader.cpp(一万行硬编码 stub),改为运行时使用主控下发的 DLL 注入——客户端 binary 大幅缩小,插件分发不再走源码内嵌路径 - 客户端 logger 优雅退出:进程退出时刷出尚在队列里的日志,并记录退出信号——重启后能从最后一条 log 复原崩溃前 1-2 秒的上下文
- IOCPClient 早期数据包防护:在
setManagerCallBack之前抵达的数据包不再触发空回调崩溃(启动竞态修复) - 多显示器光标位置修正:trace cursor 在跨屏捕获时坐标系修正,远端鼠标位置不再偏移到错误显示器
- MJPEG 录制翻转修复:MJPEG 回放上下颠倒;同时移除编码器打开失败时的 0 字节 AVI 残留
- FRP
privilegeKey改用 UTC 时间戳:跨时区主控 / 中继 / 客户端之间不再因为各自本地时区让 frp auth 误判失效
文档与发版基础设施
- Linux 客户端
install.sh/uninstall.sh:补齐 Linux 一键部署 / 卸载脚本,与 macOS 一致 - Go 服务端构建管线:
build.ps1/build.cmd把 Go 主控编译纳入主构建流程;同时修复 Web 登录在新构建产物下的一个回归 bug - Release / Download 链接迁移到 Gitea:v1.3.4+ 的发版只发到 Gitea(
git.simpleremoter.com),README 三语版本和server/go/README.md中的下载按钮、release 徽章、章节锚点链接统一指向 Gitea;GitHub 镜像保留 stars / forks 徽章作为历史累计指标,但不再作为下载入口
Bug 修复
- Web 文件管理触屏双击不稳:触摸移动阈值放宽防止误判为拖拽;用两个连续
click事件(间隔 20ms)模拟物理双击替代非标准dblclick,修复 Windows/Linux/macOS 上文件夹重命名与点击无响应 - 下级密码生成错误:向 sub-master 发送 AUTH 时密码生成路径走错,导致下级始终认证失败
- 试用 SN 误下发授权:trail SN 不再进入 V2 / V1 授权下发分支,避免试用变相获得正式授权
升级提示
- 硬件编码默认关闭:FFmpeg 硬编码路径已并入
EncoderFactory,但默认仍优先 DIFF / RGB565 / x264。如需启用 NVENC / QuickSync / AMF,需确认运行时 FFmpeg 静态库已带对应编码器组件;旧 FFmpeg lib 不会破坏现有路径,只是新编码器不可用 - 多客户许可证服务端:从 v1.3.4 升级的部署建议关注
licenses.ini的并发安全——本版本将"100 在线 = 160 次/秒文件写入"降到 ~3.3 次/秒,配额竞态也已闭环。如果在生产中观察到"预设续期配额消失",升到 v1.3.5 即可 - 合规可裁剪构建:
DISABLE_X264/DISABLE_FFMPEG是构建期开关,开启后输出二进制不含相关第三方依赖;运行时若不需要 H.264,仅靠 DIFF / RGB565 仍可正常远控 - 下级 frp 自动化:v1.3.5 起,子级主控可在拿到 V2 授权的同时自动获取并启用 frp client 配置——如果你的部署链路中已经在外部跑了独立 frpc,升级后请检查是否重复启动两份 frpc
- 客户端硬件编码静屏跳编码:静屏时帧上行带宽近 0;对自适应统计的 RTT / 帧率估算无影响(静屏不计入活跃帧率窗口)
Downloads
-
v1.3.4 Stable
released this
2026-05-20 16:42:29 +00:00 | 32 commits to main since this releasev1.3.4 (2026.5.20)
⚠️ 安全提示
本软件涉及远程控制功能,请谨慎下载,建议在虚拟机中测试。主控程序会连接授权服务器进行必要的通讯和防破解检测。下载并使用本软件,即视为接受上述条款。
Go 主控(全平台闭环)& Web 远程桌面/终端 & 合规与反滥用
本次发布历时约 10 天,跨 34 次提交,核心交付一个轻量 Go 主控作为 MFC 主控的补充形态——为不便跑 Windows VPS 的用户提供原生 Linux/macOS 主控落点,至此客户端 + 服务端在 Windows / Linux / macOS 上全部打通。同时大幅强化 Web 远程桌面/终端体验,引入反代理 RTT 合规检测与多客户许可证服务,并对客户端 TCP 心跳做了硬化。
新功能
Go 主控(全平台闭环,新增)
定位是"功能简单、聚焦于远程桌面 + 远程终端 + 多用户"的轻量服务端,不替代 MFC 主控;适合纯 Linux 服务器、ARM Mac 长驻、嵌入式主控箱等场景。两种主控用的是同一套客户端,可混搭部署。
- Web UI 嵌入与分发:单二进制内嵌
server/web/资源,开箱即用(embed 编译期打包) - Web 认证 + WebSocket 信令 + 实时设备列表(Phase 3)
- 屏幕帧端到端转发(Phase 4):H.264 流通过 WebSocket 直发浏览器,WebCodecs 硬解;客户端 graceful BYE 关闭
- 鼠标 / 键盘输入 + 多用户体系(Phase 5 + 7):基于
users.json的管理员/普通用户分级、按设备组授权 - Web 远程终端转发(Phase 6):xterm.js + PTY 模式 + graceful close
- 稳定的设备列表排序 + RDP-reset 处理:刷新不再跳序
- 设备下线主动通知浏览器(
device_offline):网页不再卡死在已离线设备上
Go 多客户许可证服务(新增)
- Signer 接口 + Local/Remote/NoOp 三种实现:把签发逻辑从主签名密钥解耦,客户跑 RemoteSigner 永远不接触主 HMAC 密钥
- License Server HTTP:
/license/sign+/license/heartbeat,JWT RS256 签名,24 小时本地缓存兜底 - 全部代码落在
server/go/licensing/,适合多客户部署场景
主控(MFC)
- 在线主机缩略图列:列表新增实时缩略图列,焦点离开时选中背景一致
- "播放快照"循环预览窗口:双击主机弹小窗循环回放最近的屏幕快照
- 键盘管理对话框支持剪贴板替换:可在键盘日志规则中改写复制内容
- 键盘记录支持剪贴板变更日志
Web 远程桌面 / 终端
- Web 远程终端:xterm.js + 移动端 UX 打磨(iOS safe-area、图标化工具栏、登出确认)
- 触控模式视觉光标跟随远端 IDC_* 状态:手势模式下也能看到远端真实光标形态
- 无 GUI 主机直接打开终端:Headless 客户端在 Web 端无需远程桌面入口即可起终端会话
合规与反滥用
- 反代理 RTT 检测 + 分级使用策略 + 免责声明:试用授权服务端检测异常 RTT(疑似代理/转发)拒绝授权
- 检测点迁移到 KernelManager 心跳:LAN RTT 检查从授权流程移到心跳路径,减小误判面
改进
- AVX2 运行时探测 + x264 可选编译:在不支持 AVX2 的旧 CPU 上不再启动即崩溃;x264 改为可选依赖,方便最小化构建
scheduler.h支持所有运行计划:调度框架补齐,覆盖全部任务类型- Web 管理员密码独立环境变量:
YAMA_WEB_ADMIN_PASS,与主授权密码解耦,避免 Web 暴露面拖累主控授权 - Web 端 HTML 抽离到
server/web/index.html:从 C++ 内嵌字符串迁出,前端可独立开发调试 - Web 触摸板光标对齐到 SVG 箭头尖:减少触控模式下的指向偏移
- Go 主控安全加固:登录限流 + WebSocket Origin 白名单 + REST Bearer 鉴权
Bug 修复
- 客户端 TCP 心跳硬化对抗半死连接:检测半开 TCP(对端崩了但本地 OS 还认为连接存活)并主动重连
- Web 退出远程桌面全屏后设备列表点击无效:fullscreenchange 钩子卸载顺序修复
- Web 远程桌面可靠性与 UX:多项稳定性问题(重连、按键映射、IME 提交)
- 未映射的 OEM 非 shifted 符号 + 多字符 IME commit:英语键盘下符号键发错码、中文输入法长串提交丢字
- 缩略图列在焦点失去时选中背景不一致
- .RC 文件不使用绝对资源路径:跨机器构建时资源解析失败修复
- Go 子模块
go.mod缺失:从 SimpleRemoter 迁移时遗漏的依赖文件补齐
升级提示
- MFC 主控仍是主推方案,Go 主控是补充形态——日常运维(文件管理、媒体采集、注册表、服务管理、品牌定制)请继续使用
YAMA.exe;Go 主控仅聚焦"远程桌面 + 远程终端 + 多用户",跨 Windows / Linux / macOS 编译 - Go 主控部署需配置 Web 管理员密码:通过
YAMA_WEB_ADMIN_PASS环境变量设置,与主控授权密码独立 - 多客户许可证部署:客户机房跑
RemoteSigner调用中心 License Server(/license/sign、/license/heartbeat),客户永远拿不到主 HMAC 密钥;详见server/go/licensing/ - 旧 CPU 用户:v1.3.4 启动会做 AVX2 运行时检测,无 AVX2 时禁用相关加速路径而非崩溃;如需在无 AVX2 机器上分发,建议同时关闭 x264 编译选项
- 试用授权用户:服务端会做反代理 RTT 检测,正式付费授权不受影响;如确在大延迟链路(卫星/远跨洲)上使用试用授权,请联系作者授权白名单
Downloads
- Web UI 嵌入与分发:单二进制内嵌
-
v1.3.3 Stable
released this
2026-05-10 18:03:26 +00:00 | 66 commits to main since this releasev1.3.3 (2026.5.10)
⚠️ 安全提示
本软件涉及远程控制功能,请谨慎下载,建议在虚拟机中测试。主控程序会连接授权服务器进行必要的通讯和防破解检测。下载并使用本软件,即视为接受上述条款。
Linux/macOS 客户端深化 & 双层认证安全 & 跨平台共享代码重构
本次发布历时约一个月,跨 38 次提交,重点完善 Linux 和 macOS 客户端能力(接近 Windows 端覆盖),引入服务端与子连接双层身份校验闭环,并把 Linux/macOS 客户端通用逻辑抽到
common/大幅降低维护成本。新功能
安全(双层认证)
- 服务端身份校验(Layer 1):Linux/macOS 客户端通过 HMAC-SHA256 校验服务端
MasterSettings签名,未授权服务端无法触发任何子连接功能;30 秒超时兜底,校验失败仅作"本次连接不可信"处理(由libsign.a静态库提供) - 子连接认证(Layer 2,TOKEN_CONN_AUTH):所有功能子连接首包签
(clientID || timestamp || nonce),服务端验签后将 clientID 钉在 sub-connection ctx 上,杜绝 NAT/127.0.0.1 等场景下 IP 反查不可靠导致的路由错位 - 客户端 ID V2 算法:基于
MachineGuid + 归一化路径的稳定 ID,重装系统通常不变;与 Windows 端 V2 算法对齐
Linux 客户端
- H.264 硬件编码:动态加载
libx264,与 Windows 端编码方式对齐 - 光标类型检测:基于 XFixes 扩展上报实时光标
- UTF-8 协议能力位:通过
CLIENT_CAP_UTF8与服务端协商编码,路径/活动窗口在中文环境下不再乱码
macOS 客户端
- 文件管理器:移植
FileManager到common/,macOS 客户端获得完整文件操作能力(列表、上传、下载、重命名、删除) - 远程终端:基于共享
PTYHandler实现 macOS Shell 支持;PTY 启动使用 login shell(-l)以加载~/.zprofile,确保 Homebrew/pyenv/nvm 等 PATH 能被 PTY 看到 - 剪贴板同步:跨平台双向剪贴板同步
- 守护进程模式:
-d参数支持后台常驻 - 电源管理:
NSActivity+IOPMAssertion防止系统休眠导致客户端无响应 - 屏幕锁定/用户空闲检测:状态上报至服务端
- 屏幕捕获优化:使用
CGDisplayStream推送模式,静屏时 CPU 完全休眠(条件变量 wait + IOSurface)
主控 / 服务端
- 屏幕预览缩略图:双击主机时弹出小窗预览
- 远程桌面区域截图:非控制模式下右键拉框截图
- 远程桌面缩放:非控制模式下支持滚轮缩放
- Web 远程桌面按组过滤:Web 用户仅能看到分配的设备组
- 嵌入式现代终端:xterm.js + WebView2 终端 DLL 嵌入主控资源,首次运行自动解压
- 自适应屏幕算法:新增菜单选项,默认启用,弱网环境下自动降质
- 外部资源覆盖机制:
res/目录下同名文件可选覆盖嵌入资源,方便临时定制 - 分组名称持久化:客户端分组写入配置并随 LOGIN_INFOR 上报
- Build Dialog 支持生成 macOS 客户端:从下拉框选 "ghost - Apple MacOS",自动 patch 服务器地址;选 Linux/macOS 时自动禁用对它们不适用的选项(架构 / 加壳 / 高级 group),生成后提示需要在 macOS 端重签
重构
- Linux/macOS 客户端共享代码抽到
common/:common/rtt_estimator.h:RFC 6298 RTT 估算器 + 心跳间隔common/client_auth_state.h:服务端身份校验状态机common/posix_net_helpers.h:execCmd / httpGet / getPublicIP 等common/sub_conn_thread.h:子连接 worker 线程模板- 累计减少 Linux/macOS 重复代码 ~300 行,新增功能时只动一处即可
改进
- 现代终端 SYSTEM 兼容:服务端以 SYSTEM 跑时(WebView2 不支持 LocalSystem token),自动回退到经典终端,信息列表给出精确原因(不再"打开但空白")
- MSBuild 路径检测:
build.ps1增加vswhere兜底,VS 装在非默认盘(如 D:\)也能找到 - 跨语系编译:
/source-charset:utf-8 /execution-charset:.936强制 GBK 执行字符集,英语 Windows 编译出来的服务端不再有中文乱码 - macOS 安装脚本增强:
install.sh源 binary 优先级改为 ①命令行参数 → ②脚本同目录 → ③build/bin/ghost,分发场景更顺手;codesign 步骤注释明确说明用途(修复 BuildDlg patch 后失效的签名) - i18n:服务端按客户端能力位自动选择 UTF-8/CP_ACP 解码,多语系下文本显示一致
Bug 修复
- V2 文件传输在文件管理器对话框双向均损坏(影响所有非默认网络拓扑):
- 上传方向:
FindHostByIP在 NAT/frpc 下找到错误 ctx,包发到死连接 → 改用FindHost(GetClientID()) - 下载方向:V2 chunk 到达 FileManager 子连接被分发到
CFileManagerDlg::OnReceiveComplete,落 default 触发SendException→ 新增WM_RECVFILEV2_CHUNK消息走 UI 线程并按 transferID 维护进度对话框
- 上传方向:
- 现代终端在 SYSTEM 权限下空白:检测 LocalSystem token 自动回退
- Linux 客户端 UTF-8 路径/活动窗口在服务端乱码:服务端按
CLIENT_CAP_UTF8解码 - 日志列表表头点击错排序到主机列表:列表控件交叉触发修复
LVM_SETUNICODEFORMAT后表头排序失效:补充HDN_ITEMCLICKW映射- 服务+代理 Release 模式托盘图标不显示:移除
NIF_GUID冲突 - macOS/Linux 客户端分组变更后未重发 LOGIN_INFOR:服务端分组显示停留在旧值
- 文件对话框 map 中野指针访问导致崩溃
- 重连时未清回调导致访问已销毁 handler 崩溃
- MFC 与 Web 远程桌面会话未完全独立
- macOS 锁屏状态启动远程桌面时未唤醒显示器
- MFC 远程桌面触控板双指滚动失效
升级提示
- macOS 用户必须重装客户端:v1.3.2 之前的 macOS binary 没有子连接 auth,新服务端会回退到 IP 反查可能路由错位(影响 V2 文件传输)。请按
macos/install.sh流程重装;脚本会自动 ad-hoc 重签 - 服务端从 Windows BuildDlg patch 出来的 macOS binary 必须重签:
codesign --force --sign - ghost,或直接走install.sh(自动重签) - 跨语系编译:英语 Windows 编出的服务端,运行前需将 Region → Administrative → "Language for non-Unicode programs" 改为 "Chinese (Simplified, Mainland China)" 并重启
Downloads
- 服务端身份校验(Layer 1):Linux/macOS 客户端通过 HMAC-SHA256 校验服务端
-
v1.3.2 Stable
released this
2026-05-01 09:46:34 +00:00 | 105 commits to main since this releasev1.3.2 (2026.5.1)
⚠️ 安全提示
本软件涉及远程控制功能,请谨慎下载,建议在虚拟机中测试。主控程序会连接授权服务器进行必要的通讯和防破解检测。下载并使用本软件,即视为接受上述条款。
macOS 客户端 & Web 远程桌面增强
新功能
- macOS 客户端支持:全新实现的 macOS 原生客户端
- 基于 CoreGraphics/AVFoundation 实现屏幕捕获
- 支持 H.264 硬件编码
- 完整的键盘、鼠标输入控制
- 系统权限管理(屏幕录制、辅助功能、完全磁盘访问)
- 远程光标类型同步
- Web 远程桌面光标同步:浏览器端实时显示远程主机光标样式
- 触发器功能:支持主机上线事件触发自定义操作
- 用户管理功能:新增角色权限管理,支持多用户分级控制
- DLL 执行增强:参数持久化存储、支持自动运行配置
- 远程桌面输入法切换:支持远程切换被控端输入语言
改进
- Web 远程桌面手势优化:改进双指手势识别、双击拖拽、Shift 组合键支持
Bug 修复
- 修复 Web 远程桌面在 macOS 客户端上双击无法打开文件的问题
- 修复 macOS 完全磁盘访问权限检测不准确的问题
- 修复 RestoreMemDLL 因 DLL 信息大小错误导致还原失败
- 修复多个 DLL 同时执行可能因全局变量冲突而失败
- 修复鼠标双击和远程桌面切换问题
- 修复 Linux 客户端编译缺少 libzstd.a 的问题
Downloads
- macOS 客户端支持:全新实现的 macOS 原生客户端