搜尋

Rust遊戲修改器

返回清單
切換到指定樓層
通知這文章過時或找檔案 發表主題

[電玩遊戲] 《Rust》滑鼠驅動原始碼 v2026 下載:繞過輸入檢測與C++實作教學 [繞過EAC/解決模擬失效]

[複製連結]
1
o122334234 ( Lv.70 熾天使 ) 發表於 昨天 20:59 | 只看該作者 回覆獎勵 |升序瀏覽 |閱讀模式

《Rust》滑鼠驅動 C++ 原始碼 快速閱讀精華


  • 🛠️ **核心功能**:透過核心模式驅動程式 (Kernel Driver) 模擬滑鼠移動,解決遊戲封鎖 `SendInput` 的問題。
  • 💻 **適用對象**:C++ 開發者、想研究繞過 EAC 輸入檢測的高階玩家。
  • 📦 **包含內容**:
    • 完整 C++ 客戶端通訊原始碼
    • 驅動通訊介面實作 (`DeviceIoControl`)
    • 預編譯驅動檔案下載
  • ⚠️ **風險等級**:⭐⭐⭐⭐⭐ (涉及驅動讀寫,請務必使用小號測試)


《Rust》模擬滑鼠失效?為何一般腳本無法運作


大家在玩《Rust》的時候,是不是遇過這種情況:明明在桌面測試腳本都能正常移動滑鼠,一進到遊戲視窗,滑鼠游標就像被強力膠黏住一樣,完全動不了?

這不是你的腳本壞了,而是《Rust》的反作弊系統 Easy Anti-Cheat (EAC) 在作祟。為了防止壓槍腳本,EAC 封鎖了 Windows API 中常見的 `SendInput` 和 `mouse_event` 指令。換句話說,任何「軟體層面」的模擬輸入都會被遊戲無視。

今天要分享的,就是解決這個痛點的**終極方案**:直接透過「核心驅動程式 (Kernel Driver)」來與滑鼠硬體對話。這就像是我們不再請傳令兵傳話,而是直接拿著對講機對滑鼠下指令,EAC 就很難攔截到這種底層訊號。

特別提醒:本篇教學屬於技術研究性質,操作涉及系統底層驅動,具有一定風險。請務必在虛擬機或測試帳號上進行實驗。


👉 GM後台版 遊戲 推薦 ⬇️⬇️⬇️ 快速玩各種二次元動漫手遊app



技術解密:如何透過 C++ 繞過輸入檢測


要讓滑鼠在《Rust》裡動起來,我們需要兩個部分:
  • **驅動程式 (Driver)**:這是一個 `.sys` 檔案,它已經載入到 Windows 核心,擁有最高的權限,負責執行真正的「移動滑鼠」動作。
  • **客戶端 (Client)**:這就是我們下面要寫的 C++ 程式,它負責告訴驅動程式「X軸移多少、Y軸移多少」。


在本次分享的原始碼中,我們使用了 `DeviceIoControl` 這個函式來跟驅動溝通。這就像是給驅動程式打一通加密電話,告訴它我們的需求。

【小知識】什麼是 IOCTL?
IOCTL (Input/Output Control) 是應用程式與驅動程式溝通的橋樑。在程式碼中你會看到 `IOCTL_MOUSE_MOVE_RAW`,這就是我們自定義的「暗號」,當驅動收到這個暗號,就知道該移動滑鼠了。

完整 C++ 驅動通訊原始碼 (v2026)


以下是與驅動程式通訊的完整 C++ 實作代碼。這段程式碼定義了與驅動 `\\\\.\\Adverse` 的連線方式,並封裝了 `MoveMouse` 函式供你隨意調用。

#include <Windows.h>
#include <IOStream>
#include <conio.h>

// 定義滑鼠移動的控制碼 (IOCTL Code)
#define IOCTL_MOUSE_MOVE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x801, METHOD_BUFFERED, FILE_ANY_ACCESS)

// 這裡使用原始碼中特定的通訊代碼
#define IOCTL_MOUSE_MOVE_RAW 0x220444

// 定義滑鼠移動的數據結構
typedef struct _MOUSE_MOVE_INPUT {
    LONG x;      
    LONG y;         
    USHORT flags;     // 按鍵標誌 (2 bytes),驅動通常預期至少 8 bytes
    USHORT padding;   // 用於對齊的填充位
} MOUSE_MOVE_INPUT, * PMOUSE_MOVE_INPUT;

class MouseDriver {
private:
    HANDLE hDriver;

public:
    MouseDriver() : hDriver(INVALID_HANDLE_VALUE) {}

    ~MouseDriver() {
        Close();
    }

    // 開啟驅動程式控制代碼
    bool Open() {
        hDriver = CreateFileW(
            L"\\\\.\\Adverse", // 驅動程式的裝置名稱
            GENERIC_READ | GENERIC_WRITE,
            0,
            NULL,
            OPEN_EXISTING,
            FILE_ATTRIBUTE_NORMAL,
            NULL
        );

        if (hDriver == INVALID_HANDLE_VALUE) {
            std::cerr << "Failed to open driver. Error: " << GetLastError() << std::endl;
            return false;
        }

        return true;
    }

    void Close() {
        if (hDriver != INVALID_HANDLE_VALUE) {
            CloseHandle(hDriver);
            hDriver = INVALID_HANDLE_VALUE;
        }
    }

    // 發送移動指令給驅動
    bool MoveMouse(LONG x, LONG y, USHORT buttonFlags = 0) {
        if (hDriver == INVALID_HANDLE_VALUE) {
            std::cerr << "Driver not opened!" << std::endl;
            return false;
        }

        MOUSE_MOVE_INPUT input;
        input.x = x;
        input.y = y;
        input.flags = buttonFlags;
        input.padding = 0;

        DWORD bytesReturned = 0;
        BOOL result = DeviceIoControl(
            hDriver,
            IOCTL_MOUSE_MOVE_RAW,
            &input,
            sizeof(input),
            NULL,
            0,
            &bytesReturned,
            NULL
        );

        if (!result) {
            DWORD error = GetLastError();
            std::cerr << "DeviceIoControl failed. Error: " << error << std::endl;
            return false;
        }

        return true;
    }

    bool IsOpen() const {
        return hDriver != INVALID_HANDLE_VALUE;
    }
};

int main() {

    MouseDriver driver;

    // 嘗試連接驅動
    if (!driver.Open()) {
        std::cout << "請確認驅動程式是否已載入!" << std::endl;
        return 1;
    }

    // 測試移動:X軸+10, Y軸+10
    driver.MoveMouse(10, 10);
    std::cout << "滑鼠移動指令已發送。" << std::endl;

    return 0;
}


檔案下載與安裝說明


這個壓縮檔內包含了與上述程式碼配套的驅動檔案。請記得,驅動程式必須先成功載入(Load Driver),上述的 C++ 程式才能成功執行 `Open()` 連線。



所有站內附件皆會附上安全掃描報告
請會員查看純淨度百分比後判斷使用



相關檔案須知:
取得檔案前,請先詳細閱讀文章內容
避免不必要錯誤與誤會發生。
也可多參考文章討論樓層內容
了解附件檔案相關討論資訊。





使用步驟簡述:
  • 下載並解壓縮檔案。
  • 使用驅動載入工具(如 KDMapper 或其他簽章載入器)將 `.sys` 驅動檔案載入系統。
  • 編譯並執行上述提供的 C++ 程式碼。
  • 若主控台顯示「滑鼠移動指令已發送」,則代表繞過成功。


《Rust》核心主題 重點回顧


  • 《Rust》透過封鎖 `SendInput` 來阻擋一般腳本,必須使用驅動層級解決方案。
  • 使用 `CreateFile` 開啟 `\\\\.\\Adverse` 裝置是與此驅動通訊的關鍵。
  • 透過 `DeviceIoControl` 發送原始座標數據,可繞過大部分軟體層面的輸入檢測。
  • 操作涉及核心權限,務必注意帳號安全與系統穩定性。


Rust 外部驅動_常見問題Q&A



Q:為什麼我執行程式後顯示 "Failed to open driver"?
A:這代表你的驅動程式還沒有成功載入到 Windows 核心,或者是驅動程式的名稱(Name)已被修改,不叫 `Adverse`。請檢查你的驅動載入器是否顯示成功,並確認驅動內部的裝置名稱設定。

Q:使用這個驅動會被 EAC 封號嗎?
A:任何繞過反作弊的行為都有風險。雖然這是「驅動層級」模擬,理論上比軟體模擬隱蔽,但如果該驅動的特徵碼(Signature)已經被 EAC 列入黑名單,載入瞬間就可能被偵測。建議僅供學習研究使用,切勿用於主帳號。

Q:這個代碼可以支援滑鼠左右鍵點擊嗎?
A:可以的。在 `MOUSE_MOVE_INPUT` 結構中的 `flags` 參數就是用來控制按鍵狀態的。你需要查閱相關文件找出對應左鍵按下(LBUTTONDOWN)和放開(LBUTTONUP)的 flag 值並傳入即可。

Q:為什麼我的滑鼠移動很卡頓?
A:如果是在遊戲內移動卡頓,可能是因為發送頻率過高或數據包處理延遲。建議在 `MoveMouse` 呼叫之間加入微小的延遲(例如 `Sleep(1)`),模擬人類的真實操作軌跡。







大家正在看啥


收藏收藏 分享文章到FB上分享
回覆 使用道具 檢舉
複製專屬你的推廣連結:發至FB與各論壇宣傳:累積點數換GP商品 & 藍鑽
每五點閱率就可以兌換藍鑽積分或遊戲點卡 夢遊推廣文章換GP商品

你需要登入後才可以回覆 登入 | 加入會員

本版積分規則

Copyright (C) 2010-2020 夢遊電玩論壇

廣告合作:請直接聯繫我們,並附上您預刊登位置的預算。  

快速回覆 返回頂端 返回清單