mirror of
https://github.com/yuanyuanxiang/SimpleRemoter.git
synced 2026-01-22 15:23:10 +08:00
Release v1.1.9
This commit is contained in:
42
ReadMe.md
42
ReadMe.md
@@ -388,6 +388,48 @@ Release v1.1.4
|
|||||||
* 插件: 添加示例插件项目供参考
|
* 插件: 添加示例插件项目供参考
|
||||||
* 新功能: 为进程管理添加 shellcode 注入功能
|
* 新功能: 为进程管理添加 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
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 6.其他项目 <a id="6-other-projects"></a>
|
# 6.其他项目 <a id="6-other-projects"></a>
|
||||||
|
|||||||
42
ReadMe_EN.md
42
ReadMe_EN.md
@@ -405,6 +405,48 @@ and adds a plugin example.
|
|||||||
* plugin: Add an example plugin project for reference
|
* plugin: Add an example plugin project for reference
|
||||||
* Feature: Add shellcode injection feature for process management
|
* Feature: Add shellcode injection feature for process management
|
||||||
|
|
||||||
|
**2025.12.14**
|
||||||
|
|
||||||
|
Release v1.1.9
|
||||||
|
|
||||||
|
This update focuses on improving client stability and running modes, optimizing remote desktop performance, and adding several practical features.
|
||||||
|
|
||||||
|
* Improve: Modify client/SimpleSCLoader.c
|
||||||
|
* Feature: Support anti black-screen in process management
|
||||||
|
* Improve: Add debug code for `SCLoader`
|
||||||
|
* Feature: Add `TinyRun.dll` to client building option
|
||||||
|
* fix: Viewing registry causing master program crash
|
||||||
|
* fix: Open password gen dialog will modify max connection
|
||||||
|
* Feature: Support recording video in remote desktop control
|
||||||
|
* Feature: Support client running as windows service
|
||||||
|
* Feature: Add parameters setting menu for master program
|
||||||
|
* Feature: Add menu to switch screen for remote control
|
||||||
|
* fix: Registry error and use [MT] to rebuild zlib, x264 and libyuv
|
||||||
|
* Feature: Add a startup progress display to the program
|
||||||
|
* Improve: Set multi-thread compression as a option for remote control
|
||||||
|
* Improve: Using SSE2 to improve bitmap compare speed
|
||||||
|
* Improve: Code style change and rebuild zstd with optimization options
|
||||||
|
* fix: Client dead issue and improve sending large packet
|
||||||
|
* Improve: Reduce new / delete memory frequency in IOCPServer
|
||||||
|
* fix: "std::runtime_error" causing crashes in some cases
|
||||||
|
* fix: TestRun (MDLL) configuration doesn't take effort
|
||||||
|
* Feature: Support build TestRun as windows service
|
||||||
|
* Improve: Master efficiency by using asynchronous message processing
|
||||||
|
* Improve: Ask for running master with administrator
|
||||||
|
* Feature: Add menu (online host) for injecting shellcode
|
||||||
|
* fix: `Ghost` run as windows service failed
|
||||||
|
* logs: Add log for FileUpload libraries and service installing
|
||||||
|
* fix: Use self-defined struct to replace char buffer
|
||||||
|
* fix: Disable SSE2 (which causes crash) while using DXGI
|
||||||
|
* fix (Windows Service): Remove the shit dropped by AI
|
||||||
|
* Improve: Change running client as admin to an option
|
||||||
|
* fix: AudioManager bug and remove struct dlgInfo
|
||||||
|
* fix: Register schedule task failed issue and add logs
|
||||||
|
* fix: Copy text between master and client need a delay
|
||||||
|
* Improve: Add `runasAdmin` to client building options
|
||||||
|
* fix: Client offline issue and virtual desktop opening issue
|
||||||
|
* Improve: Calculate unique ID for client program
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 6. Related Projects
|
# 6. Related Projects
|
||||||
|
|||||||
Binary file not shown.
@@ -88,7 +88,7 @@ IDR_WAVE WAVE "Res\\msg.wav"
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,0,1,8
|
FILEVERSION 1,0,1,9
|
||||||
PRODUCTVERSION 1,0,0,1
|
PRODUCTVERSION 1,0,0,1
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
@@ -106,7 +106,7 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "FUCK THE UNIVERSE"
|
VALUE "CompanyName", "FUCK THE UNIVERSE"
|
||||||
VALUE "FileDescription", "A GHOST"
|
VALUE "FileDescription", "A GHOST"
|
||||||
VALUE "FileVersion", "1.0.1.8"
|
VALUE "FileVersion", "1.0.1.9"
|
||||||
VALUE "InternalName", "ServerDll.dll"
|
VALUE "InternalName", "ServerDll.dll"
|
||||||
VALUE "LegalCopyright", "Copyright (C) 2019-2025"
|
VALUE "LegalCopyright", "Copyright (C) 2019-2025"
|
||||||
VALUE "OriginalFilename", "ServerDll.dll"
|
VALUE "OriginalFilename", "ServerDll.dll"
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -777,7 +777,7 @@ VOID CMy2015RemoteDlg::AddList(CString strIP, CString strAddr, CString strPCName
|
|||||||
m_CList_Online.SetItemData(i, (DWORD_PTR)ContextObject);
|
m_CList_Online.SetItemData(i, (DWORD_PTR)ContextObject);
|
||||||
}
|
}
|
||||||
std::string tip = flag ? " (" + v[RES_CLIENT_PUBIP] + ") " : "";
|
std::string tip = flag ? " (" + v[RES_CLIENT_PUBIP] + ") " : "";
|
||||||
ShowMessage("操作成功",strIP + tip.c_str() + "主机上线");
|
ShowMessage("操作成功",strIP + tip.c_str() + "主机上线[" + loc + "]");
|
||||||
LeaveCriticalSection(&m_cs);
|
LeaveCriticalSection(&m_cs);
|
||||||
Mprintf("主机[%s]上线: %s\n", v[RES_CLIENT_PUBIP].empty() ? strIP : v[RES_CLIENT_PUBIP].c_str(),
|
Mprintf("主机[%s]上线: %s\n", v[RES_CLIENT_PUBIP].empty() ? strIP : v[RES_CLIENT_PUBIP].c_str(),
|
||||||
std::to_string(id).c_str());
|
std::to_string(id).c_str());
|
||||||
@@ -1673,6 +1673,12 @@ void CMy2015RemoteDlg::OnOnlineUpdate()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string floatToString(float f) {
|
||||||
|
char buf[32];
|
||||||
|
snprintf(buf, sizeof(buf), "%.2f", f);
|
||||||
|
return std::string(buf);
|
||||||
|
}
|
||||||
|
|
||||||
void CMy2015RemoteDlg::OnOnlineDelete()
|
void CMy2015RemoteDlg::OnOnlineDelete()
|
||||||
{
|
{
|
||||||
// TODO: 在此添加命令处理程序代码
|
// TODO: 在此添加命令处理程序代码
|
||||||
@@ -1691,9 +1697,13 @@ void CMy2015RemoteDlg::OnOnlineDelete()
|
|||||||
context* ctx = (context*)m_CList_Online.GetItemData(iItem);
|
context* ctx = (context*)m_CList_Online.GetItemData(iItem);
|
||||||
m_CList_Online.DeleteItem(iItem);
|
m_CList_Online.DeleteItem(iItem);
|
||||||
m_HostList.erase(ctx);
|
m_HostList.erase(ctx);
|
||||||
|
auto tm = ctx->GetAliveTime();
|
||||||
|
std::string aliveInfo = tm >= 86400 ? floatToString(tm / 86400.f) + " d" :
|
||||||
|
tm >= 3600 ? floatToString(tm / 3600.f) + " h" :
|
||||||
|
tm >= 60 ? floatToString(tm / 60.f) + " m" : floatToString(tm) + " s";
|
||||||
ctx->Destroy();
|
ctx->Destroy();
|
||||||
strIP+="断开连接";
|
strIP+="断开连接";
|
||||||
ShowMessage("操作成功",strIP);
|
ShowMessage("操作成功",strIP + "[" + aliveInfo.c_str() + "]");
|
||||||
}
|
}
|
||||||
LeaveCriticalSection(&m_cs);
|
LeaveCriticalSection(&m_cs);
|
||||||
}
|
}
|
||||||
@@ -2531,7 +2541,11 @@ LRESULT CMy2015RemoteDlg::OnUserOfflineMsg(WPARAM wParam, LPARAM lParam)
|
|||||||
auto ctx = (context*)m_CList_Online.GetItemData(i);
|
auto ctx = (context*)m_CList_Online.GetItemData(i);
|
||||||
m_CList_Online.DeleteItem(i);
|
m_CList_Online.DeleteItem(i);
|
||||||
m_HostList.erase(ctx);
|
m_HostList.erase(ctx);
|
||||||
ShowMessage("操作成功", ip + "主机下线");
|
auto tm = ctx->GetAliveTime();
|
||||||
|
std::string aliveInfo = tm>=86400 ? floatToString(tm / 86400.f) + " d" :
|
||||||
|
tm >= 3600 ? floatToString(tm / 3600.f) + " h" :
|
||||||
|
tm >= 60 ? floatToString(tm / 60.f) + " m" : floatToString(tm) + " s";
|
||||||
|
ShowMessage("操作成功", ip + "主机下线[" + aliveInfo.c_str() + "]");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3718,9 +3732,13 @@ void CMy2015RemoteDlg::OnOnlineUninstall()
|
|||||||
context* ctx = (context*)m_CList_Online.GetItemData(iItem);
|
context* ctx = (context*)m_CList_Online.GetItemData(iItem);
|
||||||
m_CList_Online.DeleteItem(iItem);
|
m_CList_Online.DeleteItem(iItem);
|
||||||
m_HostList.erase(ctx);
|
m_HostList.erase(ctx);
|
||||||
|
auto tm = ctx->GetAliveTime();
|
||||||
|
std::string aliveInfo = tm >= 86400 ? floatToString(tm / 86400.f) + " d" :
|
||||||
|
tm >= 3600 ? floatToString(tm / 3600.f) + " h" :
|
||||||
|
tm >= 60 ? floatToString(tm / 60.f) + " m" : floatToString(tm) + " s";
|
||||||
ctx->Destroy();
|
ctx->Destroy();
|
||||||
strIP += "断开连接";
|
strIP += "断开连接";
|
||||||
ShowMessage("操作成功", strIP);
|
ShowMessage("操作成功", strIP + "[" + aliveInfo.c_str() + "]");
|
||||||
}
|
}
|
||||||
LeaveCriticalSection(&m_cs);
|
LeaveCriticalSection(&m_cs);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -329,7 +329,7 @@ public:
|
|||||||
virtual int GetServerPort() const = 0;
|
virtual int GetServerPort() const = 0;
|
||||||
virtual FlagType GetFlagType() const = 0;
|
virtual FlagType GetFlagType() const = 0;
|
||||||
virtual std::string GetGroupName() const = 0;
|
virtual std::string GetGroupName() const = 0;
|
||||||
|
virtual uint64_t GetAliveTime()const = 0;
|
||||||
public:
|
public:
|
||||||
virtual ~context() {}
|
virtual ~context() {}
|
||||||
virtual void Destroy() {}
|
virtual void Destroy() {}
|
||||||
@@ -381,6 +381,7 @@ public:
|
|||||||
ikcpcb* kcp = nullptr; // 新增,指向KCP会话
|
ikcpcb* kcp = nullptr; // 新增,指向KCP会话
|
||||||
std::string GroupName; // 分组名称
|
std::string GroupName; // 分组名称
|
||||||
CLock SendLock; // fix #214
|
CLock SendLock; // fix #214
|
||||||
|
time_t OnlineTime; // 上线时间
|
||||||
|
|
||||||
// 预分配的解压缩缓冲区,避免频繁内存分配
|
// 预分配的解压缩缓冲区,避免频繁内存分配
|
||||||
PBYTE DecompressBuffer = nullptr;
|
PBYTE DecompressBuffer = nullptr;
|
||||||
@@ -481,6 +482,10 @@ public:
|
|||||||
bLogin = FALSE;
|
bLogin = FALSE;
|
||||||
m_bProxyConnected = FALSE;
|
m_bProxyConnected = FALSE;
|
||||||
server = svr;
|
server = svr;
|
||||||
|
OnlineTime = time(0);
|
||||||
|
}
|
||||||
|
uint64_t GetAliveTime()const {
|
||||||
|
return time(0) - OnlineTime;
|
||||||
}
|
}
|
||||||
Server* GetServer()
|
Server* GetServer()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user