跳至主要內容

CE 修改表 (Cheat Table) 安全嗎?使用前如何檢查 .CT 檔案

Cheat-Engine.net 作者:Cheat-Engine.net 閱讀需 8 分鐘 37 次瀏覽

.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 區塊會在你啟用該項目時執行,這也是勾選前要先檢查腳本的另一個原因。

需要注意什麼

以下這些都不一定是惡意的,其中有些有正當用途。但每一項都讓修改表具備超出修改遊戲數值的能力,所以看到時,請確認你了解它為什麼在那裡。

函式或功能位置能做什麼
shellExecuteLua在你的電腦上開啟檔案或執行程式
os.execute, io.popenLua執行系統指令
io.open 搭配寫入模式,例如 "w" 或 "wb"Lua建立或覆寫檔案
getInternet 及其下載函式Lua從網路取得資料或檔案
loadstring, loadLua執行由字串組成的程式碼,可能被隱藏或從網路下載
package.loadlibLua將原生 DLL 載入 Cheat Engine
injectDLL, loadlibraryLua / Auto Assembler將 DLL 載入遊戲處理程序
decodeFunction、很長的編碼資料塊Lua執行你無法閱讀的已編譯或混淆程式碼
內嵌檔案加上儲存它們的程式碼修改表檔案 / Lua在磁碟上放置檔案,可能還會執行它
{$lua} 區塊Auto Assembler在腳本項目啟用時執行 Lua

混淆是最明顯的警訊

在上述所有項目中,你無法閱讀的程式碼最需要小心。一長串看似隨機的字母被送進 load、loadstring 或 decodeFunction,或是腳本先解碼文字再執行,都會隱藏修改表真正做的事。有些作者為了保護自己的作品而混淆,但從外部你無法分辨差別。如果無法檢查,就不要執行。

要看上下文

用 getInternet 檢查自身是否有新版本並顯示訊息的修改表,和下載執行檔並用 shellExecute 執行的修改表是不一樣的。請閱讀周圍的程式碼如何處理結果。寫入遊戲的數值、顯示給你的訊息和小型設定檔都很正常。執行程式、從不明網址抓取檔案,以及從意外位置載入 DLL,都不是單機遊戲的 CE 修改表通常需要做的事。

啟用任何東西之前的檢查流程

  1. 在 CT 檢視器或文字編輯器中開啟修改表。對照修改表頁面的說明,檢查項目清單。
  2. 閱讀修改表 Lua 腳本(如果有的話)。找找上表中的函式。
  3. 在所有 Auto Assembler 腳本中搜尋 {$lua}、injectDLL 和 loadlibrary。
  4. 檢查是否有內嵌檔案,並查明是什麼在使用它們。
  5. 在 Cheat Engine 中載入修改表,若有任何疑慮就拒絕 Lua 提示。單純的數值項目在沒有它時仍可運作。
  6. 備份你的存檔,然後一次啟用一個項目,這樣萬一出問題,你就知道是哪個項目造成的。

關於如何使用 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 或經過混淆的程式碼要最謹慎。
  • 備份你的存檔,並只玩單機和離線遊戲。

留言

0
回覆給

不會公開顯示。

留言需經版主審核後才會顯示。

尚無留言

成為第一個分享想法的人吧。