CE 修改表 (Cheat Table) 安全嗎?使用前如何檢查 .CT 檔案
.CT 檔案是純 XML,但可能包含 Lua 和 Auto Assembler 腳本以及內嵌檔案。了解該注意哪些地方、哪些函式需要小心,以及如何先檢查 CE 修改表。
CE 修改表 (Cheat Table) 只是一個小型文字檔,所以很容易讓人以為它不會造成任何傷害。當它只是放在你的硬碟裡時,這大致上是對的。但一旦把它載入 Cheat Engine,修改表就能執行程式碼,而且這些程式碼擁有與 Cheat Engine 相同的權限。大多數分享的修改表都如其所述,但沒有讀過檔案內容,誰也無法保證。本指南會告訴你修改表可能包含什麼、哪些部分需要多加留意,以及使用前如何檢查。
.CT 檔案是什麼
.CT 檔案是 XML:結構化的純文字,可以用任何文字編輯器開啟。一個最簡單的修改表大致如下:
<CheatTable CheatEngineTableVersion="45">
<CheatEntries>
<CheatEntry>
<ID>0</ID>
<Description>"Gold"</Description>
<VariableType>4 Bytes</VariableType>
<Address>"game.exe"+01A2B3C0</Address>
<Offsets>
<Offset>18</Offset>
<Offset>10</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatTable>
用文字編輯器,或使用我們完全在瀏覽器中運作的線上 CT 檢視器開啟修改表,並不會執行任何內容。用這種方式檢查修改表永遠是無害的。
修改表可能包含什麼
- 數值與指標項目。包含位址、類型和描述。它們只會讀取和寫入遊戲記憶體。主要風險在遊戲本身:錯誤的數值可能導致遊戲當機,或被寫進你的存檔。
- Auto Assembler 腳本。啟用時會修改遊戲程式碼的腳本項目。通常只會影響遊戲處理程序,但 Auto Assembler 也能把 DLL 載入遊戲中,並可包含內嵌的 Lua 區塊(寫成
{$lua}...{$asm}),在腳本啟用時以 Lua 執行。 - 修改表 Lua 腳本。附加在整個修改表上的 Lua 腳本,存放於檔案的
LuaScript區段。它可能在載入修改表時、你勾選任何項目之前就執行。Cheat Engine 中的 Lua 是完整的腳本語言,可存取檔案、其他程式和網路。 - 內嵌檔案。修改表內可以以編碼形式夾帶檔案。作者會用來放圖片、音效或輔助資料,但腳本也可能把內嵌檔案寫到磁碟並執行。
- 表單與結構。自訂視窗(用於修改器風格的介面)和資料結構定義。表單通常由 Lua 驅動,所以會附帶需要檢查的 Lua 程式碼。
Cheat Engine 在執行修改表的 Lua 腳本前會先詢問
當你載入含有修改表 Lua 腳本的修改表時,Cheat Engine 會跳出提示,詢問是否要執行。這個提示的目的,就是讓你在讀過腳本之後再決定,而不是之前。良好習慣:
- 第一次載入修改表時,選擇拒絕。項目仍會載入,只有修改表腳本會被略過。
- 閱讀腳本。你可以在 Cheat Engine 內透過 Table 選單查看,或在 CT 檢視器或文字編輯器中更方便地閱讀。
- 如果腳本看起來沒問題,再重新載入修改表並接受。
- 保持 Cheat Engine 在執行修改表腳本前詢問的設定為開啟。改成永遠執行,就等於放棄了檢查的機會。
請注意,這個提示只針對修改表腳本。Auto Assembler 腳本內的 Lua 區塊會在你啟用該項目時執行,這也是勾選前要先檢查腳本的另一個原因。
需要注意什麼
以下這些都不一定是惡意的,其中有些有正當用途。但每一項都讓修改表具備超出修改遊戲數值的能力,所以看到時,請確認你了解它為什麼在那裡。
| 函式或功能 | 位置 | 能做什麼 |
|---|---|---|
shellExecute | Lua | 在你的電腦上開啟檔案或執行程式 |
os.execute, io.popen | Lua | 執行系統指令 |
io.open 搭配寫入模式,例如 "w" 或 "wb" | Lua | 建立或覆寫檔案 |
getInternet 及其下載函式 | Lua | 從網路取得資料或檔案 |
loadstring, load | Lua | 執行由字串組成的程式碼,可能被隱藏或從網路下載 |
package.loadlib | Lua | 將原生 DLL 載入 Cheat Engine |
injectDLL, loadlibrary | Lua / Auto Assembler | 將 DLL 載入遊戲處理程序 |
decodeFunction、很長的編碼資料塊 | Lua | 執行你無法閱讀的已編譯或混淆程式碼 |
| 內嵌檔案加上儲存它們的程式碼 | 修改表檔案 / Lua | 在磁碟上放置檔案,可能還會執行它 |
{$lua} 區塊 | Auto Assembler | 在腳本項目啟用時執行 Lua |
混淆是最明顯的警訊
在上述所有項目中,你無法閱讀的程式碼最需要小心。一長串看似隨機的字母被送進 load、loadstring 或 decodeFunction,或是腳本先解碼文字再執行,都會隱藏修改表真正做的事。有些作者為了保護自己的作品而混淆,但從外部你無法分辨差別。如果無法檢查,就不要執行。
要看上下文
用 getInternet 檢查自身是否有新版本並顯示訊息的修改表,和下載執行檔並用 shellExecute 執行的修改表是不一樣的。請閱讀周圍的程式碼如何處理結果。寫入遊戲的數值、顯示給你的訊息和小型設定檔都很正常。執行程式、從不明網址抓取檔案,以及從意外位置載入 DLL,都不是單機遊戲的 CE 修改表通常需要做的事。
啟用任何東西之前的檢查流程
- 在 CT 檢視器或文字編輯器中開啟修改表。對照修改表頁面的說明,檢查項目清單。
- 閱讀修改表 Lua 腳本(如果有的話)。找找上表中的函式。
- 在所有 Auto Assembler 腳本中搜尋
{$lua}、injectDLL和loadlibrary。 - 檢查是否有內嵌檔案,並查明是什麼在使用它們。
- 在 Cheat Engine 中載入修改表,若有任何疑慮就拒絕 Lua 提示。單純的數值項目在沒有它時仍可運作。
- 備份你的存檔,然後一次啟用一個項目,這樣萬一出問題,你就知道是哪個項目造成的。
關於如何使用 CE 修改表的指南,詳細介紹了載入、啟用和疑難排解。
檢查無法告訴你的事
檢查修改表中的風險函式,是為了保護你的電腦。它不能保證修改表可以正常運作,也無法排除遊戲當機或存檔損毀,這就是備份很重要的原因。它也不會改變修改表適用範圍:僅限單機和離線遊戲。在線上或多人遊戲中使用記憶體修改會影響其他玩家,並可能導致帳號被封鎖,不論怎麼檢查都不能因此變得可以接受。
請從官方網站取得 Cheat Engine 本身
以上這一切都假設 Cheat Engine 本身是正版。請只從官方網站 cheatengine.org 下載,仔細閱讀安裝程式的每個畫面,並拒絕選擇性的附帶軟體。Cheat-Engine.net 是獨立的 CE 修改表社群網站,與 Cheat Engine 的開發者 Dark Byte 沒有任何關聯。請提防其他地方的「Cheat Engine」下載,也要提防任何以 CE 修改表之名、實際上卻是 .exe 檔的東西。Cheat Engine 也可以產生獨立的修改器和受保護的修改器檔案;這些比單純的 .CT 檔案難檢查得多,所以請格外小心。
總結
- .CT 檔案是可閱讀的 XML;閱讀它是無害的,但在 Cheat Engine 中執行它並不一定安全。
- 數值項目對你的電腦風險很低;腳本、Lua 和內嵌檔案則值得檢查。
- 在讀過腳本之前,先拒絕 Lua 提示。
- 對會執行程式、寫入檔案、下載、載入 DLL 或經過混淆的程式碼要最謹慎。
- 備份你的存檔,並只玩單機和離線遊戲。
留言
尚無留言
成為第一個分享想法的人吧。