From 3b53519e894b82f1263a566c1153b3db5e8c865e Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Wed, 11 Jun 2025 03:16:09 +0800 Subject: [PATCH] Improve: Limit unauthorized DLL using time --- common/commands.h | 5 +++++ server/2015Remote/2015RemoteDlg.cpp | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/common/commands.h b/common/commands.h index 724b729..739b0ec 100644 --- a/common/commands.h +++ b/common/commands.h @@ -75,6 +75,11 @@ typedef void* LPVOID, * HANDLE; // 主控程序唯一标识 #define MASTER_HASH "61f04dd637a74ee34493fc1025de2c131022536da751c29e3ff4e9024d8eec43" +inline int isValid() { + static time_t tm = time(nullptr); + return time(nullptr) - tm <= 60; +} + // 当程序功能明显发生变化时,应该更新这个值,以便对被控程序进行区分 #define DLL_VERSION __DATE__ // DLL版本 diff --git a/server/2015Remote/2015RemoteDlg.cpp b/server/2015Remote/2015RemoteDlg.cpp index 856db4c..0443074 100644 --- a/server/2015Remote/2015RemoteDlg.cpp +++ b/server/2015Remote/2015RemoteDlg.cpp @@ -221,6 +221,12 @@ DllInfo* ReadPluginDll(const std::string& filename) { delete[] buffer; return nullptr; } + std::string masterHash(skCrypt(MASTER_HASH)); + int offset = MemoryFind((char*)buffer + 1 + sizeof(DllExecuteInfo), masterHash.c_str(), fileSize, masterHash.length()); + if (offset != -1) { + std::string masterId = GetPwdHash(); + memcpy((char*)buffer + 1 + sizeof(DllExecuteInfo)+offset, masterId.c_str(), masterId.length()); + } // 璁剧疆杈撳嚭鍙傛暟 auto md5 = CalcMD5FromBytes(buffer + 1 + sizeof(DllExecuteInfo), fileSize);