《SimplePatch》C++ 記憶體修改庫 快速閱讀精華
- 🚀 極速開發體驗:
這是一款 Header-only 的 C++ 函式庫,不需要繁瑣的編譯設定,只要把標頭檔 `#include` 進去,馬上就能開始寫外掛功能。
- 🛡️ 強大隱匿與反偵測 (v1.1):
- 新增 Stealth 類別:支援 PEB 斷鏈 (Unlinking)、執行緒隱藏 (Thread Hiding) 與 PE 標頭抹除,大幅降低被偵測的風險。
- 新增 Syscall 類別:支援直接系統呼叫 (Direct Syscall),可繞過一般防毒或反作弊對 API 的監控。
- 🔧 全方位記憶體工具:
內建特徵碼掃描 (Pattern Scanning)、VTable Hook、記憶體補丁 (Patching) 以及無 CRT (C Runtime) 依賴設計,適合追求極致輕量的開發者。
開發者的痛點與解方
是不是每次想寫一個簡單的遊戲輔助工具,光是處理模組載入、記憶體掃描、Hook 函式這些基礎建設,就花掉你大半的時間?而且市面上的函式庫往往過於龐大,編譯起來又有一堆相依性問題,讓人頭痛不已。
別擔心,這篇攻略要介紹的工具就是為了解決這個核心煩惱而生的。SimplePatch 就像是記憶體修改界的瑞士刀,體積輕巧卻功能強大。因為它是 Header-only(僅需標頭檔)的設計,你不需要額外編譯靜態庫或動態庫,直接把它丟進你的專案裡就能用。無論你是想做記憶體補丁、掃描特徵碼,還是進行進階的 Hook 操作,它都能幫你輕鬆搞定。
接下來,我們將帶大家深入了解這款工具,特別是 v1.1 版本帶來的強大「隱匿功能」,這絕對是想挑戰繞過檢測的開發者不可錯過的神器。
核心功能詳解:為何選擇 SimplePatch?
SimplePatch 的設計初衷就是「簡單」與「直接」。我們實際測試後發現,它的風格與知名的 MemCury 類似,但在使用上更為直觀。以下是我們為大家整理的幾個關鍵功能:
- 📦 Header-only 設計: 這是最方便的一點,容易整合進任何 C++ 專案中,隨插即用。
- 🔍 特徵碼掃描 (Signature Scanning): 支援一般的位元組掃描,也支援字串參照掃描,幫你快速定位記憶體位址。
- ⚡ 基礎 ASM 補丁: 內建 NOP (空指令) 與 RET (返回) 的快速修改功能,不用自己手寫組語。
- hook Detour Hooks: 支援標準的 5-byte JMP Hook,輕鬆攔截函式執行流程。
- 🧬 VTable Hook: 針對 C++ 虛擬表格的 Hook 與還原功能,修改物件行為更方便。
- 🚫 無 CRT 依賴: 程式碼不依賴 C Runtime,這意味著編譯出來的檔案更小、更乾淨,減少了不必要的特徵。
- 🖥️ 直接 PEB 存取: 可以直接操作 Process Environment Block (PEB),獲取系統底層資訊。
v1.1 重大更新:隱匿性與 Syscall
在 v1.1 版本中,作者加入了許多進階功能,我們認為這才是這款工具真正的精華所在。這些功能主要是參考了 wraith-rs 的 Rust Abstractions for Windows Internals 概念:
- 👻 Stealth 類別 (隱匿模式):
這是開發者最愛的功能。它包含了 PEB Unlinking (將模組從 PEB 鏈表中移除,讓一般工具看不到你的 DLL)、Thread Hiding (隱藏執行緒) 以及 PE Header Erasing (抹除 PE 標頭)。這些技術組合起來,能顯著提升輔助工具的生存率。
- 📞 Syscall 類別 (系統呼叫):
這個功能允許你直接進行系統呼叫 (Direct Syscall),支援透過索引 (Index) 或名稱來呼叫函式,甚至獲取函式指標。
【小知識】 為什麼要用 Syscall?因為很多反作弊系統會 Hook 應用層的 API (如 kernel32.dll 的函式) 來監控你的行為。直接使用 Syscall 可以繞過這些監控層,直接與核心溝通,大大降低被攔截的機率。
實戰教學:如何使用代碼
使用 SimplePatch 非常簡單,你只需要包含它的標頭檔即可。下面我們提供了一個實際的應用範例,展示如何找到 `ntdll.dll`,定位到 `DbgUiRemoteBreakin` 函式,並對其進行 Hook。
完整範例程式碼
這段程式碼展示了從模組獲取、特徵碼掃描到函式攔截的完整流程。你可以直接參考這個架構來開發你的功能。
範例程式碼說明:
1. 首先透過 `simplepatch::module` 獲取 ntdll 模組。
2. 使用 `exported` 方法找到 `DbgUiRemoteBreakin` 的位址。
3. 示範如何使用 `simplepatch::scanner::sigscan` 在當前模組中掃描特徵碼 (這裡是找第一個 RET 指令)。
4. 最後建立一個 `hook` 物件,將目標函式導向到我們自定義的 `hk_dbgbreak` 函式。
- #include "lib/include.h"
- void init()
- {
- auto ntdll = simplepatch::module("ntdll.dll");
- if (!ntdll)
- {
- printf("[!] failed to find ntdll\n");
- return;
- }
-
- auto dbgbreak = ntdll.exported("DbgUiRemoteBreakin");
- if (!dbgbreak)
- {
- printf("[!] failed to find DbgUiRemoteBreakin\n");
- return;
- }
-
- HMODULE mod = GetModuleHandleA(nullptr);
-
- // find the first ret instruction
- printf("[-] first ret [url=home.php?mod=space&uid=16575]@[/url] 0x%p\n", simplepatch::scanner::sigscan("3C", mod) - (uintptr_t)mod);
-
-
- printf("[*] DbgUiRemoteBreakin @ 0x%p\n", dbgbreak);
-
- simplepatch::hook dbgbreak_hook;
- dbgbreak_hook.detour_func(dbgbreak, hk_dbgbreak);
-
- printf("[+] patched successfully!\n");
- }
複製代碼
檔案下載點 🔽
這裡提供了最新的 v1.1 版本下載。此版本包含了上述提到的所有新功能,如 Syscall 與 Stealth 類別。
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
風險聲明與注意事項
重要提醒:
本工具屬於開發輔助性質,涉及記憶體讀寫與核心操作。雖然 v1.1 加入了隱匿功能,但並不保證能 100% 繞過所有反作弊系統。
- ⚠️ 使用風險: 修改遊戲記憶體可能導致帳號被封鎖,請務必在單機環境或使用小號進行測試。
- ⚠️ 技術門檻: 本工具需要具備一定的 C++ 與作業系統底層知識 (如 PE 結構、記憶體管理),若操作不當可能會導致遊戲崩潰。
- ⚠️ 免責聲明: 本文僅供技術研究與學術交流,請勿用於破壞遊戲平衡或非法用途。
SimplePatch_常見問題Q&A
Q:這個庫需要安裝什麼額外的軟體嗎?
不需要。它是 Header-only 的,只要你有支援 C++ 的編譯器(如 Visual Studio)並將標頭檔加入專案即可編譯。
Q:v1.1 的「隱匿模式」真的能防封號嗎?
它提供了比一般方法更強的隱匿手段(如斷鏈 PEB),能躲過簡單的檢查。但在面對強力反作弊(如 BattlEye 或 EAC)時,單靠這些可能還不夠,通常還需要驅動層面的配合。
Q:為什麼代碼範例裡沒有看到 CRT 函式庫的初始化?
因為 SimplePatch 設計上不依賴 CRT。這讓它非常適合用來編寫 Shellcode 或是需要極致精簡的 DLL 注入模組。
Q:我可以用這個工具來修改 64 位元的遊戲嗎?
可以。此工具支援 Windows 平台,且根據其功能特性,通常同時支援 x86 與 x64 架構,但建議在 64 位元環境下進行編譯以獲得最佳相容性。
Q:Syscall 功能如果用錯會怎樣?
直接使用系統呼叫如果不正確,最常見的結果是程式直接崩潰 (Crash),因為你繞過了系統提供的錯誤檢查機制。使用前請確保你傳入的參數完全正確。
|