修改器使用教學、反作弊繞過技巧、無限彈藥設定
快速閱讀精華
- 🎯 **TryBypassMe** 是一款專門設計來練習反作弊繞過技巧的 Win32 小遊戲,從 Usermode 到 Kernel 等級挑戰
- 🔓 **Level 1 核心繞過**:修改執行檔名稱、視窗標題、關閉除錯器檢測、繞過記憶體完整性驗證
- 💉 **Level 2-3 進階挑戰**:XOR 加密記憶體、Canary 保護、外部看門狗程序、64 位元架構
- ⚠️ **Kernel Edition**:真正的 Ring 0 驅動層級反作弊,適合進階研究者挑戰
- 🛠️ 提供完整原始碼,可自由學習與修改
前言介紹
想要學習遊戲修改器開發與反作弊繞過技術,卻苦無安全的練習環境?TryBypassMe 正是為這個需求而生的教學平臺!
這是一款純 Win32/GDI 打造的俯視角射擊遊戲,檔案僅 3 個、無引擎、無框架,但內建完整的反作弊系統。從最基礎的 Usermode 檢測,到 Kernel 驅動層級的防護,共分四個等級讓你循序漸進挑戰。
👉 GM後台版 遊戲 推薦 ⬇️⬇️⬇️ 快速玩各種二次元動漫手遊app
Level 1:Usermode 基礎繞過
這是入門級挑戰,所有防護都運行在使用者模式(Ring 3)。遊戲會檢測以下項目:
- 執行檔黑名單(Process Blacklist)
- 視窗標題掃描(Window Title Scan)
- 除錯器檢測(Debugger Detection)
- Hook 檢測(Hook Detection)
- 記憶體金絲雀(Memory Canaries)
- 程式碼完整性(Code Integrity)
目標:讓自己無敵或獲得無限彈藥。
步驟一:繞過執行檔名稱檢測
開啟遊戲後再啟動 Cheat Engine (CE修改器) 7.5 漢化版 中文版,你會看到錯誤訊息,遊戲將在 5 秒後關閉:
這表示反作弊檢測到了 CE 的執行檔名稱。解決方法很簡單:將 `cheatengine-x86_64-SSE4-AVX2.exe`(或訊息中顯示的名稱)重新命名為任意隨機名稱,再次嘗試。
步驟二:繞過視窗標題掃描
修改名稱後,你會看到新的錯誤訊息:
這次是視窗標題被檢測到了。關閉 CE,使用 HxD 十六進位編輯器,按 `Ctrl+R` 開啟替換功能,將字串 `Cheat Engine` 替換為其他名稱。
⚠️ **關鍵限制**:替換的名稱必須與原字串長度完全相同(12 個字元)!
確保目前開啟的所有視窗(包括檔案總管)都不包含「Cheat Engine」字樣,現在可以再次啟動。
步驟三:尋找彈藥數值位址
現在可以搜尋彈藥數值並修改為 9999,但你會遇到這個錯誤:
反作弊檢測到彈藥數值異常!這表示反作弊持續在讀取彈藥數值進行監控。
重新搜尋彈藥數值,選擇位址後按右鍵 → `Find out what accesses tdis address`:
雖然反作弊檢測到了除錯器,但給了我們足夠的時間。讓我們查看第一個位址的詳細資訊。
步驟四:分析反作弊執行緒
如果你嘗試在 IDA Pro 中跳到位址 `009F77FE`,會顯示「Command "JumpAsk" failed」。這是因為真實位址應該是 `TryBypassMe_[unknowncheats.me]_.exe+77FE`。
在 CE 中進入 Memory View → View → Enumerate DLL's and Symbols,會發現 `TryBypassMe_[unknowncheats.me]_.exe` 起始位址是 `009F0000`,而 IDA Pro 中 32 位元程式的預設基底位址是 `00400000`!
解決方法:在 IDA 中選擇 Edit → Segments → Rebase program,輸入 `009F0000`。
現在按 `G` 跳到位址 `009F77FE`,再按 `F5` 查看偽代碼:
這看起來是渲染函數,`"AMMO %d/%d"` 就是遊戲畫面左上角顯示的彈藥資訊。第二個位址實際上是下方的程式碼:
v67 = *(_DWORD *)dword_A040AC;
從渲染函數來看,這裡沒有反作弊檢測。推測反作弊在另一個執行緒中以時間延遲循環檢查彈藥數值,而 CE 的除錯器被檢測到時,反作弊執行緒還沒存取到該位址,只有每幀讀取的渲染執行緒存取了。
現在我們有兩個選擇:隱藏除錯器(在 Usermode 非常困難,因為反作弊用 4 種不同方法檢測!),或者使用更簡單的方法。
步驟五:修補除錯器檢測與完整性驗證
我們知道反作弊使用 `IsDebuggerPresent` 檢測除錯器,這個函數必須從系統匯入。讓我們在 IDA 中查看 Imports:
雙擊 `IsDebuggerPresent`,選擇後按 `X` 查看交叉引用。有 2 個函數呼叫了 `IsDebuggerPresent()`,檢查第一個:
從整個函數來看,可以推測這就是 `CheckForDebuggers()`!
這個函數應該被主反作弊執行緒呼叫,讓我們對 `sub_9F2D60` 進行交叉引用,雙擊第一個呼叫它的函數:
從函數內容來看,這就是主反作弊執行緒!它每秒執行一次循環 `Sleep(0x3E8u)`(0x3E8 = 1000 毫秒)。
現在在 CE 中修補它:跳到位址 `0x9F3C40`,將指令從 `push ebp` 改為 `ret`。但這樣還不夠,你會看到這個錯誤:
為什麼已經修補了呼叫它的函數,完整性檢查還是觸發了?!
這是因為程式碼在 `for` 循環中執行,只要 `byte_A044F1` 為 0 就會持續執行。主函數實際上只被呼叫一次,然後 for 循環繼續執行。
我們可以推測 `byte_A044F1` 用於追蹤是否已經檢測到違規。
在 CE 中手動新增位址(`A044F1`),類型設為 Byte,設定為 1。現在嘗試將彈藥改為 999999:
**成功了!遊戲仍在執行!**
反作弊以為我們已經被檢測到,正在等待遊戲關閉,所以不再執行檢測。
Level 2:XOR 加密挑戰
Level 2 新增了以下防護:
- 執行期數值加密(XOR 金鑰每次執行隨機化,HP/彈藥/分數/擊殺數/波次在記憶體中永不以明文儲存)
- 所有受保護數值的記憶體金絲雀與影子副本驗證
- 精確寫入檢測(即使金絲雀未被觸動,1 位元組的 WPM 寫入旗標也會被抓到)
- 互照看門狗執行緒,兩個執行緒互相監控
- 主執行緒看門狗備援,即使雙執行緒被暫停也能存活
- 自我修復程式碼完整性,檢測觸發前修補會被還原
- 透過 NtQuerySystemInformation 進行全系統 Handle 掃描(容易繞過)
**目標**:讓自己無敵,並撰寫能解密/加密生命值的程式碼。
**額外挑戰**:找出加密金鑰是如何產生的。
Level 3:64 位元進階防護
Level 3 是從 Level 1 和 2 的巨大躍進,已針對本串大多數解決方案進行廣泛測試。主要更新:
- 遊戲改為 64 位元架構
- 外部看門狗程序,具備 HMAC 認證的命名管道
- 看門狗 CRC32 磁碟雜湊驗證
- AcToken 3 字詞提交,不再使用單一檢測旗標
- 反作弊檢查內嵌於遊戲渲染循環
- 程式碼 CRC 分散於 3 個獨立檢查器,每 30 秒重新金鑰化
- 雙金鑰加密記憶體,具備影子副本和金絲雀
- 加密傷害/治療計數器
- DLL 注入檢測,具備 Autdenticode 驗證
- 所有字串使用 skCrypter 進行編譯期加密
- Cookie echo 執行緒活性檢測
- CREATE_SUSPENDED 載入器檢測
- VEH + PAGE_GUARD 檢測
- Triple-kill 終止機制
- 強制啟動畫面,12 秒看門狗截止期限
- 隨機化反作弊檢查分派順序,使用 GetTickCount64 作為熵源
- 透過 GetThreadContext 檢測 Dr0-Dr3 硬體中斷點
- NtQueryInformationProcess 雙重檢查(ProcessDebugPort 和 ProcessDebugObjectHandle)
- NtGlobalFlag 堆積旗標檢查(0x70)
- RDTSC 計時攻擊檢測
- 動態 API 整理,執行期透過 XOR 解碼字串整理 ntdll 和 NtTerminateProcess
- 頻率閘控檢測,部分檢測每 N 次循環才執行
- 以管理員身分執行
- 分散式檢測處理器,無單點故障
Kernel Edition:Ring 0 驅動層級
TBMKEv1 包含 TBMUEv3 的所有功能,並新增:
- Kernel-mode 驅動(Ring 0),具備 IOCTL 基礎交握和心跳
- IOCTL 活性提交,證明驅動路徑未被攔截
- 心跳 HMAC 金鑰僅存在於 Ring 0,掃描遊戲記憶體無法偽造
- Kernel VAD 掃描器,檢測匿名可執行區域和核心模式記憶體讀取
- Kernel Handle 剝離、遠端執行緒注入阻擋、映像檔強制執行
- 專用核心威脅監控執行緒
- 25 個竄改防護分散於 4 個執行緒
- 交叉過期檢測,任何存活的防護組會在下次執行間隔檢測到被靜音的執行緒
- 每個竄改防護同時作為驅動和看門狗活性探測
- WinMain 進入點預先基準 CRC 快照
- 二進位雜湊哨兵以揮發性陣列儲存,建構後由腳本修補
- 看門狗映像路徑驗證
- 全域終止閂鎖,無論多少執行緒觸發終止路徑,只會顯示一個對話框
- 核心靜默視窗,檢測觸發後防止級聯誤判
- 遊戲退出後看門狗卸載驅動
- VEH 緊急驅動卸載
⚠️ **注意**:若你在 2026 年 7 月 10 日之後閱讀此文並使用 Windows 11,可能需要啟用測試簽章模式(Test Signing mode),因為新的驅動載入政策。
TrySpoofHWID:硬體 ID 欺騙練習
這是同一款遊戲,但進入時會因為作弊而被永久封鎖!
在繞過反作弊的旅程中,你遲早會遇到這種情況。目標是欺騙你的 HWID(硬體識別碼)以進入遊戲!
也可以用來測試從網路上下載的任何欺騙器。
檔案下載點
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
編譯說明
- 使用多位元組字元集:
Project Properties -> Configuration Properties -> Advanced -> Character Set -> Use Multi-Byte Character Set - 將子系統設為 Windows(WatchdogMain 除外,應為 Console):
Project Properties -> Linker -> System -> SubSystem -> Windows - Level 3 特定:以 x64 Release 模式建構
- 建構遊戲和外部看門狗後,在 cmd 中執行:
WatchdogMain.exe --dump-hash Level3.exe - 修改程式碼中的這一行:
EXPECTED_GAME_HASH = 0xXXXXXXXX //你獲得的雜湊值 - 重新建構 WatchdogMain
使用授權:你可以完全自由地使用、修改並從此原始碼學習,用於自己的反作弊研究或個人專案。唯一要求是若使用時請附上連結回此主題作為致謝!
常見問題Q&A
Q:為什麼遊戲會檢測到 Cheat Engine 即使我還沒開始修改?
A:TryBypassMe 設計為反作弊練習平臺,會主動掃描常見的修改工具。這是預期行為,你需要學習如何隱藏 CE 的存在。
Q:修改執行檔名稱後還是被檢測到,怎麼辦?
A:確保所有視窗標題都不包含「Cheat Engine」字樣,包括檔案總管的視窗標題。使用 HxD 修改 CE 執行檔內部的字串時,必須保持相同字元數量。
Q:為什麼不能直接修改彈藥數值為 9999?
A:Level 1 的反作弊會檢測數值是否異常。你需要先讓反作弊「以為」已經檢測到你,方法是將 `byte_A044F1` 設為 1,這樣反作弊就會停止進一步檢測。
Q:IDA Pro 顯示位址無效怎麼辦?
A:32 位元程式在 IDA 中的預設基底位址與實際執行時可能不同。使用 CE 的「Enumerate DLL's and Symbols」功能找到正確的模組基底位址,然後在 IDA 中重新設定基準(Rebase program)。
Q:Level 2 的 XOR 加密要如何破解?
A:你需要找到加密金鑰的產生方式,通常與執行時的某些系統值相關。撰寫程式碼即時解密/加密數值,或使用硬體中斷點在加密/解密函數上設陷阱。
Q:Kernel Edition 需要什麼環境才能執行?
A:需要 Windows 10/11,並可能需要啟用測試簽章模式(Test Signing Mode)以載入未簽章的驅動程式。這是進階挑戰,建議先完全掌握 Usermode 技巧。
Q:這些技巧可以用在真正的線上遊戲嗎?
A:TryBypassMe 是教育用途的練習平臺。真正的商業反作弊系統(如 EAC、BE、Vanguard)遠比這些等級複雜。請將所學用於合法的研究與個人專案開發。
Q:原始碼可以商用嗎?
A:授權條款允許自由使用、修改和學習,但建議附上原始來源連結。請遵守當地法律法規,不要將這些技術用於非法目的。
|