-
v1.3.7 Stable
released this
2026-06-26 15:11:10 +00:00 | 12 commits to main since this releasev1.3.7 (2026.6.26)
⚠️ 安全提示
本软件涉及远程控制功能,请谨慎下载,建议在虚拟机中测试。主控程序会连接授权服务器进行必要的通讯和防破解检测。下载并使用本软件,即视为接受上述条款。
Android 客户端 & 窗口捕获增强 & 安全加固
本次发布历时约 12 天,跨 17 次提交,最重要的里程碑是首个 Android 受控端正式落地,打通安卓设备远程管理的完整链路。其余改动围绕三条副线:前台窗口精准捕获(PrintWindow + HWND 路由)、服务端安全加固(TOKEN_AUTH 签名 / 反破解版本绑定 / 子授权连接数限制),以及多项性能与稳定性修复。
新功能
Android 客户端(全新平台支持)
- 屏幕实时推流:MediaProjection + MediaCodec H.264 硬件编码,推流至服务端;支持 arm64-v8a / armeabi-v7a,最低 Android 5.0 (API 21)
- 触控 / 按键注入:基于 AccessibilityService,支持点击、长按、滑动、文本输入
- TV / 机顶盒 D-pad 导航:利用 AccessibilityService 焦点导航机制,方向键精准控制焦点移动与确认,无需 root 即可完整操控 Android TV
- 设备分组:分组名支持编译期 APK binary patch 预置,服务端可通过
CMD_SET_GROUP动态修改;分组名持久化至应用私有目录filesDir/yama_group,App 重启后仍保留 - APK 生成与重签:主控 BuildDlg「生成」对话框新增
ghost - Google Android选项,填入服务端 IP / 端口一键生成可部署 APK,流程与 Linux / macOS ghost 完全一致;配套android/sign_apk.bat自动检测本机 Android SDK 完成重签,支持读取YAMA_PWD环境变量免交互 - 服务端删除客户端:服务端发起删除(BYE 指令)后,Android Service 通过 JNI 回调
onNativeExit()正常停止,不留僵尸进程
生成流程说明:
ghost.apk模板文件提交到仓库;BuildDlg 在 APK 的.so中定位FLAG_GHOST,直接 patchszServerIP/szPort/szGroupName,无需重新编译;patch 后需用sign_apk.bat重签才能安装。前台窗口精准捕获
- PrintWindow 窗口捕获:客户端新增对服务端 HWND 路由指令的支持,可针对指定窗口句柄调用
PrintWindow捕获,即便目标窗口被其他窗口遮挡也能获取完整画面;避免了原来BitBlt方案被遮挡时只能捕到背景的问题 - 服务端 HWND 路由:服务端按 clientID 管理 HWND,精准将窗口捕获指令发送到持有该窗口的客户端连接
- 在线主机右键查看活动窗口:主机列表右键菜单新增「查看活动窗口」,实时查询并显示当前目标机器前台窗口标题
安全加固
- TOKEN_AUTH 响应 ECDSA 签名:服务端持有 V2 私钥时,对
"SN|valid(0/1)"以 ECDSA P-256 签名,将sig:<base64>写入响应 reserved 字段;客户端可验证服务端身份,防止中间人伪造授权响应,且不改变请求格式(向前兼容) - TOKEN_SERVER_VERIFY(cmd 251):
commands.h新增常量,配合服务端 Challenge-Response 身份校验路径 - 反破解版本绑定:主控二进制与核心库建立版本绑定关系,检测到版本不匹配时拒绝加载,阻断替换 DLL 的破解路径;同步更新依赖库版本
- 子授权连接数限制:
licenses.ini新增LicenseLimit字段(0 = 不限制);超管向子级发出 TOKEN_AUTH 响应时附带|lic:N,子级超出上限后拒绝新连接;CLicenseDlg右键菜单支持实时查看和设置限额(1–9999,清空 = 不限制),修改后在子级下次鉴权时生效
改进
- H264 模式跳过首帧巨帧:H264 模式连接建立时,客户端之前会先发送一帧 ~8MB 的 ARGB 原始帧作为「首帧」;现已跳过该发送,服务端改为在收到首个 IDR 帧后自动解锁画面显示,减少约 8MB 的冗余初始传输
- 自适应尺寸渲染改进:优化自适应分辨率模式下的渲染逻辑,减少尺寸切换时的画面抖动
- ScanScreen 窗口捕获重构:将
ScanScreen中的窗口捕获逻辑拆分为 3 个独立私有方法,提高可读性与后续维护性
Bug 修复
- ARGBToNV12 堆溢出:
ARGBToNV12转换时未对输入维度做偶数对齐,奇数尺寸的窗口(如尺寸为奇数宽 / 高的应用)会导致写越界堆溢出;修复为将维度钳制到上下文的偶数对齐宽高 - 连接初始化时多余屏幕重启(双端修复):
- 客户端(
ScreenManager.cpp):用本地保存的质量配置初始化CScreenSpy比特率,使服务端下发相同比特率的CMD_QUALITY_LEVEL时命中SetBitRate无变化分支,跳过重启 - 服务端(
ScreenSpyDlg.cpp):仅在自适应模式下且有缓存maxWidth时才发送CMD_SCREEN_SIZE,避免固定质量等级连接时触发第二次重启
- 客户端(
- 启动时恢复内存 DLL:客户端程序启动时,内存 DLL 未被正确还原,导致依赖该 DLL 的功能不可用;修复初始化顺序
- 授权客户端键盘日志目录冲突:多个授权客户端共享同一键盘日志目录时互相覆盖;现为每个授权客户端分配独立目录
升级提示
- Android 客户端为全新功能:已有 Windows / Linux / macOS 客户端不受影响;Android 客户端通过独立 APK 分发,需在 Android 设备上单独安装
- APK 每次更新后须重新 patch + 重签:APK 中的 IP / 端口 / 分组是编译期写死的,服务端迁移后需重新用 BuildDlg 生成并用
sign_apk.bat签名 - TOKEN_AUTH 签名向前兼容:旧版客户端无法验证签名字段,但不会报错(保留字段被忽略);新版客户端对旧服务端签名缺失同样静默兼容,不强制校验
- LicenseLimit 默认不限制:不设置
LicenseLimit字段(或置 0)则行为与以往完全一致,不影响现有子授权部署
Downloads
-
v1.3.6 Stable
released this
2026-06-14 07:41:11 +00:00 | 30 commits to main since this releasev1.3.6 (2026.6.14)
⚠️ 安全提示
本软件涉及远程控制功能,请谨慎下载,建议在虚拟机中测试。主控程序会连接授权服务器进行必要的通讯和防破解检测。下载并使用本软件,即视为接受上述条款。
ROI 区域捕获 & Web 音频流 & 主界面可用性全面提升
本次发布历时约 14 天,跨 25 次提交,围绕四条主线:服务端 ROI 区域捕获(Z 按钮拖选 + 客户端限定捕获区域,大幅节省带宽)、Web 远程桌面音频流(客户端 PCM 实时推送给浏览器,工具栏音频开关)、主控界面可用性全面补强(可拖拽分割条、消息日志面板开关、多处 CSV 导出)以及许可证工具链(
issue-tokenCLI + 匿名试用配额模式)。同期累积了 9 项 Bug 修复,涵盖 RTT 计算虚高、残留图像、缩略图误清、macOS 触控等多个长期痛点。
新功能
ROI 区域捕获(Z 按钮)
- 服务端 Z 按钮:工具栏新增 Z 按钮,点击后进入 ROI 待选状态;在远程画面上拖选矩形即可向客户端发送
COMMAND_SCREEN_ROI,将捕获区域限定在选框内——仅传输感兴趣区域,远端带宽按比例下降 - 客户端 ROI 捕获:
ScreenCapturerDXGI/CScreenSpy均已适配COMMAND_SCREEN_ROI;收到后重启屏幕采集,仅裁剪并传输指定矩形;发送{0,0,0,0}即清除 ROI、恢复全屏采集 - 状态机设计:Z 按钮三状态管理——Inactive(初始)→ Armed(Z 已点击,等待拖选)→ Active(ROI 已激活,Z 高亮蓝色);拖选框小于 20px 则自动回到 Armed 状态要求重新拖选
- 蓝色虚线选框:拖选过程中以
RGB(0, 120, 215)蓝色虚线实时绘制矩形,与红色缩放框(Q 按钮)、绿色截图框(S 按钮)视觉明确区分 - 坐标安全:ROI 坐标经
ScreenRectToImageRect()映射到原始分辨率空间,含max/min边界钳制,保证发出的坐标始终在[0, srcW] × [0, srcH]内;客户端收到w ≤ 0 || h ≤ 0的 ROI 时直接跳过裁剪,不调用applyROICrop,不会崩溃
与控制模式的交互:点击 Z 按钮时如果当前处于控制模式,系统自动先退出控制模式再进入 ROI 选择;已激活的 ROI 在进入控制模式后依然保持,不受影响
Web 远程桌面:音频流
- 客户端 PCM 音频转发:捕获客户端桌面音频,通过 WebSocket 实时推送给所有 Web 观察者,前端 Web Audio API 维持连续无中断播放缓冲
- 工具栏音频开关:Web 全屏工具栏新增 🔊 音频切换按钮,可即时开启 / 关闭音频接收;默认关闭,用户主动授权后开启,规避浏览器自动播放限制
Web 远程桌面:界面增强
- 实时带宽读出:Web 全屏页面右上角显示当前接收带宽(KB/s),辅助判断当前网络质量与编码效率
- 可折叠全屏工具栏:工具栏支持一键折叠 / 展开,折叠后画面可用区域最大化,适合单手操作场景(手机 / 平板)
- 主机备注随主机名显示:在线主机列表中主机名旁边同步展示备注(remark)字段,无需悬停或展开详情即可识别机器用途
服务端主界面可用性提升
- 可拖动分割条:主界面主机列表区域与消息日志区域之间新增可拖动分割条,拖动后布局实时响应,偏好自动持久化;替代之前固定比例的静态布局
- 消息日志面板一键切换(HideMsg):菜单新增 HideMsg 选项(带 checkmark 状态指示),一键隐藏 / 显示消息日志面板,方便只关注主机列表时释放垂直空间
- 在线主机信息 CSV 复制:右键选中一或多台在线主机后,可一键将 IP、机器名、备注等字段以 CSV 格式复制到剪贴板,直接粘贴 Excel 统计
- 消息日志 CSV 复制:消息日志面板支持选中任意多行后一键复制为 CSV,方便批量导出日志行做离线分析
Go 许可证工具链
issue-tokenCLI 子命令:yama-server issue-token直接在命令行签发包含权限声明的 JWT,运营人员无需访问 Web 界面即可快速为客户铸造授权 Token,输出可直接导入主控- 匿名试用模式 + 服务端配额强制:新增匿名试用路径,用户无需注册账号即可在全局配额内体验;服务端跟踪配额余量并在超额后拒绝新的试用申请,防止滥用
授权与安全
- AuthKernel 绑定机器 ID:AuthKernel 鉴权改用客户端机器 ID(Machine ID)作为唯一识别标识,解决多客户端部署场景下依赖 IP 识别不准确的问题
- 主控 / 服务端一键卸载菜单:主控界面菜单新增"卸载 Master / Server 软件"入口,可直接从主控触发受管端软件卸载流程,无需登录远端手动操作
改进
- macOS 质量配置文件适配:macOS 客户端现在正确读取质量配置(FPS / 比特率),并在分辨率超出限制时自动触发硬件降级缩放(HW resolution downscaling),与 Windows 端行为对齐
- 客户端构建特性开关宏:新增预处理器宏,可在构建期精细控制启用 / 禁用特定客户端模块,简化为不同合规场景或产品形态定制 binary
Bug 修复
- RTT 计算排除服务端 UI 队列延迟:之前 RTT 统计包含了服务端 UI 事件队列的调度等待时间,导致显示数值虚高;现在 RTT 仅统计纯网络往返时延
- 非自适应滚动模式下残留图像:在非自适应滚动模式下,远程帧边界外区域偶尔留有上一帧的残影;本版本在每次帧更新后主动清除帧外区域
- 子连接断开不再误清主机缩略图:RDP 等子连接断开时,主连接仍在线的主机缩略图被错误清除;已修正为仅在主连接真正断线时才清空缩略图
- Shellcode+AES 加载器构建修复:带 Shellcode+AES 加载器路径的 ServerDll / TinyRun 编译失败;已修复构建流程
- macOS 触控双击恢复 & 滚动速度修正:MAC 触控双击在特定操作后失效;同时将滚动步长从 10px 修正为 40px(与鼠标滚轮单格移动量一致)
- 单显示器捕获误触黑屏检测:单显示器配置下黑屏检测逻辑被误触发,导致捕获无端重启;单显示器路径现在跳过该检测
- 键盘输入日志定期落盘:键盘记录器每 10 分钟自动将缓冲区写入文件,防止进程意外退出时丢失尚在内存中的日志内容
- 重连时 share_list 出现重复子客户端:连接重建时未及时清理旧的共享列表条目,导致同一客户端在列表中出现多次;已在
share_list入口处加守卫 - 主界面列表列标题空白:
InitControl()调用时机晚于PostMessage,导致列宽初始化失败、列标题显示为空;已将调用移到PostMessage之前
升级提示
- ROI 功能为纯增量:无需客户端升级即可使用基础 ROI 发送功能(
COMMAND_SCREEN_ROI = 152);但要使客户端实际执行裁剪,客户端也需升级到 v1.3.6 - Web 音频默认关闭:音频流默认不推送,需要用户在工具栏点击开启——规避浏览器的自动播放策略;服务端无需额外配置
issue-token依赖 Go 主控:issue-token子命令仅在 Go 主控二进制中可用,MFC 主控无此命令行入口- 匿名试用配额:试用配额上限在服务端
config.ini中配置(TrialQuota);从 v1.3.5 升级时默认配额为 0(即关闭试用),需显式配置后生效
Downloads
- 服务端 Z 按钮:工具栏新增 Z 按钮,点击后进入 ROI 待选状态;在远程画面上拖选矩形即可向客户端发送
-
v1.3.5 Stable
released this
2026-05-31 15:38:52 +00:00 | 56 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 | 77 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 | 111 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 | 150 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 原生客户端