-
v1.4.0 Stable
released this
2026-10-07 12:06:38 +00:00 | 40 commits to main since this releasev1.4.0 (2026.10.7)
⚠️ 安全提示
本软件涉及远程控制功能,请谨慎下载,建议在虚拟机中测试。主控程序会连接授权服务器进行必要的通讯和防破解检测。下载并使用本软件,即视为接受上述条款。
SimplePlugins 功能迁移 & 远程交互增强 & MCP 扩展 & 国际化
本次发布历时约 35 天,跨 23 次提交。核心是将 SimplePlugins 的三个常用功能(文件管理 / 隐私屏幕 / 远程画板)原生迁移进 YAMA 客户端,以在线主机右键「实验功能」子菜单的形式交付;同时带来远程交谈、TCP/UDP 连接管理、主机管理等远程交互增强,MCP 服务端扩展出设备管理控制工具(进程 / 窗口 / 服务 / 电源),授权失败触发器,以及德语支持与语言切换等国际化改进。
新功能
SimplePlugins 功能迁移(实验功能)
- 文件管理:将 SimplePlugins 的
CFileManager/MasterEncoder/ Info-Zip 源码迁入客户端(client/file/,隔离在SimplePluginsFile命名空间避免与原生 FileManager 冲突);新增COMMAND_FILE_MANAGER_PLUGIN(163) 与LoopFileManagerPlugin,经 KernelManager 派生子连接,复用既有TOKEN_DRIVE_LIST_PLUGIN对话框路径 - 隐私屏幕(虚拟桌面):采集层重写而非照搬——
CScreenHideSpy改为继承 YAMA 的::CScreenSpy(vDesk=TRUE),采集与编码复用 YAMA 编码管线;新增COMMAND_PRIVATE_SCREEN_PLUGIN(164) 与LoopPrivateScreenPlugin,构造时发送TOKEN_BITMAPINFO_HIDE打开既有 HideScreenSpyDlg - 远程画板:
DrawingBoardMgr隔离在SimplePluginsDrawingBoard命名空间,在透明置顶分层窗口上绘制画笔路径与文字;服务端已有 CDrawingBoard 对话框与TOKEN_DRAWING_BOARD(151),新增COMMAND_DRAWING_BOARD_PLUGIN(165) 与LoopDrawingBoardPlugin,构造时发送TOKEN_DRAWING_BOARD - 菜单接线:在线主机右键菜单新增「实验功能」二级子菜单(文件管理 / 隐私屏幕 / 远程画板),并为三个菜单项配 16x16 图标(位图数组 66→69)
MCP 设备管理控制工具
- P7 管理控制工具:在单一
McpManage开关(并需McpReadonly=0)后新增kill_process/operate_window/control_service/power_action四个写工具 - ready→confirm 生命周期:写工具在其子连接上执行 ready→confirm,以新增 followUp / followUpSent 字段区分同一
TOKEN_*LIST的两次到达;写命令与后续刷新命令分两次Send2Client发出,之间以WaitSendIdle()(context.h / Server.h)排空出站缓冲,避免同一缓冲被并发 WSASend - 配置与入口:
McpSettingsDlg新增「管理操作」勾选(IDC_MCP_MANAGE),主工具栏新增 MCP 入口按钮;power_action走主连接 fire-and-forget(无确认)
远程交互增强
- 远程交谈(双向聊天):「远程交谈」工具栏按钮发送
COMMAND_CHAT(161),客户端派生子连接,CChatManager回复TOKEN_CHAT_START(62) 打开既有 CChat 对话框;客户端聊天窗口保持隐藏直到首条消息或屏幕锁命令,支持服务端触发屏幕锁 / 解锁 - TCP/UDP 连接管理:工具栏按钮(MCP 之后)打开对话框列出受管主机 TCP/UDP 连接,右键强制断开 IPv4 TCP;客户端
CConnectionsManager经 iphlpapi(GetExtendedTcpTable / GetExtendedUdpTable,IPv4+IPv6)枚举,服务端CConnectionsDlg提供排序列与右键菜单 - 主机管理:迁移 SimplePlugins 的
CMachineManager(进程 / 窗口 / 网络 / 软件 / IE 历史 / 收藏夹 / 服务 / 任务 / hosts 枚举 + 进程注入,经 yapi.hpp);COMMAND_MACHINE_MANAGE(162),认证子连接派生;工具栏按钮(远程交谈之后,复用 IDI_MACHINE 图标) - 远程桌面剪贴板按钮:工具栏新增「获取剪贴板」(C) 与「设置剪贴板」(P) 按钮(截图之后、最小化之前),复用
IDM_GET_CLIPBOARD/IDM_SET_CLIPBOARD系统菜单处理器,全屏模式下仍可达;按钮数 16→18,滑动动画宽度 640→720
触发器系统
- 授权失败触发:在现有「主机上线」触发之外新增
TRIGGER_AUTH_FAILED;主机授权失败时(V1 / V2,初始 TOKEN_AUTH 或后续心跳)服务端触发授权失败触发器并向客户端发送配置的插件 DLL,受既有ShouldLogAuth去重约束(持久失败主机每小时或状态变化时重触发一次);VerifyClientAuth增加 sender 参数使失败分支能触达活跃连接上下文;设置对话框改为按当前选中触发类型回显插件勾选(ReflectPluginsForType+CBN_SELCHANGE)
移动端音频
- iPhone 远程音频:iOS WebKit 无 WebM/Opus 的 Media Source Extensions,远程音频在 iPhone Safari / Chrome 静音;新增 Web Audio API 回退路径,用
opus-decoderWASM 解码 Opus 包并调度到 AudioContext;解码包改为自托管(Go 与 C++ 服务端均在/static/opus-decoder.min.js提供),不再依赖 CDN
画质与传输控制
- 远程桌面质量等级:新增「高级」菜单(「其他」之后),「远程桌面质量等级」对话框编辑 6 档 QualityProfile(最大 FPS / 最大宽度 / 编码算法 / 码率),网格全字段校验 + 恢复默认,OK 持久化到
[quality];服务端权威(LoadQualityProfilesFromCfg启动加载 +CMD_QUALITY_PROFILES下发) - 屏幕预览质量等级:「高级」菜单「屏幕预览质量等级」编辑 6 档 PreviewProfile(目标编码宽度 / JPEG 质量),持久化到
[preview];ChooseScreenPreviewParams改读配置 - 文件传输速度对话框:「高级」菜单新增,双向控制文件传输速度(不触碰 SimplePlugins);7 档预设(~0.3 MB/s 到新增 10 MB/s 档)+ 无限档,存
[transfer]ChunkKb / DurationMs;下载经CMD_FILE_SPEED(252) 下发到客户端
协议与部署
- Shine/HELL 协议选择:新增
ShareHostDlg「使用 Shine 协议」勾选(默认勾选),分享 / 传输主机时选择 Shine(0) 或 HELL(1);协议作为尾随冒号字段追加到载荷(IP:PORT:0/1/IP:PORT:days:0/1);客户端解析并持久化,旧客户端忽略新增字段,旧载荷回退 -1(内置 HELL) - Go Web UI 子路径部署:可选
YAMA_WEB_BASE_PATH将整个 Web UI(index / manifest / 静态资源 //health//api/devices//ws)挂载到 URL 前缀(如/remoter);__BASE_PATH__占位符服务时替换;MFC 服务端同步处理(剥离为 "");附 nginx / systemd / env-file 部署示例
国际化
- 德语(de_DE):第 4 种界面语言,
de_DE.ini与en_US.ini键逐字节一致(2028 行,零缺失、零错位);德语值用纯 ASCII 转写(ae / oe / ue / ss,因 GBK / CP936 架构无法编码变音符号);补齐 en_US 自身 7 处 value==key 漏翻 - 语言切换工具栏按钮:第 15 个工具栏按钮「Lang/语言」(帮助之后),中文读者无需懂英文即可切换语言;对话框标题双语(「切换语言 / Switch Language」),标签 / 按钮用中文源串
- 剩余字符串翻译补齐:最后一处未翻译中文界面串走
_TRF/_TR/_L(钱包校验、SOCKS 代理连接日志、文件管理器状态栏、机器信息进度),en_US / zh_TW 各 +24 条
改进
- 通知设置多行关键词输入:单行、分号分隔的关键词字段改为带垂直滚动条的多行编辑框,每行一个关键词;存储格式仍为分号分隔(兼容既有 notify.ini),加载 / 保存在新行与分号间互转并裁剪空行;加载时按 UTF-8 解码 matchPattern,修复非 ASCII 关键词往返
Bug 修复
- HTTP 分片续包状态机误判(进程列表 kill 后空列表):
HeaderParser::Parse对任意非 HTTP maskType 将m_bShouldUnmask重置为 FALSE,包括 HTTP 连接已越过 "POST " 头之后的续包;大包(>1460 字节进程列表)被 MSS 分片时,第二片将标志锁为 FALSE,导致后续新 HTTP 掩码包不再解掩码、被丢弃——表现为「首包成功、后续包消失」;仅在连接尚未确定为 HTTP 时清除标志 - 即时消息弹窗标题乱码:IDD_DIALOG 标题存为 UTF-8 而 .rc 声明
#pragma code_page(936)(GBK),资源编译器误解码致标题乱码;转为 GBK 匹配声明 - geo-IP 查询阻塞双击提示:双击主机时
IPConverter::GetGeoLocation在 UI 线程同步发起最多 3 次 HTTP 请求(各 5s 超时),即使未加载本地 IP 库(默认配置)结果也不展示;改为仅本地库加载时查询,并在进程内按 IP 缓存结果(函数级 static 保持 ABI 兼容) - 主机管理 IE 历史泄漏:IEnumSTATURL 字符串(su.pwcsUrl / su.pwcsTitle)以
CoTaskMemFree释放、释放枚举器、设置STATURL.cbSize - 隐私屏幕 0xCC 乱码日志:GetTitle / szClass 缓冲区零初始化
升级提示
- 实验功能为客户端特性:文件管理 / 隐私屏幕 / 远程画板三个「实验功能」需客户端升级至 v1.4.0 才可用;服务端已具备对应对话框与命令(
TOKEN_DRIVE_LIST_PLUGIN/TOKEN_BITMAPINFO_HIDE/TOKEN_DRAWING_BOARD) - MCP 管理控制工具默认关闭:kill_process / operate_window / control_service / power_action 需在「扩展 > MCP 设置」勾选「管理操作」并关闭只读、重启主控后启用
- 授权失败触发器:需在触发器设置对话框为「授权失败」类型配置插件,与既有「主机上线」触发相互独立
- 文件传输速度:上传速度在主控
InitFileUpload读取配置,重启后生效;下载速度经CMD_FILE_SPEED下发到客户端 - Shine/HELL 协议:默认勾选 Shine;旧客户端忽略新增字段回退内置 HELL,兼容旧服务端与 share_list 条目
Downloads
- 文件管理:将 SimplePlugins 的