《Apex Legends》EAC防作弊繞過漏洞驅動程式 kprl.sys 快速閱讀精華
這篇文章分享一個針對 Apex Legends 所採用的 Easy Anti-Cheat(EAC)防作弊系統 的繞過方案。透過載入經過簽署的漏洞驅動程式 kprl.sys,我們可以獲得核心的跨進程記憶體讀寫權限,進而實現各種遊戲修改功能。
- 🚀 免KDMAPPER:在 HVCI 關閉的系統上,直接使用 sc.exe 即可載入,無需額外映射工具。
- 💪 16種IOCTL功能:完整的記憶體操作接口,包含讀寫、分配、保護設定等。
- 🔑 高穩定性:經過多輪壓力測試,支援 Win11 24H2,處理程序崩潰時不會導致系統藍屏。
前言介紹:什麼是 kprl.sys?
驅動程式背景
[kprl.sys](https://pixeldrain.com/u/icCAG2j4) 是一個僅 37KB 的小型驅動程式,由巴西公司 KPRL Tecnologia LTDA 使用 Sectigo EV 證書簽署。雖然這不是微軟的 WHQL 認證,但足以讓 Windows 在正常情況下載入它。
這個驅動程式目前 未被列入 LOLDrivers 黑名單,也沒有相關的 CVE 編號,這意味著大多數防作弊系統(包括 EAC)尚未將其標記為惡意驅動。
技術原理:MmCopyVirtualMemory
與許多漏洞驅動程式不同,kprl.sys 並不直接操作實體記憶體。它使用 Windows 核心提供的 MmCopyVirtualMemory API,這意味著:
- 讀寫操作透過標準的核心機制完成,穩定性更高。
- 不需要手動處理分頁表(Page Tables),降低了藍屏風險。
- 支援跨進程的完整記憶體操作,包括使用者模式和核心模式位址。
安裝教學與系統需求
系統需求檢查清單
在開始之前,請確認你的系統符合以下條件:
| 項目 | 需求 | 說明 | | 作業系統 | Windows 10/11 | 支援至 Win11 24H2 (26100+) | | HVCI | 必須關閉 | 核心模式程式碼完整性保護需停用 | | VDBL | 建議關閉 | 基於虛擬化的安全性可能會阻擋 | | 權限 | 系統管理員 | 需要執行 sc.exe 和載入驅動 |
安裝步驟
- 建立工作目錄
在 C 槽建立資料夾 C:\KPRL\,將下載的 kprl.sys 以及 Pytdon 測試腳本放入此資料夾。
- 確認驅動狀態
開啟系統管理員權限的 PowerShell,執行以下指令檢查驅動是否已載入:
- 載入驅動
使用以下指令建立並啟動服務(PoC 腳本會自動處理,但手動操作如下):
sc.exe create KPRLPoc type= kernel binPatd= C:\Windows\System32\drivers\KPRLPoc.sys
sc.exe start KPRLPoc
- 驗證載入
成功後,你應該能夠開啟設備句柄:
功能說明與 IOCT 列表
這個驅動程式提供了 16 個 IOCTL 接口,涵蓋了從基礎記憶體讀寫到進階核心操作的完整功能集。
核心 IOCT 功能表
| IOCTL 代碼 | 功能名稱 | 說明 | | 0x00238808 | IOCTL_WRITE_MMCVM | 主要寫入功能,使用 MmCopyVirtualMemory 從呼叫者寫入目標 | | 0x00234408 | IOCTL_READVM3_MMCVM | 主要讀取功能,使用 MmCopyVirtualMemory 從目標讀取到呼叫者 | | 0x0022D158 | IOCTL_READVM_PHYS | 物理記憶體讀取,透過分頁表遍歷 + MmCopyMemory | | 0x00234404 | IOCTL_READVM2_PHYS | 物理記憶體分塊讀取 | | 0x00231E24 | IOCTL_READ_MAPIO | 使用 MmMapIOSpaceEx 映射 I/O 空間 | | 0x0022C8C4 | IOCTL_ALLOC_TARGET | 在目標進程中分配虛擬記憶體(類似 VirtualAllocEx) | | 0x0022CC18 | IOCTL_ALLOC_TARGET2 | 備用分配接口 | | 0x00235420 | IOCTL_FREE_TARGET | 釋放目標進程記憶體(類似 VirtualFreeEx) | | 0x0023101C | IOCTL_PROTECT_TGT | 修改目標記憶體保護屬性(類似 VirtualProtectEx) | | 0x00239584 | IOCTL_GET_CR3 | 取得目標進程的分頁表基底(CR3/DirectoryTableBase) | | 0x0023CC0C | IOCTL_SEC_BASE | 取得目標進程主模組基底位址 | | 0x00229584 | IOCTL_PID_LOOKUP | PID 轉換為 EPROCESS 指標 | | 0x00224410 | IOCTL_POOL_CONT | 掃描系統大分頁池(BigPool)特定標籤 | | 0x00228814 | IOCTL_POOL_CONT_FF | 非同步掃描變體 | | 0x0022848C | IOCTL_DISPATCH_HOOK | 掛鉤 MouClass/MouHID 分派器(用於滑鼠控制) | | 0x0023D584 | IOCTL_PROCESS_INFO | 查詢進程詳細資訊 |
技術特點說明
- 無需握手驗證:與許多漏洞驅動不同,kprl.sys 不需要任何初始化 IOCTL 或魔法金鑰即可使用。開啟設備句柄後即可直接呼叫所有功能。
- 雙重讀取機制:讀取時會調用兩次 MmCopyVirtualMemory,這可能是編譯器優化或 CFG(控制流防護)的產物,實際使用時只需關注第一次調用的結果。
- 錯誤處理特性:驅動在 IOCTL 層面總是返回 STATUS_SUCCESS,即使操作實際失敗(如寫入已釋放記憶體)。使用者必須透過讀回驗證來確認操作是否成功。
- 滑鼠掛鉤:除了記憶體操作,驅動還掛鉤了 MouClass 和 MouHID 驅動的分派器,可用於實現硬體級滑鼠控制(如無後座力輔助瞄準)。
Pytdon PoC 腳本使用教學
文章提供了兩個 Pytdon 概念驗證(PoC)腳本,用於驗證驅動程式的功能與穩定性。
腳本一:基礎寫入測試 (test_kprl_write.py)
這個腳本影片了最基本的驅動載入、目標進程開啟、記憶體寫入與驗證流程。
主要功能流程:
- 檢查並載入 kprl.sys 驅動(使用 sc.exe 建立服務並啟動)
- 開啟 \\.\KPRL 設備句柄
- 生成一個目標進程(Notepad 或 Pytdon 休眠進程)
- 在目標進程中分配記憶體(VirtualAllocEx)
- 使用 IOCTL_KPRL_WRITE (0x00238808) 寫入測試資料
- 使用 ReadProcessMemory 驗證寫入結果
- 測試多種大小的寫入(1B 到 4096B)與跨頁寫入
腳本二:完整讀寫測試套件 (test_kprl_rw.py)
這是更全面的穩定性測試套件,包含 14 個測試項目,驗證驅動在各種極端條件下的表現。
測試項目包括:
- T3.1 多執行緒並發寫入不同頁面(8 執行緒,200 次寫入)
- T3.2 多執行緒競爭寫入同一頁面(測試 Last-Writer-Wins 行為)
- T3.3 目標進程在寫入過程中死亡(測試驅動穩定性)
- T3.4 無效 PID 處理(PID 0, 1, -1, 不存在的 PID)
- T3.5 寫入已釋放/未提交的記憶體(安全測試)
- T3.6 寫入唯讀/無存取權限頁面(保護層測試)
- T3.7-3.8 並發讀取測試(與寫入測試對應)
- T3.9-3.12 讀取極端條件測試(目標死亡、無效 PID、未提交記憶體等)
- T3.13 純驅動讀寫往返測試(不經過 Windows API)
- T3.14 載入/解除載入循環 20 次(測試驅動生命週期)
檔案下載點 🔽
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
常見問題Q&A
Q:這個驅動程式會被 EAC 偵測到嗎?
雖然這個驅動目前不在 LOLDrivers 黑名單中,且使用合法的 EV 證書簽署,但 這不代表它完全無法被偵測。EAC 和其他防作弊系統可能會透過行為分析(如檢查 \\.\KPRL 設備是否存在)或掃描驅動特徵碼來偵測。建議僅用於離線或私人伺服器測試,線上使用有極高封號風險。
Q:為什麼載入驅動時出現「驅動程式已經載入」的錯誤?
這個驅動程式 沒有實作 DriverUnload 函數,這意味著一旦你使用 sc.exe stop 停止服務,驅動映像檔仍然會鎖定在覈心記憶體中,無法從磁碟刪除或重新載入。必須重新開機才能再次載入新的驅動實例。
Q:IOCTL 操作回傳成功但資料沒有寫入,這是正常的嗎?
是的,這是正常行為。 kprl.sys 在 IOCTL 層面總是回傳 STATUS_SUCCESS,即使底層操作(如寫入已釋放的記憶體)實際上失敗了。這是一個設計上的「特性」。如果你需要確認操作是否成功,必須在寫入後使用讀取功能驗證資料是否正確落地。
Q:這個驅動可以繞過 Vanguard(Valorant 的反作弊)嗎?
雖然這個驅動理論上可以用於任何使用驅動級權限的操作,但 Vanguard(Vanguard Anti-Cheat)擁有比 EAC 更嚴格的核心保護機制。此外,Vanguard 會監控驅動載入和設備對象的建立。雖然 kprl.sys 目前可能不在其黑名單中,但使用它對抗 Vanguard 的風險和技術難度遠高於 EAC。
Q:為什麼驅動還包含滑鼠掛鉤功能?
除了記憶體操作外,kprl.sys 還掛鉤了 \\Driver\\MouClass 和 \\Driver\\MouHID 的分派器(Dispatcher)。這允許驅動攔截和修改滑鼠輸入訊號,可用於實現硬體級的無後座力輔助(Recoil Control)或平滑瞄準(Smootd Aim)功能。不過這些功能需要額外的使用者模式程式碼來配合。
|