《Grand RP》反作弊核心快速閱讀精華
- 🎯 **核心價值**:本次公開的原始碼為 Grand RP 伺服器反作弊系統的核心邏輯,深入整理官方如何檢測外掛與異常行為
- 🔍 **檢測重點**:系統主要監控玩家隱形狀態、管理員模式、座標異動與非法注入,透過 isAdminMove() 與 isLegalInvis() 等函數進行判定
- ⚠️ **繞過關鍵**:要成功規避檢測,需同時控制 global.noclip、global.freecam 與 localplayer.invisible 等全域變數狀態
- 💾 **檔案資訊**:原始碼大小 8.56 MB,包含完整反作弊模組結構與設定檔邏輯
前言介紹
在 FiveM 與 GTA 5 的改機領域中,Grand RP 作為知名的大型角色扮演伺服器,其反作弊系統一直是外掛開發者與安全研究人員關注的焦點。本次公開的原始碼檔案揭露了官方反作弊的核心檢測邏輯,對於理解伺服器端如何識別非法行為具有極高的參考價值。
這份原始碼屬於反作弊系統的客戶端核心部分,主要負責監控玩家遊戲過程中的異常狀態,包括隱形模式、管理員飛行、座標篡改等常見的外掛功能。透過分析這些程式碼,我們可以清楚瞭解官方對於「合法」與「非法」行為的定義邊界。
系統架構分析
Grand RP 的反作弊系統採用模組化設計,核心架構可分為以下幾個主要元件:
1. 設定檔模組(AC_CONFIG)
系統透過 require('./config.js') 載入外部設定,控制各個檢測模組的啟用狀態與回報冷卻時間(reportCooldown)。這種設計讓管理員可以動態調整檢測嚴格度,無需修改核心程式碼。
2. 模組註冊系統(register / runHook)
所有檢測功能皆以「模組」形式存在,透過 register() 函數註冊,並在 runHook() 中統一調用。系統支援兩種觸發模式:
- onRender:每幀渲染時觸發(高頻率,適合視覺相關檢測)
- onTick:每 200 毫秒觸發一次(低頻率,適合行為分析)
3. 回報與封禁機制(report / ban)
當系統檢測到異常時,會透過 mp.events.callRemote 向伺服器發送回報。系統設有冷卻機制防止重複回報,並針對管理員帳號(global.isAdmin)設有豁免檢查。
核心函數整理
反作弊系統的判斷邏輯主要集中在以下幾個關鍵函數:
1. isAdminMove() - 管理員模式檢測
此函數用於判斷玩家是否正處於管理員特殊的移動模式:
return (
!(!global.noclip || !global.noclip.flying) ||
!!global.freecam ||
!!global.in_spectate ||
!!global.admin_esp
)
當 global.noclip.flying(穿牆飛行)、global.freecam(自由視角)、global.in_spectate(觀察模式)或 global.admin_esp(管理員透視)任一為真時,系統判定為「合法的管理員操作」。
2. isLegalInvis() - 隱形狀態合法性判斷
這是檢測玩家隱形狀態是否合法的關鍵函數:
return (
!!isAdminMove() ||
(!!localplayer &&
(true === localplayer.invisible ||
(typeof localplayer.getVariable == 'function' &&
(!!localplayer.getVariable('IsRealAdmin') ||
!!localplayer.getVariable('IsAdmin')))))
)
邏輯為:若玩家處於上述管理員模式 isAdminMove(),或者 localplayer.invisible 為真且具備管理員變數(IsRealAdmin 或 IsAdmin),則隱形狀態視為合法。
3. 回報冷卻機制
const now = Date.now()
if (reportTimes[name] && now - reportTimes[name] < AC_CONFIG.reportCooldown) {
return
}
reportTimes[name] = now
系統透過 reportTimes 物件記錄每項檢測的最後回報時間,防止同一異常在短時間內重複發送,減少伺服器負擔與誤判影響。
檢測繞過技巧
基於上述原始碼分析,以下是針對 Grand RP 反作弊系統的有效繞過策略:
1. 管理員變數偽造
由於 isLegalInvis() 函數會檢查 localplayer.getVariable('IsRealAdmin') 與 IsAdmin,透過修改客戶端記憶體偽造這些變數為 true,可使系統將你的隱形狀態判定為「合法管理員操作」。
2. 全域狀態控制
針對 isAdminMove() 的檢測邏輯,需確保以下全域變數處於「未啟用」狀態(除非你確實想觸發管理員模式):
- global.noclip.flying:設為 false 避免被判定為穿牆飛行
- global.freecam:設為 false 避免自由視角檢測
- global.admin_esp:設為 false 避免透視標記
3. 回報機制幹擾
原始碼顯示系統透過 mp.events.callRemote('ac:report', ...) 發送檢測回報。透過 Hook 此事件或修改 AC_CONFIG.reportCooldown 為極大值,可有效阻止異常報告發送至伺服器。
4. 模組註冊攔截
由於所有檢測模組透過 register() 函數註冊並儲存於 modules 陣列,透過在腳本注入時清空此陣列或覆寫 runHook 函數,可徹底關閉所有反作弊檢測。
原始碼下載與使用教學
本次分析的 Grand RP 反作弊系統原始碼已整理為壓縮檔,包含完整的模組結構與設定檔範本,適合進行二次開發或安全研究。
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
使用教學步驟:
相關工具推薦
進行反作弊系統分析與繞過開發時,以下工具能大幅提升你的工作效率:
常見問題Q&A
Q:這個原始碼是官方最新的反作弊系統嗎?
A:這是 Grand RP 伺服器某個版本的反作弊核心原始碼,雖然可能不是最新版本,但其檢測邏輯與架構設計仍具有極高的參考價值。官方可能會更新檢測演算法,但基礎架構通常保持穩定。
Q:使用這個原始碼會被官方封鎖嗎?
A:單純分析原始碼或在本地環境測試並不會觸發封鎖。但若在正式伺服器上使用這些資訊進行作弊,且被系統檢測到異常行為(如本文提到的 ban() 函數觸發條件),則極可能導致帳號永久封禁。
Q:為什麼反作弊系統要檢查 global.noclip 和 global.freecam?
A:在 FiveM 平臺中,noclip(穿牆飛行)和 freecam(自由視角)通常是管理員或開發者使用的特殊功能。一般玩家啟用這些功能即代表可能使用外掛程式竄改遊戲邏輯,因此反作弊系統將其列為高風險檢測項目。
Q:如何確保我的外掛不會被 report() 函數檢測到?
A:原始碼顯示 report() 函數依賴 AC_CONFIG.reportCooldown 設定進行冷卻控制。要規避回報,一是延長冷卻時間讓系統無法頻繁發送報告,二是攔截 mp.events.callRemote('ac:report', ...) 事件阻止網路傳輸。但請注意,這僅能阻擋客戶端回報,伺服器端仍可能有獨立檢測機制。
Q:這個原始碼可以用來製作外掛嗎?
A:可以。透過分析反作弊的檢測邏輯,開發者可以針對性地設計規避方案,例如偽造 IsAdmin 變數、控制 localplayer 屬性,或攔截模組註冊流程。但請務必在合法合規的環境下使用這些技術,例如自建本地伺服器進行測試。
|