基於DMA的fps外掛原理解析

自從昨天發了一篇基於AI的鎖頭解析以後,有不少資深FPS盒友評論說DMA(Direct Memory Access,直接內存訪問)纔是最難防的,所以順路查了一下這一類外掛的原理,恰好發現了一個基於FPGA的DMA項目pcileech,計算機組成課和FPGA這個傢伙相愛相殺了一個學期,正好順路分析一下它的修改內存原理。

DMA技術允許外置硬件設備(如網卡、顯卡等)直接訪問系統內存,而不需要通過中央處理器(CPU)進行數據傳輸,利用這種技術,可以使用特殊的軟硬件工具(比如今天要講的FPGA)來讀取和修改遊戲內存中的數據。例如,玩家可以使用DMA作弊工具來修改遊戲中的角色屬性、遊戲物品數量、遊戲金幣數量、獲取敵人座標等 。

傳統外掛一般會有外掛程序運行於作弊機器上讀寫遊戲客戶端關鍵數據或代碼,而DMA作弊則是以硬件替代了外掛軟件讀寫遊戲數據,物理隱藏了外掛程序,對以外掛樣本對抗爲主的反外掛系統是個比較大的威脅。

那麼什麼是FPGA?FPGA 的全稱爲 Field-Programmable Gate Array,即現場可編程門陣列。 是作爲專用集成電路( ASIC)領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。

 簡而言之, FPGA 就是一個可以通過編程來改變內部結構的芯片。通過編程即設計硬件描述語言,經過 EDA 工具編譯、綜合、佈局佈線成後轉換爲可燒錄的文件,最終加載到 FPGA 器件中去,改變 FPGA 內部的連線,最終完成所實現的功能,所以可以利用FPGA來實現DMA外掛。

開頭提到的PCILeech FPGA 項目包含基於 FPGA 的 HDL 代碼,可以通過FPGA直接訪問計算機內存中的數據,那麼進一步編程並燒錄修改代碼,就可以進行數據修改(血量,金幣等),或者將數據導出來到其他設備上顯示(對手位置),下圖是該項目提供的win平臺上UI:

由於在DMA和CPU同時進行內存訪問的情況下,DMA的優先級會更高,利用這個特定,就可以使用FPGA模擬DMA請求來進行內存訪問,在windows系統上掛載內存到本地的K盤

讀取內存中數據,獲取系統進程信息

還可以獲取SAM哈希存儲信息

基於DMA的外掛則在讀取內存信息的基礎上更進一步,在訪問內存的同時對其進行修改,以達到鎖血,透視等作弊效果,又因爲後臺無法檢測到這類DMA行爲,所以反作弊非常困難。

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com