Files
SimpleRemoter/ReadMe.md
2025-12-27 12:03:16 +01:00

25 KiB
Raw Blame History

🌐 语言 | Language

🇨🇳 中文 | 🇺🇸 English


GitHub Stars GitHub Forks GitHub Release Platform Language IDE


📚 导航目录


1. 项目简介

原始来源: zibility

功能概述: 基于 Gh0st 的远程控制器,提供以下核心功能:

  • 终端管理、进程管理、窗口管理
  • 桌面管理、文件管理、语音管理、视频管理
  • 服务管理、注册表管理、键盘记录
  • SOCKS 代理、虚拟桌面、远程代码执行

如果您对远程控制技术感兴趣并喜欢本项目,欢迎为本项目添加 Star。同时Fork、Watch、提交 Issues 或发起 Pull Request 均受欢迎。作者将在业余时间对所提问题进行修复与维护。

Star History Chart

本程序仅限于学习和技术交流用途,使用者需对自身使用该软件所产生的一切后果承担责任。

项目用途: 本项目适用于远程办公、远程设备管理、远程协助等合法合规场景。

起始日期: 2019.1.1

编译方法: 请用git clone本项目代码直接下载为zip文件代码格式默认是UNIX风格将会出现奇怪的编译问题。 本项目采用 VS2019 进行开发和维护,同时兼容 VS2022/VS2026 等较新版本的编译器,详见:#171

使用新版编译器时可能遇到依赖库冲突问题,解决方案请参考:#269

主控程序在非中文系统上可能出现乱码,解决方法请参阅:#157

代码风格:

for /R %F in (*.cpp *.h *.c) do astyle --style=linux "%F"

2. 免责声明

本项目为远程控制技术的研究性实现,仅供合法学习用途。严禁用于非法侵入、控制、监听他人设备等违法行为。

本软件按"现状"提供,不附带任何明示或暗示的保证。使用本软件的风险由用户自行承担。开发者不对任何因使用本软件而引发的非法或恶意用途承担责任。用户应遵守所在地区的法律法规,并以负责任的方式使用本软件。开发者对因使用本软件所产生的任何直接或间接损害不承担责任。

3. 系统架构

Architecture

本程序(自 v1.1.1 起)采用两层架构设计:

  1. 超级用户负责分发并管理各主控程序
  2. 各主控程序分别控制其下属的受控计算机

该架构具有以下特点:

  • 层级控制:借助下层主控程序作为跳板,超级用户可对整个系统中的任意计算机进行控制
  • 隔离机制不同主控程序Master 1、2、3 等)所管理的计算机相互隔离,主控程序仅能控制由其自身生成的客户端
  • 集中授权:由超级用户统一管理各主控程序的授权

郑重提示:严禁用于非法控制他人设备。

3.1 主控程序

主控程序为 YAMA.exe,作为 Server 端,基于 IOCP 通信模型,支持上万主机同时在线。得益于分层控制架构,系统支持的主机数量可提升一个数量级。例如,一个超级用户管理 10 个 Master每个 Master 控制 1 万台主机,则超级用户可控制的主机总数达到 10 万台。

以下展示主控程序的运行界面,所有功能均可正常使用,程序运行稳定。部分功能要求受控程序以管理员权限运行。

主界面

主界面以列表形式展示已连接到本机的受控程序。选中某一主机后,可进行远程控制操作,如修改备注、代理映射、执行代码等。

终端管理

终端管理:打开命令行窗口,执行远程命令。另有一个极简版本,已支持 Linux 客户端,供 Linux 开发者研究使用。

进程管理

进程管理:显示受控机器上正在运行的进程,可对普通进程进行启停操作或代码注入(无法操作高权限进程)。

窗口管理

窗口管理:显示受控机器上已打开的窗口或程序,支持最大化、最小化、隐藏或显示窗口等操作。

桌面管理 桌面管理

桌面管理:即"远程桌面"功能,用于控制远程机器。可通过菜单设置远程桌面参数:

  • 屏幕截图方式:支持 GDI、DXGI 或 VIRTUAL虚拟桌面
  • 图像压缩方式:支持灰度图像传输、屏幕差异算法和 H.264 压缩

其中 VIRTUAL虚拟桌面模式可在被控计算机后台运行远程桌面程序已针对操作流畅度进行优化。此外支持上报活动窗口和检测指定软件。屏幕传输经 SSE2 和多线程深度优化,跨网情况下可达 30 FPS。远程桌面控制支持多显示器和多屏上墙支持隐私屏幕。若客户端以 Windows 服务方式运行,则支持在锁屏状态下进行远程控制并输入密码解锁。支持使用 Ctrl+C 和 Ctrl+V 在主控与被控之间传输文件。

文件管理

文件管理:在本机与受控机器之间传输文件。

语音管理

语音管理:监听受控机器的声音,也可向受控计算机发送语音(需受控机器配备音频设备)。

视频管理

视频管理:打开受控机器的摄像头。设置中默认勾选检测摄像头选项,主机列表将显示摄像头状态。

服务管理

服务管理:查看受控机器上的服务列表,在权限允许的情况下可对服务进行启动、停止等操作。

注册表管理

注册表管理:查看受控机器上的注册表(仅支持查看,不支持修改)。

其他功能

  • 机器管理:对被控主机执行注销、关机或重启操作
  • 客户管理:转移或分享客户端,支持设置有效期,到期后自动恢复
  • 客户代理:开启代理映射,借助客户端进行 SOCKS 代理;或利用 FRP 代理客户端的指定端口(如 3389即可使用 mstsc.exe 工具进行远程桌面控制
  • 执行程序:客户端从远程下载 EXE 程序执行,或从主控端上传 EXE 程序到客户端执行
  • 执行代码:编写符合规范的 DLL即可将该 DLL 传输到客户端执行,具有极高的灵活性。客户端会缓存此 DLL避免每次执行代码时重复传输

关于授权:

自 v1.0.8 起,操作主控程序需要获得授权。新编译的程序享有 14 天试用期,过期后生成服务端需凭借"序列号"申请口令。如需屏蔽该授权逻辑,请参考 OnOnlineBuildClient 函数并重新编译程序,详见:#91。"口令"包含授权日期范围,确保一机一码;授权逻辑会检测计算机日期是否被篡改。生成口令需使用密码。

AuthDlg

PasswordGen

自 v1.1.1 起,撤销对新编译程序的授权。任何人使用本程序均需自行编译,否则程序将在运行 10 分钟后弹出对话框,要求输入口令。授权机制的引入可将缺乏编程经验的用户阻挡在外。若仅想体验此远程控制程序,建议使用 v1.0.7 及更早版本,其核心功能与后续版本无本质差异。若您对技术有兴趣,相信您有足够能力自行编译程序。

自 v1.2.0 起,主控程序必须取得授权,否则功能将受限。授权方式支持按计算机绑定或按域名绑定。尝试绕过授权可能导致主控程序无法正常工作。已取得授权的主控程序将自动断开与授权服务器的连接。若授权未成功,则继续保持与授权服务器的连接并进行必要的数据交互——这一机制可能被定义为"后门",但这是必需的,且无法被绕过。

3.2 受控程序

主界面

受控程序为 Client 端,支持两种运行形式:

  1. 独立程序形式ghost.exe 作为单个程序运行,不依赖其他动态链接库
  2. 分离加载形式TestRun.exe + ServerDll.dll由 EXE 程序调用核心动态链接库

注意:自 v1.0.8 起,TestRun.exe 采用内存加载 DLL 的运行方式,向主控程序请求 DLL 并在内存中执行,有利于代码热更新。


4. 部署方式

4.1 内网部署

内网部署是指主控程序与受控设备位于同一局域网内,受控设备能够直接连接主控的地址。这种部署方式非常简单,在生成服务端时填写主控的 IP 和端口即可。

4.2 外网部署

外网部署是指主控程序与受控程序位于不同网络,主控设备没有公网 IP受控设备无法直接连接主控地址。此时需要一个"中间人"将主控设备的内网 IP 穿透出去。一种方式是使用花生壳,此处不再赘述。若需进行跨境/跨国远程控制,强烈建议使用 VPS 而非花生壳。

本文介绍第二种方法,其原理与使用花生壳类似:

受控 ──> VPS ──> 主控

使用 VPSVirtual Private Server虚拟专用服务器作为"中间人",实现对远程设备的控制。当然也可使用物理服务器,但 VPS 更具性价比。通常您需要购买 VPS 服务。VPS 与程序之间的通信基于 FRP

在这种部署模式下,生成服务端程序时 IP 填写 VPS 的 IP部分 VPS 供应商提供域名,也可填写域名)。通常在 VPS 上运行 FRP 服务端程序,在本地运行 FRP 客户端程序。当主机连接 VPS 时VPS 会将请求转发到本地计算机;同样,控制请求也将经由 VPS 中转到受控主机。

有关跨网、跨境或跨国远程控制系统的部署方式,详见:反向代理部署说明,这是作者实践所采用的方式。

5. 更新日志

2025年以前的变更记录参看history

2025.01.12 修复被控程序关于远程桌面相关可能的2处问题#28 #29。增加对主控端列表窗口的排序功能#26 #27以便快速定位窗口、服务或进程。

发布一个运行非常稳定的版本v1.0.6该版本不支持在较老的Windows XP系统运行VS2019及以后版本已不支持XP工具集为此需要更早的VS。 您可以从GitHub下载最新的Release也可以clone该项目在相关目录找到。如果杀毒软件报告病毒这是正常现象请信任即可或者您可以亲自编译。

2025.02.01

参考Gh0st,增加键盘记录功能。实质上就是拷贝如下四个文件:

KeyboardManager.h、KeyboardManager.cpp、KeyBoardDlg.h、KeyBoardDlg.cpp

2025.04.05

发布 v1.0.7,主要修复或新增以下功能:

  • 更新第三方库,将压缩算法从 zlib 更换为 zstd旧版本 v1.0.6 仍兼容;
  • 支持编译为 Win64
  • 修复若干 Bug提高程序稳定性
  • 提升远程控制效率,新增更多位图压缩方式;
  • 对部分代码结构进行了重构。

2025.04.12

自 v1.0.7 于 4 月 5 日发布以来:

  • 功能改进:确保 Shelldlg 输入命令始终定位在末尾,并构建了一个简易的 Linux 客户端
  • 修复 Bug#62、#74、#75
  • 将原标志位 0x1234567 更改为更具可读性的字符串;改进构建服务功能,允许选择其他文件进行构建;
  • 增加展示用户活动和监控指定软件的功能;
  • 清理全局变量,使得一个程序中可以轻松创建多个客户端,便于测试主控端的负载能力;
  • 实现内存加载 DLL便于客户端程序热更新。

2025.04.21

发布 v1.0.8

  • 支持与其他主控共享在线主机;
  • 实现服务端生成授权的能力,增加序列号生成菜单;
  • 引入 HPSocket 库,为未来使用做准备,并引入静态 ffmpeg 库以支持构建 Win64 主控端;
  • 实现内存中运行 DLLTestRun 程序从主控请求 DLL 并在内存中执行。

2025.04.30

发布 v1.0.9

  • 更新客户端构建功能 / 一体化生成;主控仅接受由自身构建的客户端连接;
  • 优化授权功能。

2025.06.01

发布 v1.1.0

  • 修复IOCPClient 断开连接时清空缓冲区;
  • 实现 SOCKS 代理功能;
  • 增加菜单项,修改列表样式,添加日志记录;
  • 新增功能:增加一个用于执行 Shellcode 的 C 程序;
  • 新增功能:对服务器地址进行加密;
  • 新增特性:支持虚拟远程桌面监控;
  • 新增命令支持执行代码64位 DLL

2025.06.21

发布 v1.1.1:

自该版本开始,主控程序需要授权,并且会自动连接到授权服务器,您可以联系作者请求授权。 如果对这个有意见,请使用早期版本(<v1.0.8)。自行修改和编译程序,也可以解决该问题。

  • 修复:远程桌面算法不生效的问题
  • 新增:添加用于操作在线客户端的菜单项
  • 插件:新增远程聊天功能
  • 插件:新增浏览器数据解密功能
  • 插件:新增主机管理功能
  • 插件:新增虚拟桌面功能
  • 改进:#48 文件管理对话框支持排序
  • 新功能:主控支持 WinOS(银狐) 远控客户端RAT
  • 改进授权逻辑:支持在线授权主控端
  • 新功能:支持随机或多路连接,即多个域名随机上线或并发上线
  • 改进:新增弹窗以显示主机的详细信息
  • 改进客户端稳定性

2025.07.07

发布 v1.1.2:

  • 修复:键盘记录功能的问题
  • 安全:增强插件的授权机制
  • 修复:释放 CMachineDlg 对象时的内存泄漏问题
  • 修复:使用 Reverse Proxy 时显示错误的 IP 地址 (#147)
  • 新增:添加跳转到授权指南页面的菜单项
  • 插件:新增一个文件管理模块
  • 优化:减少主程序中的冗余代码
  • 修复:在后台数据处理过程中关闭窗口导致的崩溃问题
  • 优化:移除读取注册表时的冗余代码
  • 架构调整:重构 TCP 客户端/服务器代码;重写套接字服务器逻辑
  • 新功能:支持同时监听多个端口
  • 新功能:支持客户端通过 UDP 连接新增客户端协议选择TCP/UDP
  • 插件:#145 支持远程画板功能
  • 插件:增加远程桌面隐私屏幕功能

2025.07.19

Release v1.1.3

  • 添加加密和解密函数
  • 修改弹出消息为通过 NM_DBLCLK 触发
  • 改进:将 DLL 数据保存到注册表中
  • 新功能:支持 HTTP 协议并添加构建选项
  • 新功能:为客户端构建添加加密选项
  • 改进:减少鼠标移动消息的传输
  • 修复:在操作高权限窗口时失去控制的问题
  • 改进:通过异常处理提升客户端稳定性
  • 新功能:远程桌面支持多显示器
  • 改进:支持授权在线主机数量
  • 修复:#159 在 TestRun 注入模式下授权无效的问题

2025.07.29

Release v1.1.4

  • 修复:限制使用 UDP 的在线主机数量
  • 新功能:实现基于 UDP 的 KCP 协议
  • 改进:为构建客户端添加随机协议选项
  • 新功能:支持远程桌面自适应窗口大小
  • 新功能:添加菜单项用于生成 shellcode
  • 新功能:支持将客户端分配给其他主控端
  • 新功能:支持将客户端添加到监视列表
  • 改进:避免客户端计算机进入睡眠状态
  • 修复:#170 移除对 VCOMP140.dll 的依赖
  • 改进:显示客户端应用程序版本
  • 修复:每周刷新一次客户端公网 IP

2025.08.08

发布版本 v1.1.5

此版本重点提升了远程控制体验(尤其是多屏支持和鼠标/全屏行为)、增强了集成性与权限管理,并解决了若干关键性 Bug。

  • 新功能:新增以管理员身份运行客户端程序的功能
  • 新功能:将 frp 客户端集成至主程序中
  • 改进:显示非活跃锁定客户端的状态
  • 清理:移除旧版本历史记录
  • 修复:#176 #177 桌面控制功能异常的问题
  • 改进:在当前显示器上进入全屏模式
  • 修复:窗口中显示正确的鼠标光标状态
  • 改进:支持多屏桌面监控
  • 修复:虚拟桌面控制支持多显示器
  • 修复:按下 F1 键时避免自动打开网页

2025.09.11

发布版本 v1.1.6

本次更新新增了客户端压缩和构建配置功能,支持多屏幕显示(视频墙);优化了性能(如多线程压缩和 RTT 机制);修复了通信协议和注入相关问题。

  • 功能:构建客户端时支持压缩选项
  • 修复:#182 第一次命令使用 HTTP 协议
  • 优化:为客户端启用 zstd 多线程压缩
  • 优化Master 使用 ZSTD_DCtx并启用新的 RTT
  • 修复:改进注册表创建和 shellcode 注入
  • 优化getPublicIP 可能失败并阻塞主程序的问题
  • 功能:支持设置客户端构建标志
  • 功能:新增客户端 shellcode 构建选项
  • 功能:支持多个远程显示器(视频墙)

2025.10.12

发布版本 v1.1.7

增加新工具、自动删除客户端、修复 IP 问题,并加入私有远程桌面代码。

  • 功能:添加数字货币地址劫持功能(仅供研究)
  • 功能:#193 首次运行后自动删除客户端
  • 功能:添加用于更改 exe 文件图标的工具菜单
  • 修复:#195 客户端获取公网 IP 失败
  • 功能:添加卸载客户端程序的菜单
  • 功能:添加远程桌面隐私屏幕源代码

2025.11.15

发布版本 v1.1.8

本次更新修复多项稳定性与安全性问题、增强远程控制中的剪贴板与文件操作功能,并加入插件示例。

  • 修复: #204 将套接字连接改为非阻塞模式
  • 风格: 格式化源代码并支持客户端分组
  • 修复: 在注册表中保存 shellcode 并在可能时使用
  • 新功能: 添加机器注销、关机和重启命令
  • 修复: UpdateClientClipboard 可能会丢失最后一个字母
  • 新功能: 支持使用 Ctrl+V 从远程复制文本
  • 修复: #210 保存解码缓冲区时的栈溢出
  • 修复: #212 printf 的未定义行为
  • 修复: #185 和 #214
  • 新功能: 远程控制中支持文件复制/粘贴
  • 新功能 & 修复: 在主程序中显示用户名
  • 改进: 在生成通行码时生成 HMAC
  • 新功能: 添加加载 bin 文件以测试 shellcode 的菜单
  • 修复: 更新钱包地址时无需重启客户端
  • 新功能: 添加构建和测试 AES 加密 shellcode 的菜单
  • 新功能: 支持使用 pe_to_shellcode 转换 PE
  • 插件: 添加示例插件项目供参考
  • 新功能: 为进程管理添加 shellcode 注入功能

2025.12.14

发布版本 v1.1.9

本次更新重点提升客户端稳定性与运行模式、优化远程桌面性能,并新增多项实用功能。

  • 改进: 修改 client/SimpleSCLoader.c
  • 功能: 在进程管理中支持反黑屏功能
  • 改进: 为 SCLoader 添加调试代码
  • 功能: 在客户端构建选项中添加 TinyRun.dll
  • 修复: 查看注册表导致主控程序崩溃的问题
  • 修复: 打开密码生成对话框会修改最大连接数
  • 功能: 在远程桌面控制中支持录制视频
  • 功能: 支持客户端以 Windows 服务方式运行
  • 功能: 为主控程序添加参数设置菜单
  • 功能: 在远程控制中添加切换屏幕的菜单
  • 修复: 注册表错误,并使用 [MT] 重新编译 zlib、x264 和 libyuv
  • 功能: 为程序添加启动进度显示
  • 改进: 将多线程压缩设置为远程控制的可选项
  • 改进: 使用 SSE2 提升位图比较速度
  • 改进: 代码风格调整,并使用优化选项重新编译 zstd
  • 修复: 客户端死机问题,改进大数据包发送
  • 改进: 减少 IOCPServer 中 new/delete 内存的频率
  • 修复: 某些情况下 "std::runtime_error" 导致崩溃
  • 修复: TestRun (MDLL) 配置不生效的问题
  • 功能: 支持将 TestRun 构建为 Windows 服务
  • 改进: 通过异步消息处理提升主控端效率
  • 改进: 请求以管理员身份运行主控程序
  • 功能: 为在线主机添加 shellcode 注入菜单
  • 修复: Ghost 以 Windows 服务方式运行失败
  • 日志: 为 FileUpload 库和服务安装添加日志
  • 修复: 使用自定义结构体替代 char 缓冲区
  • 修复: 使用 DXGI 时禁用 SSE2会导致崩溃
  • 修复 (Windows 服务): 移除 AI 产生的冗余代码
  • 改进: 将客户端以管理员运行改为可选项
  • 修复: AudioManager 错误,移除 struct dlgInfo
  • 修复: 注册计划任务失败的问题,并添加日志
  • 修复: 主控和客户端之间复制文本需要延迟
  • 改进: 在客户端构建选项中添加 runasAdmin
  • 修复: 客户端离线问题和虚拟桌面打开问题
  • 改进: 为客户端程序计算唯一 ID

2025.12.25

发布版本 v1.2.0

本次更新主要涉及远程桌面优化、Go 语言服务端框架、授权系统改进以及多项 Bug 修复。

  • 功能: 新增 Go 语言 TCP 服务端框架
  • 功能: 使用 frpc.dll 代理客户端 TCP 端口
  • 功能: 支持上传/下载并运行可执行文件
  • 功能: 为远程桌面控制添加重连逻辑
  • 功能: 完善客户端重新分组逻辑并添加日志控制
  • 功能: 添加客户端向主控端发送消息的命令
  • 功能: 支持生成绑定域名的口令
  • 改进: 4K 远程桌面缩放至 1080P 显示 (#267)
  • 改进: 使用弹出对话框退出全屏(移除 F11 快捷键)
  • 改进: 支持向远程桌面发送 WIN 键
  • 改进: 更改客户端程序的注册表/互斥锁名称
  • 改进: 主机上线通知改为异步消息处理
  • 改进: 添加 HMAC 验证主控端口令
  • 修复: 远程桌面相关的小问题
  • 修复: 使用 PowerShell 获取硬件信息Windows 7 及以上)
  • 修复: 窗口未使用 DWM 渲染时远程屏幕黑屏问题
  • 修复: 非默认分组客户端显示在默认列表的问题
  • 修复: 日期验证导致主控程序 UI 阻塞的问题
  • 修复: 操作 CharMsg 时的栈溢出问题
  • 修复: 重写 FRPC 设置文件前先删除旧文件
  • 修复: 撤销在 ProgramData 中复制并运行客户端程序的更改
  • 服务端: Go 语言授权客户端验证成功后自动退出

6. 其他项目

  • HoldingHands:全英文界面的远程控制程序,采用不同的架构设计
  • BGW RAT:功能全面的远程控制程序(大灰狼 9.5
  • Gh0st:另一款基于 Gh0st 的远程控制程序

7. 沟通反馈

作者QQ 请通过 962914132 联系

联系方式: Telegram | Email | LinkedIn

问题报告: Issues

欢迎提交: Pull Requests

赞助方式 / Sponsor 本项目源于技术学习与兴趣爱好,作者将根据业余时间不定期更新。如果本项目对您有所帮助,欢迎通过赞助图标支持本项目。 若希望通过其他方式如微信、支付宝、PayPal进行赞助请点击这里