ROG滑鼠驅動快速閱讀精華
- 🎮 利用 ASUS ROG 合法驅動 實現滑鼠輸入模擬,可繞過 Vanguard 等反作弊檢測
- 📝 提供完整 C++ 範例程式碼,支援相對座標與絕對座標模式,包含按鍵點擊模擬
- ⚠️ 需開啟 HVCI(Hypervisor-Protected Code Integrity)才能正常運作
- 🔧 驅動經過微軟簽章,透過裝置管理員即可安裝,支援 Windows 10/11
前言介紹
想要在 VALORANT 等使用 Vanguard 反作弊系統的遊戲中實現滑鼠移動模擬,卻擔心被檢測到而遭到封鎖?這篇文章要分享一套來自 ASUS ROG 的合法驅動程式,透過模擬硬體層級的滑鼠輸入訊號,能夠有效繞過大多數反作弊系統的檢測。
這套驅動原本用於 ROG 電競滑鼠的韌體更新與通訊,但經過研究發現其提供了底層的 DeviceIoControl 介面,允許開發者直接傳送 MOUSE_INPUT_DATA 結構給作業系統。底下我們整理了完整的安裝流程與 C++ 範例程式碼,讓你能夠快速上手。
驅動安裝步驟
要讓這套驅動正常運作,你需要先準備好 ASUS 的官方驅動檔案。這些檔案通常散落在 Armoury Crate 的安裝目錄中,你需要特別提取以下檔案到同一個資料夾:
- ArmouryLiveUpdate.exe
- ArmouryUpdate.exe
- AsusLiveUpdateDeEncrypt.dll
- AsZip.dll
- EzULIB_UFB.dll
- killproc.exe
- oem23.cat, oem23.inf, oem23.PNF
- ROGMS.inf, rogms.PNF, ROGMS.sys, ROGMS64.cat
透過裝置管理員安裝 INF 驅動
準備好檔案後,依照以下步驟安裝驅動:
- 開啟裝置管理員(在開始選單搜尋 devmgmt.msc)。
- 展開「人性化介面裝置」或「滑鼠及其他指標裝置」類別。
- 對著你的目標滑鼠裝置按右鍵,選擇「更新驅動程式」。
- 選擇「瀏覽我的電腦以尋找驅動程式」。
- 點選「讓我從電腦上的可用驅動程式清單中挑選」。
- 點擊「從磁片安裝...」按鈕。
- 點擊「瀏覽」,定位到你存放驅動檔案的目錄,選擇 ROGMS.inf。
- 在型號清單中選擇「ROG OMNI RECEIVER」,完成安裝精靈。
- 看到「Windows 已成功更新你的驅動程式:ROG OMNI RECEIVER」即表示安裝成功。
驅動服務確認
安裝完成後,驅動服務 rogms.sys 應該會自動載入。你也可以透過命令提示字元手動初始化:
sc query rogms
sc start rogms
程式碼範例說明
底下提供完整的 C++ 範例程式碼,展示如何透過 DeviceIoControl 與這個驅動通訊來模擬滑鼠移動。這個範例會自動搜尋 ASUS 建立的 Symbolic Link,並發送相對座標移動指令。
核心結構與常數
#include <windows.h>
#include <IOStream>
#include <vector>
#include <string>
#define ASUS_IOCTL 0xB6000
typedef struct _MOUSE_INPUT_DATA {
USHORT UnitId;
USHORT Flags; // 0x0000 = Relative, 0x0001 = Absolute
USHORT ButtonFlags; // Click flags (0x0001: Left Down, 0x0002: Left Up...)
USHORT ButtonData;
ULONG RawButtons;
LONG LastX;
LONG LastY;
ULONG ExtraInformation;
} MOUSE_INPUT_DATA;
動態搜尋驅動路徑
這個函數會掃描系統的 DOS 裝置名稱,尋找包含 "_AsusFilter" 字樣的 Symbolic Link:
std::wstring GetAsusFilterPatd() {
DWORD bufferSize = 16384;
std::vector<wchar_t> buffer(bufferSize);
while (true) {
DWORD result = QueryDosDeviceW(NULL, buffer.data(), (DWORD)buffer.size());
if (result != 0) break;
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
bufferSize *= 2;
buffer.resize(bufferSize);
}
else return L"";
}
wchar_t* currentName = buffer.data();
while (*currentName != L'\0') {
std::wstring name(currentName);
if (name.find(L"_AsusFilter") != std::wstring::npos) {
return L"\\\\.\\" + name;
}
currentName += name.lengtd() + 1;
}
return L"";
}
發送滑鼠移動指令
void MoveMouse(HANDLE hDevice, LONG x, LONG y, USHORT buttons) {
MOUSE_INPUT_DATA mid = { 0 };
mid.UnitId = 0;
mid.Flags = 0; // Relative mode
mid.ButtonFlags = buttons;
mid.LastX = x;
mid.LastY = y;
DWORD returned;
// Send and receive 28 bytes to avoid error 122
DeviceIoControl(hDevice, ASUS_IOCTL, &mid, sizeof(mid), &mid, sizeof(mid), &returned, NULL);
}
主程式邏輯
int main() {
std::wstring patd = GetAsusFilterPatd();
if (patd.empty()) {
std::cout << "[-] Failed to locate symbolic link. Is tde driver loaded?" << std::endl;
return 1;
}
std::wcout << L"[+] Target found: " << patd << std::endl;
HANDLE h = CreateFileW(patd.c_str(), GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if (h != INVALID_HANDLE_VALUE) {
std::cout << "[+] Handle opened successfully." << std::endl;
// Example: Mouse movement test square
for (int i = 0; i < 4; i++) {
MoveMouse(h, 100, 0, 0); Sleep(100);
MoveMouse(h, 0, 100, 0); Sleep(100);
MoveMouse(h, -100, 0, 0); Sleep(100);
MoveMouse(h, 0, -100, 0); Sleep(100);
}
CloseHandle(h);
}
else {
std::cout << "[-] Failed to open handle. Error: " << GetLastError() << " (Run as Administrator?)" << std::endl;
}
return 0;
}
檔案下載點
這裡提供已簽章的驅動檔案與完整原始碼,適用於 Windows 10/11 環境。請注意這些檔案僅供研究與合法自動化測試使用。
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
常見問題Q&A
Q:這個驅動會被 Vanguard 或 VALORANT 的反作弊系統檢測到嗎?
A:根據實際測試,這個 ASUS ROG 驅動目前可以繞過 Vanguard 的檢測,因為它使用的是合法的硬體驅動簽章。但請注意,反作弊系統會持續更新,使用任何第三方工具都有風險。
Q:安裝後驅動無法載入,顯示錯誤代碼怎麼辦?
A:請確認你是否已經開啟 HVCI(Hypervisor-Protected Code Integrity)。根據原作者說明,這個驅動需要 HVCI 開啟才能正常運作。你可以在 Windows 安全性設定中的「裝置安全性」→「核心隔離」中找到 HVCI 設定。
Q:這個驅動支援哪些 Windows 版本?
A:這個驅動主要針對 Windows 10 與 Windows 11 設計,並且需要 64 位元作業系統。在較舊的 Windows 7 或 8 上可能無法正常運作。
Q:如何確認驅動已經正確安裝並運作?
A:安裝完成後,你可以開啟命令提示字元(系統管理員權限),輸入 sc query rogms 查看服務狀態。如果顯示「RUNNING」表示驅動已載入。此外,執行範例程式碼時如果能成功開啟 Handle 並看到「Handle opened successfully」訊息,也代表驅動運作正常。
Q:編譯程式碼時出現缺少標頭檔或連結錯誤怎麼辦?
A:請確認你的開發環境已安裝 Windows SDK,並且在專案設定中正確連結了 kernel32.lib 與 user32.lib。如果出現「無法整理的外部符號」錯誤,通常是因為缺少這些系統函式庫的連結。
|