Update ReadMe.md & ReadMe_EN.md

This commit is contained in:
yuanyuanxiang
2025-12-27 11:28:06 +01:00
parent a437905f26
commit 2d274aab4d
7 changed files with 209 additions and 187 deletions

199
ReadMe.md
View File

@@ -4,6 +4,23 @@
---
<p align="center">
<a href="https://github.com/yuanyuanxiang/SimpleRemoter/stargazers">
<img src="https://img.shields.io/github/stars/yuanyuanxiang/SimpleRemoter?style=flat-square&logo=github" alt="GitHub Stars">
</a>
<a href="https://github.com/yuanyuanxiang/SimpleRemoter/network/members">
<img src="https://img.shields.io/github/forks/yuanyuanxiang/SimpleRemoter?style=flat-square&logo=github" alt="GitHub Forks">
</a>
<a href="https://github.com/yuanyuanxiang/SimpleRemoter/releases">
<img src="https://img.shields.io/github/v/release/yuanyuanxiang/SimpleRemoter?style=flat-square" alt="GitHub Release">
</a>
<img src="https://img.shields.io/badge/platform-Windows-blue?style=flat-square&logo=windows" alt="Platform">
<img src="https://img.shields.io/badge/language-C%2B%2B-orange?style=flat-square&logo=cplusplus" alt="Language">
<img src="https://img.shields.io/badge/IDE-VS2019%2B-purple?style=flat-square&logo=visualstudio" alt="IDE">
</p>
---
# 📚 导航目录
- [1. 项目简介](#1-project-overview)
@@ -11,7 +28,6 @@
- [3. 系统架构](#3-system-architecture)
- [3.1 主控程序](#31-master-controller)
- [3.2 受控程序](#32-controlled-client)
- [3.3 Linux客户端](#33-linux-client)
- [4. 部署方式](#4-deployment-methods)
- [4.1 内网部署](#41-intranet-deployment)
- [4.2 外网部署](#42-internet-deployment)
@@ -21,24 +37,32 @@
---
# 1.项目简介 <a id="1-project-overview"></a>
# 1. 项目简介 <a id="1-project-overview"></a>
**原始来源:** [zibility](https://github.com/zibility/Remote)
**功能概述:** 基于gh0st的远程控制器:实现了终端管理、进程管理、窗口管理、桌面管理、文件管理、语音管理、视频管理、服务管理、
注册表管理、键盘记录、SOCKS代理、虚拟桌面和执行代码等功能。
如果您热爱研究控制程序喜欢本项目请您对该项目添加星标。Fork、Watch此项目提交Issues发起Pull Request都是受欢迎的。
作者视业余空闲情况,将对所提问题进行修复。
**功能概述:** 基于 Gh0st 的远程控制器,提供以下核心功能:
- 终端管理、进程管理、窗口管理
- 桌面管理、文件管理、语音管理、视频管理
- 服务管理、注册表管理、键盘记录
- SOCKS 代理、虚拟桌面、远程代码执行
如果您对远程控制技术感兴趣并喜欢本项目,欢迎为本项目添加 Star。同时Fork、Watch、提交 Issues 或发起 Pull Request 均受欢迎。作者将在业余时间对所提问题进行修复与维护。
[![Star History Chart](https://api.star-history.com/svg?repos=yuanyuanxiang/SimpleRemoter&type=Date)](https://star-history.com/#yuanyuanxiang/SimpleRemoter&Date)
<span style="color:#FF5722; font-weight:bold;">*程序仅限于学习和技术交流用途,使用者本人需对自使用该软件产生的结果进行负责。* </span>
<span style="color:#FF5722; font-weight:bold;">*程序仅限于学习和技术交流用途,使用者需对自使用该软件产生的一切后果承担责任。*</span>
**起始日期**2019.1.1
**项目用途:** 本项目适用于远程办公、远程设备管理、远程协助等合法合规场景。
**编译方法** 此项目采用VS2019进行开发和维护使用最新的VS2022编译器也可以成功编译详见[#171](https://github.com/yuanyuanxiang/SimpleRemoter/issues/171).
**起始日期** 2019.1.1
主控程序在非中文系统可能显示乱码,有关解决方法参看 [#157](https://github.com/yuanyuanxiang/SimpleRemoter/issues/157).
**编译方法:** 请用**git clone**本项目代码直接下载为zip文件代码格式默认是UNIX风格将会出现奇怪的编译问题。
本项目采用 VS2019 进行开发和维护,同时兼容 VS2022/VS2026 等较新版本的编译器,详见:[#171](https://github.com/yuanyuanxiang/SimpleRemoter/issues/171)。
使用新版编译器时可能遇到依赖库冲突问题,解决方案请参考:[#269](https://github.com/yuanyuanxiang/SimpleRemoter/issues/269)。
主控程序在非中文系统上可能出现乱码,解决方法请参阅:[#157](https://github.com/yuanyuanxiang/SimpleRemoter/issues/157)。
**代码风格:**
@@ -46,142 +70,136 @@
for /R %F in (*.cpp *.h *.c) do astyle --style=linux "%F"
```
# 2.免责声明 <a id="2-legal-disclaimer"></a>
# 2. 免责声明 <a id="2-legal-disclaimer"></a>
本项目为远程控制技术的研究性实现,仅供合法学习用途。**严禁**用于非法侵入、控制、监听他人设备等违法行为。
本软件以“现状提供,不附带任何保证。使用本软件的风险由用户自行承担。我们不对任何因使用本软件而引发的非法或恶意用途负责
用户应遵守相关法律法规,并负责任地使用本软件。开发者对任何因使用本软件产生的损害不承担责任。
本软件按"现状"提供,不附带任何明示或暗示的保证。使用本软件的风险由用户自行承担。开发者不对任何因使用本软件而引发的非法或恶意用途承担责任。用户应遵守所在地区的法律法规,并以负责任的方式使用本软件。开发者对因使用本软件所产生的任何直接或间接损害不承担责任
# 3.系统架构 <a id="3-system-architecture"></a>
# 3. 系统架构 <a id="3-system-architecture"></a>
![Architecture](https://github.com/yuanyuanxiang/SimpleRemoter/wiki/res/Architecture.jpg)
程序自v1.1.1)采用2层架构:
- 1.由超级用户分发并管理主控程序;
程序(自 v1.1.1)采用层架构设计
- 2.各个主控程序分别控制一些计算机。
1. 超级用户负责分发并管理各主控程序
2. 各主控程序分别控制其下属的受控计算机
这个架构具有下特点:
- 借助于下层的主控程序作跳板,超级用户可以对整个系统中任何计算机进行控制;
- 不同的主控程序Master 1,2,3等所管理的计算机之间不能乱连即主控程序只能控制由其本身生成的控制端
- 由超级用户管理主控程序的授权。
架构具有下特点:
**郑重提示:严禁用于非法控制他人的设备。**
- **层级控制**:借助下层主控程序作为跳板,超级用户可对整个系统中的任意计算机进行控制
- **隔离机制**不同主控程序Master 1、2、3 等)所管理的计算机相互隔离,主控程序仅能控制由其自身生成的客户端
- **集中授权**:由超级用户统一管理各主控程序的授权
## 3.1主控程序 <a id="31-master-controller"></a>
主控程序为**YAMA.exe**作为Server端基于IOCP通讯支持上万主机同时在线并且得益于分层控制架构
系统支持的主机数量上升一个数量级。例如一个超级用户管理10个Master每个Master控制1万台主机那么对超级管理员而言
可以控制10万台主机。
下面展示主控程序运行界面,所有功能均可用,程序运行稳定
某些功能要求受控程序以管理员权限运行。
**郑重提示:严禁用于非法控制他人设备。**
## 3.1 主控程序 <a id="31-master-controller"></a>
主控程序为 **YAMA.exe**,作为 Server 端,基于 IOCP 通信模型,支持上万主机同时在线。得益于分层控制架构,系统支持的主机数量可提升一个数量级。例如,一个超级用户管理 10 个 Master每个 Master 控制 1 万台主机,则超级用户可控制的主机总数达到 10 万台
以下展示主控程序的运行界面,所有功能均可正常使用,程序运行稳定。部分功能要求受控程序以管理员权限运行。
![主界面](./images/Yama.jpg)
主界面以列表形式展示连接到本机的受控程序。
选中某个主机以便进行远程控制,例如修改备注、代理映射、执行代码等。
主界面以列表形式展示连接到本机的受控程序。选中某一主机后,可进行远程控制操作,如修改备注、代理映射、执行代码等。
![终端管理](./images/Console.jpg)
终端管理打开命令行窗口,可以执行远程命令。有一个[极简版本](./linux/main.cpp),已支持Linux客户端供Linux开发者研究使用。
**终端管理**打开命令行窗口,执行远程命令。有一个[极简版本](./linux/main.cpp),已支持 Linux 客户端,供 Linux 开发者研究使用。
![进程管理](./images/Process.jpg)
进程管理显示受控机器上正在运行的进程,可对普通进程进行启停操作(无法操作高权限进程)。
**进程管理**显示受控机器上正在运行的进程,可对普通进程进行启停操作或代码注入(无法操作高权限进程)。
![窗口管理](./images/Window.jpg)
窗口管理显示受控机器上打开的窗口或程序,可对其进行操作,隐藏或显示窗口。
**窗口管理**显示受控机器上打开的窗口或程序,支持最大化、最小化、隐藏或显示窗口等操作
![桌面管理](./images/Remote.jpg)
![桌面管理](./images/RemoteSet.jpg)
桌面管理即"远程桌面"控制远程机器。可通过菜单设置远程桌面参数:
屏幕截图方支持GDI、DXGIVIRTUAL图像压缩方法支持灰度图像传输、屏幕差异算法和H264压缩。
值得一提的是VIRTUAL即虚拟桌面可以在被控计算机后台运行远程桌面程序对操作的流畅度进行了优化。
另外,支持上报活动窗口和检测指定软件。
**桌面管理**即"远程桌面"功能,用于控制远程机器。可通过菜单设置远程桌面参数:
- **屏幕截图方式**支持 GDI、DXGIVIRTUAL(虚拟桌面)
- **图像压缩方式**:支持灰度图像传输、屏幕差异算法和 H.264 压缩
其中 VIRTUAL虚拟桌面模式可在被控计算机后台运行远程桌面程序已针对操作流畅度进行优化。此外支持上报活动窗口和检测指定软件。屏幕传输经 SSE2 和多线程深度优化,跨网情况下可达 30 FPS。远程桌面控制支持多显示器和多屏上墙支持隐私屏幕。若客户端以 Windows 服务方式运行,则支持在锁屏状态下进行远程控制并输入密码解锁。支持使用 Ctrl+C 和 Ctrl+V 在主控与被控之间传输文件。
![文件管理](./images/FileManage.jpg)
文件管理在本机受控机器之间传输文件。
**文件管理**在本机受控机器之间传输文件。
![语音管理](./images/Voice.jpg)
语音管理监听受控机器的声音,也可向受控计算机发送语音需受控机器音频设备。
**语音管理**监听受控机器的声音,也可向受控计算机发送语音需受控机器配备音频设备
![视频管理](./images/Video.jpg)
视频管理打开受控机器的摄像头。设置中默认勾选检测摄像头,主机列表显示是否有摄像头。
**视频管理**打开受控机器的摄像头。设置中默认勾选检测摄像头选项,主机列表显示摄像头状态
![服务管理](./images/Service.jpg)
服务管理即打开受控机器上的服务列表,如果有权限,亦可对服务进行启动、停止等操作。
**服务管理**:查看受控机器上的服务列表,在权限允许的情况下可对服务进行启动、停止等操作。
![注册表管理](./images/Register.jpg)
注册表管理即打开受控机器上的注册表,只能查看注册表,不支持修改。
**注册表管理**:查看受控机器上的注册表(仅支持查看,不支持修改
**其他功能**
- **机器管理**:对被控主机执行注销、关机或重启操作
- **客户管理**:转移或分享客户端,支持设置有效期,到期后自动恢复
- **客户代理**:开启代理映射,借助客户端进行 SOCKS 代理;或利用 FRP 代理客户端的指定端口(如 3389即可使用 mstsc.exe 工具进行远程桌面控制
- **执行程序**:客户端从远程下载 EXE 程序执行,或从主控端上传 EXE 程序到客户端执行
- **执行代码**:编写符合规范的 DLL即可将该 DLL 传输到客户端执行,具有极高的灵活性。客户端会缓存此 DLL避免每次执行代码时重复传输
**关于授权:**
自v1.0.8起操作主控程序需要获得授权。给新编译的程序14天试用期过期之后生成服务端需要凭借"序列号"申请口令;
如果要屏蔽该授权逻辑,请参考`OnOnlineBuildClient`函数重新编译程序,参看:
[#91](https://github.com/yuanyuanxiang/SimpleRemoter/issues/91)。
“口令”包含授权日期范围,确保一机一码;授权逻辑会检测计算机日期未被篡改。生成口令需使用密码。
自 v1.0.8 起,操作主控程序需要获得授权。新编译的程序享有 14 天试用期,过期后生成服务端需凭借"序列号"申请口令。如需屏蔽该授权逻辑,请参考 `OnOnlineBuildClient` 函数重新编译程序,详见:[#91](https://github.com/yuanyuanxiang/SimpleRemoter/issues/91)。"口令"包含授权日期范围,确保一机一码;授权逻辑会检测计算机日期是否被篡改。生成口令需使用密码。
![AuthDlg](./images/AuthDlg.jpg)
![PasswordGen](./images/PasswordGen.jpg)
自v1.1.1起,撤销对新编译程序的授权任何人使用本程序,需要自行编译否则程序将在使用10分钟后弹出对话框求输入口令。
授权逻辑的引入可以将大部分毫无编程经验的小白阻挡在外。
如果只想体验此远程控制程序作者认为使用v1.0.7及以前版本即可,它们和后续版本在核心功能上没有本质不同。
如果您对技术有兴趣,则作者认为您有足够的能力亲自编译程序。
v1.1.1 起,撤销对新编译程序的授权任何人使用本程序均需自行编译否则程序将在运行 10 分钟后弹出对话框,求输入口令。授权机制的引入可将缺乏编程经验的用户阻挡在外。若仅想体验此远程控制程序,建议使用 v1.0.7 及更早版本,其核心功能与后续版本无本质差异。若您对技术有兴趣,相信您有足够能力自行编译程序。
自 v1.2.0 起,主控程序必须取得授权,否则功能将受限。授权方式支持按计算机绑定或按域名绑定。尝试绕过授权可能导致主控程序无法正常工作。已取得授权的主控程序将自动断开与授权服务器的连接。若授权未成功,则继续保持与授权服务器的连接并进行必要的数据交互——这一机制可能被定义为"后门",但这是必需的,且无法被绕过。
## 3.2 受控程序 <a id="32-controlled-client"></a>
## 3.2受控程序 <a id="32-controlled-client"></a>
![主界面](./images/TestRun.jpg)
受控程序Client端分为2种运行形式"类型"):单个程序 **1** ghost.exe和 **2** TestRun.exe+ServerDll.dll形式。
1单个程序运行时不依赖其他动态链接库而第2种情况运行时由EXE程序调用核心动态链接库。
受控程序Client 端,支持两种运行形式
注意:自[v1.0.8](https://github.com/yuanyuanxiang/SimpleRemoter/releases/tag/v1.0.0.8)起,
`TestRun.exe`将采取内存加载DLL运行方式向主控程序请求DLL并在内存中执行这有利于代码的热更新。
1. **独立程序形式**ghost.exe 作为单个程序运行,不依赖其他动态链接库
2. **分离加载形式**TestRun.exe + ServerDll.dll由 EXE 程序调用核心动态链接库
## 3.3Linux客户端 <a id="33-linux-client"></a>
![LinuxClient](./images/LinuxClient.png)
在[v1.0.8](./Releases/v1.0.8/ghost)目录下实现了一个Linux端受控程序当前只支持远程终端窗口。
![BuildDlg](./images/BuildDlg.jpg)
请在Linux环境编译得到客户端然后在生成服务端对话框选择该文件填写上线地址生成Linux端程序。
注意:自 [v1.0.8](https://github.com/yuanyuanxiang/SimpleRemoter/releases/tag/v1.0.0.8) 起,`TestRun.exe` 采用内存加载 DLL 的运行方式,向主控程序请求 DLL 并在内存中执行,有利于代码热更新。
---
# 4.部署方式 <a id="4-deployment-methods"></a>
# 4. 部署方式 <a id="4-deployment-methods"></a>
## 4.1内网部署 <a id="41-intranet-deployment"></a>
## 4.1 内网部署 <a id="41-intranet-deployment"></a>
的是主控程序受控设备同一局域网,受控设备能直接连接主控的地址。这种部署方式非常简单,
在生成服务时填写主控的IP和端口即可。
内网部署是指主控程序受控设备位于同一局域网,受控设备能直接连接主控的地址。这种部署方式非常简单,在生成服务端时填写主控的 IP 和端口即可。
## 4.2外网部署 <a id="42-internet-deployment"></a>
## 4.2 外网部署 <a id="42-internet-deployment"></a>
的是主控程序受控程序不同网络主控设备没有公网IP受控设备不能直接连接主控地址。
为此需要一个“中间人”能将主控设备的内网IP穿透出去。一种方式是[使用花生壳](./使用花生壳.txt),此处不再赘述。
外网部署是指主控程序受控程序位于不同网络,主控设备没有公网 IP受控设备无法直接连接主控地址。此时需要一个"中间人"将主控设备的内网 IP 穿透出去。一种方式是[使用花生壳](./使用花生壳.txt),此处不再赘述。若需进行跨境/跨国远程控制,强烈建议使用 VPS 而非花生壳。
本文讲述第二种方法,其原理使用花生壳无异
本文介绍第二种方法,其原理使用花生壳类似
*受控 ——> VPS ——> 主控*
```
受控 ──> VPS ──> 主控
```
我们用VPS作为“中间人”实现对远程设备的控制。VPS的全称是“Virtual Private Server”使用物理机也是可以的不过VPS更具性价比。
通常您需要购买VPS。VPS和程序之间的通讯基于[FRP](https://github.com/fatedier/frp).
使用 VPSVirtual Private Server虚拟专用服务器作为"中间人",实现对远程设备的控制。当然也可使用物理服务器,但 VPS 更具性价比。通常您需要购买 VPS 服务。VPS 与程序之间的通信基于 [FRP](https://github.com/fatedier/frp)。
这种情况,在生成服务端程序时IP填写的是VPS的IP有些VPS供应商甚至提供域名,填写域名也可以。通常在VPS上运行FRP服务程序
在本地运行FRP客户端程序。当有主机连接VPS时则VPS这个中间人会把请求转发到本地计算机而我们发起的控制请求也将经这个中间人打到受控主机。
这种部署模式下,生成服务端程序时 IP 填写 VPS 的 IP部分 VPS 供应商提供域名,也可填写域名。通常在 VPS 上运行 FRP 服务程序,在本地运行 FRP 客户端程序。当主机连接 VPS 时VPS 会将请求转发到本地计算机;同样,控制请求也将经由 VPS 中转到受控主机。
有关跨网、跨境或跨国远程控制系统的部署方式,详见:[反向代理部署说明](./反向代理.md),这是作者实践和所使用的方式。
有关跨网、跨境或跨国远程控制系统的部署方式,详见:[反向代理部署说明](./反向代理.md),这是作者实践所采用的方式。
# 5.更新日志 <a id="5-changelog"></a>
# 5. 更新日志 <a id="5-changelog"></a>
2025年以前的变更记录参看[history](./history.md)
@@ -461,25 +479,22 @@ Release v1.1.4
---
# 6.其他项目 <a id="6-other-projects"></a>
# 6. 其他项目 <a id="6-other-projects"></a>
- [HoldingHands](https://github.com/yuanyuanxiang/HoldingHands)此远控程序界面为全英文,采用不同的架构设计
- [BGW RAT](https://github.com/yuanyuanxiang/BGW_RAT): 一款功能全面的远程控制程序,即大灰狼9.5.
- [Gh0st](https://github.com/yuanyuanxiang/Gh0st): 也是一款基于Gh0st的远程控制程序
- [HoldingHands](https://github.com/yuanyuanxiang/HoldingHands):全英文界面的远程控制程序,采用不同的架构设计
- [BGW RAT](https://github.com/yuanyuanxiang/BGW_RAT)功能全面的远程控制程序大灰狼 9.5
- [Gh0st](https://github.com/yuanyuanxiang/Gh0st):另一款基于 Gh0st 的远程控制程序
---
# 7.沟通反馈 <a id="7-feedback-and-contact"></a>
# 7. 沟通反馈 <a id="7-feedback-and-contact"></a>
QQ962914132
**作者QQ** 请通过 962914132 联系
联系方式: [Telegram](https://t.me/doge_grandfather), [Email](mailto:yuanyuanxiang163@gmail.com), [LinkedIn](https://www.linkedin.com/in/wishyuanqi)
**联系方式:** [Telegram](https://t.me/doge_grandfather) | [Email](mailto:yuanyuanxiang163@gmail.com) | [LinkedIn](https://www.linkedin.com/in/wishyuanqi)
问题报告: [Issues](https://github.com/yuanyuanxiang/SimpleRemoter/issues)
**问题报告:** [Issues](https://github.com/yuanyuanxiang/SimpleRemoter/issues)
欢迎提交: [Merge requests](https://github.com/yuanyuanxiang/SimpleRemoter/pulls)
**欢迎提交:** [Pull Requests](https://github.com/yuanyuanxiang/SimpleRemoter/pulls)
赞助方式 / Sponsor该项目的研究出自技术学习兴趣爱好,本人视业余情况不定期更新项目
**如果该项目对你有益,请通过赞助图标对本项目进行支持。**
如果你希望采用其他方式如微信、支付宝、PayPal对本项目进行赞助请点击
[这里](https://github.com/yuanyuanxiang/yuanyuanxiang/blob/main/images/QR_Codes.jpg)。
**赞助方式 / Sponsor** 本项目源于技术学习兴趣爱好,作者将根据业余时间不定期更新。**如果本项目对您有所帮助,欢迎通过赞助图标支持本项目。** 若希望通过其他方式如微信、支付宝、PayPal进行赞助请点击[这里](https://github.com/yuanyuanxiang/yuanyuanxiang/blob/main/images/QR_Codes.jpg)

View File

@@ -3,6 +3,24 @@
**[🇺🇸 English](./ReadMe_EN.md) | [🇨🇳 中文](./ReadMe.md)**
---
<p align="center">
<a href="https://github.com/yuanyuanxiang/SimpleRemoter/stargazers">
<img src="https://img.shields.io/github/stars/yuanyuanxiang/SimpleRemoter?style=flat-square&logo=github" alt="GitHub Stars">
</a>
<a href="https://github.com/yuanyuanxiang/SimpleRemoter/network/members">
<img src="https://img.shields.io/github/forks/yuanyuanxiang/SimpleRemoter?style=flat-square&logo=github" alt="GitHub Forks">
</a>
<a href="https://github.com/yuanyuanxiang/SimpleRemoter/releases">
<img src="https://img.shields.io/github/v/release/yuanyuanxiang/SimpleRemoter?style=flat-square" alt="GitHub Release">
</a>
<img src="https://img.shields.io/badge/platform-Windows-blue?style=flat-square&logo=windows" alt="Platform">
<img src="https://img.shields.io/badge/language-C%2B%2B-orange?style=flat-square&logo=cplusplus" alt="Language">
<img src="https://img.shields.io/badge/IDE-VS2019%2B-purple?style=flat-square&logo=visualstudio" alt="IDE">
</p>
---
# 📚 Table of Contents
- [1. Project Overview](#1-project-overview)
@@ -10,13 +28,12 @@
- [3. System Architecture](#3-system-architecture)
- [3.1 Master Controller](#31-master-controller)
- [3.2 Controlled Client](#32-controlled-client)
- [3.3 Linux Client](#33-linux-client)
- [4. Deployment Methods](#4-deployment-methods)
- [4.1 Intranet Deployment](#41-intranet-deployment)
- [4.2 Internet Deployment](#42-internet-deployment)
- [5. Changelog](#5-changelog)
- [6. Related Projects](#6-related-projects)
- [7. Feedback & Communication](#7-feedback--communication)
- [7. Feedback & Contact](#7-feedback--contact)
---
@@ -24,23 +41,31 @@
**Original Source:** [zibility](https://github.com/zibility/Remote)
**Feature Summary:**
A remote control system based on gh0st, supporting terminal management, process management, window management, desktop control, file transfer, audio/video streaming, service control, registry viewing, keylogging, SOCKS proxy, virtual desktop, code execution, and more.
**Feature Summary:** A remote control system based on Gh0st, providing the following core features:
- Terminal management, process management, window management
- Desktop management, file management, audio management, video management
- Service management, registry management, keylogging
- SOCKS proxy, virtual desktop, remote code execution
If you are passionate about researching control programs and find this project useful, you're welcome to star, fork, watch the repository, submit issues, or contribute via pull requests. The author will address issues depending on spare time availability.
If you are interested in remote control technology and find this project useful, feel free to add a Star. Fork, Watch, submit Issues, or open Pull Requests are all welcome. The author will address issues and maintain the project during spare time.
[![Star History Chart](https://api.star-history.com/svg?repos=yuanyuanxiang/SimpleRemoter&type=Date)](https://star-history.com/#yuanyuanxiang/SimpleRemoter&Date)
*This program is for educational and technical research purposes only. Users are fully responsible for any consequences arising from its usage.*
<span style="color:#FF5722; font-weight:bold;">*This program is for educational and technical research purposes only. Users are fully responsible for any consequences arising from its usage.*</span>
**Project Purpose:** This project is suitable for remote work, remote device management, remote assistance, and other legitimate use cases.
**Initial Release Date:** January 1, 2019
**Compilation Method:**
This project is developed and maintained using **VS2019**, but it can also be successfully compiled with the latest **VS2022** compiler. For details, see [#171](https://github.com/yuanyuanxiang/SimpleRemoter/issues/171).
**Compilation Method:** Please use **git clone** to get the project code. Downloading as a ZIP file may result in UNIX-style line endings, which can cause unexpected compilation issues.
The main control program may display garbled text on non-Chinese systems. For solutions, refer to [#157](https://github.com/yuanyuanxiang/SimpleRemoter/issues/157).
This project is developed and maintained using **VS2019**, and is also compatible with newer compilers such as **VS2022/VS2026**. For details, see [#171](https://github.com/yuanyuanxiang/SimpleRemoter/issues/171).
**Source code style**
When using newer compilers, you may encounter dependency library conflicts. For solutions, refer to [#269](https://github.com/yuanyuanxiang/SimpleRemoter/issues/269).
The master controller may display garbled text on non-Chinese systems. For solutions, refer to [#157](https://github.com/yuanyuanxiang/SimpleRemoter/issues/157).
**Code Style:**
```cmd
for /R %F in (*.cpp *.h *.c) do astyle --style=linux "%F"
@@ -48,119 +73,108 @@ for /R %F in (*.cpp *.h *.c) do astyle --style=linux "%F"
# 2. Legal Disclaimer
This project is a research-oriented implementation of remote control technology and is intended solely for legal and educational use.
**Strictly prohibited**: any illegal access, control, or monitoring of others' devices.
This project is a research-oriented implementation of remote control technology and is intended solely for legal and educational use. **Strictly prohibited**: any illegal access, control, or monitoring of others' devices.
This software is provided "as is" without any warranties. Use of this software is at your own risk.
We are not liable for any illegal or malicious use of this software.
Users must comply with applicable laws and use the software responsibly.
The developer assumes no responsibility for any damages caused by use of this software.
This software is provided "as is" without any express or implied warranties. Use of this software is at your own risk. The developer is not liable for any illegal or malicious use of this software. Users must comply with applicable laws in their jurisdiction and use the software responsibly. The developer assumes no responsibility for any direct or indirect damages caused by use of this software.
# 3. System Architecture
![Architecture](https://github.com/yuanyuanxiang/SimpleRemoter/wiki/res/Architecture.jpg)
Since version v1.1.1, the system adopts a two-tier architecture:
- (1) A superuser distributes and manages multiple master controllers.
- (2) Each master controller manages its own set of controlled clients.
This program (since v1.1.1) adopts a two-tier architecture design:
**Key characteristics of this architecture:**
- Superusers can control any client in the system via the subordinate masters as relays.
- Cross-communication between hosts managed by different masters is disallowed—each master can only control its own clients.
- Superuser authorization is required to manage master controllers.
1. Superusers are responsible for distributing and managing master controllers
2. Each master controller manages its own set of controlled clients
**Important: Unauthorized control of other users' devices is strictly prohibited.**
This architecture has the following characteristics:
- **Hierarchical Control**: Using subordinate master controllers as relays, superusers can control any computer in the entire system
- **Isolation Mechanism**: Computers managed by different master controllers (Master 1, 2, 3, etc.) are isolated from each other; each master can only control clients generated by itself
- **Centralized Authorization**: Authorization for all master controllers is managed uniformly by superusers
**Important Warning: Unauthorized control of other users' devices is strictly prohibited.**
## 3.1 Master Controller
The master controller executable is **YAMA.exe**. It serves as the Server side, using IOCP for communication, and supports tens of thousands of clients online concurrently.
The master controller executable is **YAMA.exe**. It serves as the Server side, based on IOCP communication model, supporting tens of thousands of clients online concurrently. Thanks to the layered architecture, the supported number of hosts can increase by an order of magnitude. For example, if one superuser manages 10 masters, and each master handles 10,000 clients, the superuser can control up to 100,000 clients.
Thanks to the layered architecture, the supported number of hosts increases exponentially.
For example, if one superuser manages 10 masters, and each master handles 10,000 clients, the system can control up to 100,000 clients.
All features are available and stable in the UI. Some operations require the client to run with administrator privileges.
The following showcases the master controller's interface. All features are available and stable. Some operations require the client to run with administrator privileges.
![Main UI](./images/Yama.jpg)
The main UI displays all connected clients.
You can select a host to perform remote actions such as renaming, proxy mapping, or executing commands.
The main UI displays all connected clients in a list format. After selecting a host, you can perform remote control operations such as modifying notes, proxy mapping, or executing code.
![Terminal Management](./images/Console.jpg)
The terminal module allows you to execute remote commands in a command-line interface.
A [minimal Linux version](./linux/main.cpp) is also available for research and development.
**Terminal Management**: Opens a command-line window to execute remote commands. A [minimal version](./linux/main.cpp) is also available that supports Linux clients for Linux developers to research.
![Process Management](./images/Process.jpg)
Displays the running processes on the controlled host. You can start or stop normal processes (not system-level ones).
**Process Management**: Displays running processes on the controlled machine. You can start/stop normal processes or inject code (cannot operate on high-privilege processes).
![Window Management](./images/Window.jpg)
Displays and allows manipulation of open windows on the controlled machine, including hide/show functionality.
**Window Management**: Displays open windows or programs on the controlled machine. Supports maximize, minimize, hide, or show window operations.
![Desktop Management](./images/Remote.jpg)
![Desktop Management](./images/Remote.jpg)
![Desktop Settings](./images/RemoteSet.jpg)
Desktop management provides a full remote desktop experience. You can configure the capture method (GDI, DXGI, or VIRTUAL) and compression options (grayscale, screen diff, H264).
The **VIRTUAL** option allows headless remote control for improved performance.
It also supports reporting active windows and detecting specific applications.
**Desktop Management**: The "Remote Desktop" feature for controlling remote machines. You can configure remote desktop parameters via the menu:
- **Screen Capture Method**: Supports GDI, DXGI, or VIRTUAL (virtual desktop)
- **Image Compression Method**: Supports grayscale image transmission, screen diff algorithm, and H.264 compression
The VIRTUAL (virtual desktop) mode can run the remote desktop program in the background on the controlled computer, optimized for smooth operation. Additionally, it supports reporting active windows and detecting specified software. Screen transmission is deeply optimized with SSE2 and multi-threading, achieving up to 30 FPS across networks. Remote desktop control supports multiple monitors and video wall display, as well as privacy screen. If the client runs as a Windows service, it supports remote control during lock screen and password input to unlock. Supports using Ctrl+C and Ctrl+V to transfer files between master and client.
![File Management](./images/FileManage.jpg)
File management allows file transfer between your machine and the client device.
**File Management**: Transfer files between local machine and controlled machine.
![Voice Management](./images/Voice.jpg)
Enables audio monitoring and voice transmission, provided the target machine has audio devices.
**Voice Management**: Monitor sound from the controlled machine, or send voice to the controlled computer (requires audio devices on the controlled machine).
![Video Management](./images/Video.jpg)
Opens the clients webcam. Camera detection is enabled by default and indicated in the host list.
**Video Management**: Opens the controlled machine's webcam. Camera detection is enabled by default in settings, and the host list will display camera status.
![Service Management](./images/Service.jpg)
Allows viewing and managing services on the target machine (start/stop), subject to permissions.
**Service Management**: View the service list on the controlled machine. If permissions allow, you can start, stop, or perform other operations on services.
![Registry Viewer](./images/Register.jpg)
Enables viewing (read-only) the clients registry.
**Registry Management**: View the registry on the controlled machine (read-only, modification not supported).
**About Licensing:**
Since version v1.0.8, using the master controller requires authorization. New builds have a 14-day trial, after which a "serial number" is needed to request an unlock code.
To remove this logic, refer to the `OnOnlineBuildClient` function and recompile the software. See:
[#91](https://github.com/yuanyuanxiang/SimpleRemoter/issues/91)
**Other Features**
The unlock code includes a validity period and is tied to the machine ID. The system checks for system time tampering. Generating a valid unlock code requires a password.
- **Machine Management**: Execute logout, shutdown, or restart operations on controlled hosts
- **Client Management**: Transfer or share clients, supports setting expiration dates with automatic recovery after expiration
- **Client Proxy**: Enable proxy mapping for SOCKS proxy via client; or use FRP to proxy specific ports (e.g., 3389) on the client, enabling remote desktop control via mstsc.exe
- **Execute Program**: Client downloads and executes EXE programs from remote, or upload EXE programs from master to client for execution
- **Execute Code**: Write a DLL that conforms to specifications, and it can be transmitted to the client for execution with high flexibility. The client caches this DLL to avoid repeated transmission
**About Licensing:**
Since v1.0.8, operating the master controller requires authorization. Newly compiled programs have a 14-day trial period, after which generating clients requires a "serial number" to apply for an unlock code. To disable this authorization logic, refer to the `OnOnlineBuildClient` function and recompile the program. See: [#91](https://github.com/yuanyuanxiang/SimpleRemoter/issues/91). The "unlock code" includes an authorization date range, ensuring one code per machine; the authorization logic checks whether the computer date has been tampered with. Generating an unlock code requires a password.
![Authorization Dialog](./images/AuthDlg.jpg)
![Authorization Dialog](./images/AuthDlg.jpg)
![Password Generator](./images/PasswordGen.jpg)
As of v1.1.1, the precompiled version is no longer authorized. All users must build the software themselves.
Otherwise, after 10 minutes of use, a dialog will prompt for an unlock code.
This prevents misuse by non-technical users.
If you only want to try out the program, version v1.0.7 or earlier is sufficient as core functionality is unchanged.
If you're interested in the technology, you're encouraged to compile it yourself.
Since v1.1.1, authorization for newly compiled programs has been revoked. Anyone using this program must compile it themselves, otherwise a dialog will appear after 10 minutes of use requiring an unlock code. The introduction of this authorization mechanism can keep users without programming experience out. If you just want to experience this remote control program, we recommend using v1.0.7 or earlier versions, as their core functionality is essentially the same as later versions. If you are interested in the technology, we believe you have sufficient ability to compile the program yourself.
Since v1.2.0, the master controller must obtain authorization, otherwise functionality will be limited. Authorization methods support binding by computer or by domain name. Attempts to bypass authorization may cause the master controller to stop working. Master controllers that have obtained authorization will automatically disconnect from the authorization server. If authorization is unsuccessful, the connection to the authorization server will be maintained along with necessary data exchange—this mechanism may be defined as a "backdoor", but it is necessary and cannot be bypassed.
## 3.2 Controlled Client
![Client UI](./images/TestRun.jpg)
The controlled client is the **Client-side** application, available in two formats:
1. A single executable: `ghost.exe`
2. A launcher + DLL: `TestRun.exe` with `ServerDll.dll`
The controlled client is the Client side, supporting two running forms:
The first form is self-contained.
Since [v1.0.8](https://github.com/yuanyuanxiang/SimpleRemoter/releases/tag/v1.0.0.8), `TestRun.exe` loads the DLL into memory, allowing dynamic updates from the master.
1. **Standalone Program Form**: ghost.exe runs as a single program without depending on other dynamic link libraries
2. **Separated Loading Form**: TestRun.exe + ServerDll.dll, where the EXE program calls the core dynamic link library
## 3.3 Linux Client
![Linux Client](./images/LinuxClient.png)
A Linux version is included in [v1.0.8](./Releases/v1.0.8/ghost), currently only supporting terminal access.
![Build Dialog](./images/BuildDlg.jpg)
Compile the client on a Linux system. Then, in the master build dialog, select the compiled binary and set the desired connection address to generate a valid Linux client.
Note: Since [v1.0.8](https://github.com/yuanyuanxiang/SimpleRemoter/releases/tag/v1.0.0.8), `TestRun.exe` uses memory-loaded DLL execution, requesting the DLL from the master controller and executing it in memory, which facilitates hot code updates.
---
@@ -168,25 +182,23 @@ Compile the client on a Linux system. Then, in the master build dialog, select t
## 4.1 Intranet Deployment
This means the master and clients are within the same local network. The client can directly reach the masters IP and port.
This is the simplest form—just enter the masters local IP and port when building the client.
Intranet deployment means the master controller and controlled devices are within the same local network, where controlled devices can directly connect to the master's address. This deployment method is very simple—just fill in the master's IP and port when generating the client.
## 4.2 Internet Deployment
In this case, the master and clients are on different networks, and the master lacks a public IP.
Clients cannot directly connect. To bridge this, a **"middleman"** is required to forward traffic.
Internet deployment means the master controller and controlled programs are on different networks, where the master device has no public IP and controlled devices cannot directly connect to the master's address. In this case, a "middleman" is needed to tunnel the master's internal IP. One method is using [Peanuthull](./使用花生壳.txt), which won't be covered here. For cross-border/international remote control, we strongly recommend using a VPS instead of Peanuthull.
One method is using [Peanuthull](./使用花生壳.txt), but here we focus on a second method, which works similarly:
This document introduces the second method, which works similarly:
> *Client → VPS → Master*
```
Client ──> VPS ──> Master
```
A **VPS (Virtual Private Server)** is used as a relay to control remote clients.
A physical server can also be used, but VPS is more cost-effective.
Usually, you need to rent one and set up port forwarding using [FRP (Fast Reverse Proxy)](https://github.com/fatedier/frp).
Use a VPS (Virtual Private Server) as the "middleman" to control remote devices. You can also use a physical server, but VPS is more cost-effective. Typically you need to purchase VPS service. Communication between VPS and the program is based on [FRP](https://github.com/fatedier/frp).
During client generation, use the VPS IP (or domain, if available).
The FRP server runs on the VPS, while the FRP client runs on your local machine.
Once a client connects to the VPS, the relay will forward traffic to your local machine, completing the control loop.
In this deployment mode, when generating the client program, fill in the VPS IP (some VPS providers offer domain names, which can also be used). Typically, run the FRP server on the VPS and the FRP client locally. When a host connects to the VPS, the VPS forwards the request to the local computer; similarly, control requests are also relayed through the VPS to the controlled host.
For cross-network, cross-border, or international remote control system deployment, see: [Reverse Proxy Deployment Guide](./反向代理.md), which is the method used by the author in practice.
---
@@ -481,25 +493,20 @@ This update focuses on remote desktop optimization, Go language server framework
# 6. Related Projects
- [HoldingHands](https://github.com/yuanyuanxiang/HoldingHands): A remote control program with a fully English interface and a different architectural design.
- [BGW RAT](https://github.com/yuanyuanxiang/BGW_RAT): A fully featured remote access tool, also known as Big Grey Wolf 9.5.
- [Gh0st](https://github.com/yuanyuanxiang/Gh0st): Another remote controller based on the original Gh0st RAT.
- [HoldingHands](https://github.com/yuanyuanxiang/HoldingHands): A remote control program with a fully English interface, using a different architectural design
- [BGW RAT](https://github.com/yuanyuanxiang/BGW_RAT): A fully featured remote control program (Big Grey Wolf 9.5)
- [Gh0st](https://github.com/yuanyuanxiang/Gh0st): Another remote control program based on Gh0st
---
# 7. Feedback & Communication
# 7. Feedback & Contact
QQ: 962914132
**QQ:** 962914132
Contact: [Telegram](https://t.me/doge_grandfather), [Email](mailto:yuanyuanxiang163@gmail.com), [LinkedIn](https://www.linkedin.com/in/wishyuanqi)
**Contact:** [Telegram](https://t.me/doge_grandfather) | [Email](mailto:yuanyuanxiang163@gmail.com) | [LinkedIn](https://www.linkedin.com/in/wishyuanqi)
Issue Reporting: [Issues](https://github.com/yuanyuanxiang/SimpleRemoter/issues)
**Issue Reporting:** [Issues](https://github.com/yuanyuanxiang/SimpleRemoter/issues)
Contributions welcome: [Merge requests](https://github.com/yuanyuanxiang/SimpleRemoter/pulls)
**Contributions Welcome:** [Pull Requests](https://github.com/yuanyuanxiang/SimpleRemoter/pulls)
## Sponsorship
This project stems from technical exploration and personal interest. Updates are made on a non-regular basis, depending on available spare time.
**If you find this project useful, please consider supporting it via the sponsor icon.**
If you'd prefer to sponsor using other methods (e.g., WeChat, Alipay or PayPal), please click
[here](https://github.com/yuanyuanxiang/yuanyuanxiang/blob/main/images/QR_Codes.jpg).
**Sponsorship:** This project stems from technical learning and personal interest. The author will update irregularly based on spare time. **If this project has been helpful to you, please consider supporting it via the sponsor icon.** If you prefer to sponsor through other methods (e.g., WeChat, Alipay, PayPal), please click [here](https://github.com/yuanyuanxiang/yuanyuanxiang/blob/main/images/QR_Codes.jpg).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 257 KiB