
1. 背景與核心概念1.1 什么是 Cheat EngineCheat Engine簡稱 CE是一款開源的內存掃描和調試工具。很多讀者第一次接觸它是在單機游戲里修改數值、體驗“魔改”玩法。但它的能力遠不止于此CE 本質上是一個完整的內存分析工具鏈可以完成以下工作進程附加與內存掃描枚舉目標進程的內存區域掃描指定數值并支持多次篩選縮小范圍。指針掃描與偏移追蹤定位動態地址背后的靜態基址和偏移鏈解決每次啟動程序地址變化的問題。反匯編與調試基于內置的反匯編引擎和調試器查看并修改指令流。Lua 腳本擴展CE 內嵌 Lua 腳本引擎可以自動化掃描、修改和自定義界面這是它區別于普通內存修改器的核心能力。Cheat Table.CT 文件以結構化文件保存地址列表、腳本和修改邏輯方便復用和分享。從專業角度看CE 是學習 Windows 內存管理、進程地址空間、指針溯源和調試器原理的優質實踐工具。在安全測試、CTF 比賽、逆向分析和游戲安全研究領域它都有用武之地。1.2 什么是 AI 編程AI 編程指利用大語言模型LLM驅動的編程助手輔助開發者完成代碼生成、代碼補全、報錯解釋、重構建議和測試生成等工作。常見工具包括GitHub Copilot老牌 AI 編程助手深度集成 VS Code、JetBrains 系列。Cursor基于 AI 的新一代代碼編輯器強調多文件上下文理解對 AI 編程有專門優化。JetBrains AI Assistant / 通義靈碼 / 文心快碼在 IDE 內部提供對話式編碼支持。通用大模型對話工具如 Claude、GPT 等也常被用來生成參考代碼、解釋概念。AI 編程的核心價值不是“替你寫一切代碼”而是縮短你從“想法”到“可運行代碼”之間的距離。對于 CE 這種腳本化強、API 細節多的工具AI 編程可以快速給出 Lua API 用法示例、掃描流程模板和報錯排查建議。1.3 為什么要把 CE 和 AI 編程結合起來CE 的 Lua 腳本、指針掃描、AOB 掃描等操作學習曲線較陡。網上資料往往零散有的只講游戲修改不講原理有的只貼 CT 表不講腳本邏輯。新手容易卡在幾個地方不知道 Lua 腳本怎么加載和運行。地址偏移如何計算、基址如何獲取概念混亂。寫腳本時對 CE 內置 API 不熟悉效率低。遇到“掃描結果不穩定”“附加失敗”“腳本報錯”等問題時沒有排查思路。這時候AI 編程工具可以充當“隨身導師”你描述需求它生成腳本框架你粘貼報錯它幫你分析原因。但 AI 生成的代碼不一定完全正確你需要具備基本的調試能力來驗證和修正。本文正是一套“CE 基礎操作 AI 輔助編程”的入門課幫助你建立完整的學習閉環。2. 環境準備與版本說明2.1 下載與安裝 Cheat EngineCheat Engine 官方提供 Windows 版本安裝過程比較簡單但有幾個注意點。下載渠道建議從官網下載避免第三方壓縮包捆綁廣告或惡意文件。版本選擇CE 不同版本界面和 Lua API 略有差異。本文示例以較新的 7.x 版本為例。安裝選項安裝過程中如果出現捆綁軟件勾選記得取消保持最小安裝。安裝完成后打開 CE界面大致分為左上角“進程選擇”按鈕小電腦圖標。中間“掃描區域”支持“值”“類型”“掃秒方式”等選項。下方地址列表Cheat Table 列表。菜單欄包含“表”“調試”“內存查看”等功能入口。版本提示不同版本的 CE 界面布局會有微小差異但核心功能一致。你不需要糾結具體版本號重點是掌握操作思路。2.2 選擇 AI 編程工具AI 編程工具的選擇主要看你的開發習慣場景推薦工具原因習慣 VS CodeCursor / GitHub Copilot編輯器集成好對話式生成方便習慣 JetBrainsIDEA、PyCharm 等GitHub Copilot / 通義靈碼插件生態成熟支持常見語言想快速提問、生成參考代碼Claude / GPT / 通義千問對話式交互適合解釋概念和排查報錯想配合 Python 自動化內存操作Cursor Python 環境Cursor 對 Python 項目結構理解較好我建議新手準備一個“AI 編程提示詞模板”比如你是一名熟悉 Cheat Engine 和 Lua 腳本開發的技術專家。 請幫我實現一個 CE Lua 腳本功能如下 1. 自動附加目標進程進程名不固定由用戶輸入。 2. 在指定地址范圍內掃描一個整數值。 3. 將掃描結果輸出到 CE Lua 控制臺。 要求代碼注釋詳細說明每個 API 的作用并給出可能的報錯處理。把需求描述得越具體AI 返回的結果越可用。2.3 準備測試目標程序學習 CE 時不建議一上來就操作復雜的商業軟件。推薦以下方式自己寫一個簡單的測試程序比如一個 C/C 程序聲明一個全局變量循環自增或者 Python 寫的簡單進程需要 exe 化。使用 CE 自帶的教程程序CE 安裝目錄自帶“Tutorial”程序專門用來練習掃描、指針和腳本是官方推薦的新手練習工具。開源練習項目GitHub 上有一些“故意留了漏洞”的內存練習程序。本文示例采用“自寫測試程序 CE 腳本 AI 輔助”的方式重點演示整個過程。3. 核心原理解析3.1 內存掃描的基本原理每個進程運行時系統會為它分配獨立的內存空間。程序中的變量、數組、對象都落在某個地址上。CE 做的事情是在進程的地址空間中尋找等于你輸入數值的內存單元。第一次掃描是“全量掃描”速度較慢。之后當你修改了目標數值CE 再進行“再次掃描”縮小候選范圍。反復幾次最終定位到存放該值的地址。這個流程的關鍵概念地址Address內存單元在進程地址空間中的位置通常用十六進制表示。數值Value當前地址存儲的數據。類型Type數據解釋方式如 Byte、2 Bytes、4 Bytes、8 Bytes、Float、Double、String。位數Hex / Decimal掃描時值用十進制或十六進制表達。新手常犯的錯誤是類型選擇不對導致掃不到值。比如游戲浮點數值用 Float 存儲你卻用 4 Bytes 掃描自然找不到穩定結果。3.2 動態地址與指針偏移現代程序尤其是游戲和大型軟件不會讓關鍵變量一直待在固定地址。每次啟動進程系統分配的內存地址都可能不同。為了穩定定位CE 引入了指針Pointer機制。假設你找到一個目標地址0x017A4B28里面存放了“金幣值”。重啟程序后這個地址可能變成0x01B2C880。但如果你能找到一個全局靜態地址0x00A1B2C0它保存的內容是一個“指針”指向一塊結構體結構體偏移0x4B28處才是真正的金幣值。那么目標地址 [0x00A1B2C0] 0x4B28[0x00A1B2C0]表示取這個地址中存儲的值再與偏移相加。在 CE 中你可以右鍵掃描結果選擇“指針掃描”Pointer Scan來生成可能的指針鏈。這個過程計算量大但 AI 編程可以幫助你理解指針鏈的含義、編寫“用 Lua 自動計算指針地址”的腳本。3.3 AOB 掃描與特征碼當地址動態變化、指針鏈又過于復雜時另一個常用方法是 AOBArray of Bytes掃描。它掃描指令序列或數據結構中的特征字節串只要特征碼穩定無論地址怎么變都能定位。AOB 示例// 特征碼8B 45 08 83 C0 01 89 45 08 scan: 8B 45 08 83 C0 01 89 45 08在 CE 中使用“掃描類型”選擇“Array of Bytes”輸入十六進制特征碼配合通配符??表示任意字節。AOB 掃描常用于制作游戲修改腳本、繞過動態地址限制。3.4 Lua 腳本與 CE APICE 內嵌 Lua 腳本引擎這意味著你可以把“掃描、附加、修改、遍歷地址列表”等操作全部用腳本自動化。核心 API 包括API作用openProcess(processName)按進程名附加getAddress(name)獲取符號名或模塊地址readInteger(address)讀取指定地址的 4 字節整數writeInteger(address, value)寫入 4 字節整數readFloat(address)讀取浮點數writeFloat(address, value)寫入浮點數createMemScan()創建內存掃描對象createFoundList()創建掃描結果列表getAddressList()獲取當前地址列表registerLuaFunction(name, func)注冊自定義 Lua 函數到 CE 菜單print(string)輸出到 Lua 控制臺注意CE Lua API 在不同版本中略有增減。AI 編程時需要告訴 AI 你使用的 CE 版本否則可能生成新版才有的 API。3.5 為何 AI 編程適合這個場景CE 的 Lua API 文檔分散、版本差異多新手用自然語言描述需求AI 生成的代碼可以作為起點。AI 擅長把“模糊需求”轉化為“可運行的框架”并且能解釋每行代碼的作用。但 AI 也有局限它可能“一本正經地編造”不存在的 API。它可能忽略 CE 版本差異。它無法預知目標進程的內存布局。所以正確姿勢是AI 生成框架你負責驗證和調整。腳本跑不通時把報錯信息完整粘貼給 AI它會給出修改建議。這是一個“人機協作”的迭代過程。4. 完整實戰案例AI 輔助編寫 CE Lua 腳本下面用一個完整案例串起整個流程。目標編寫一個 CE Lua 腳本自動附加目標進程、掃描一個整數值、把結果輸出到 Lua 控制臺并嘗試讀取和修改目標地址。4.1 創建項目結構我們不需要復雜的工程目錄先按下面結構準備ce-ai-demo/ ├── target_app/ │ └── demo_target.cpp # C 測試程序 ├── scripts/ │ ├── auto_scan.lua # CE Lua 掃描腳本 │ └── pointer_demo.lua # CE Lua 指針示例 └── ai_prompt/ └── prompt.txt # AI 提示詞模板4.2 編寫測試目標程序這里用 C 寫一個簡單的控制臺程序定義一個全局變量循環自增并等待用戶輸入。這樣我們可以用 CE 附加后觀察變量變化。// 文件路徑target_app/demo_target.cpp #include iostream #include thread #include chrono // 全局變量模擬游戲中的關鍵數值 int g_score 100; int main() { std::cout Demo Target Process std::endl; std::cout g_score initial value: g_score std::endl; std::cout Press Enter to exit... std::endl; // 每 500ms 讓 g_score 加 1方便 CE 再次掃描驗證 while (true) { std::this_thread::sleep_for(std::chrono::milliseconds(500)); g_score; std::cout g_score g_score std::endl; } return 0; }編譯命令Windows MinGW 示例g -o demo_target.exe target_app/demo_target.cpp運行后你會看到g_score從 100 開始一直遞增。4.3 編寫 AI 提示詞打開你的 AI 編程工具輸入下面提示詞你是一名 Cheat Engine Lua 腳本開發專家。請編寫一個 CE Lua 腳本完成以下功能 1. 彈出輸入框讓用戶輸入目標進程名例如 demo_target.exe。 2. 使用 openProcess 附加該進程。 3. 使用 createMemScan 創建一個內存掃描掃描一個 4 字節整數初始值為 100。 4. 掃描完成后使用 createFoundList 獲取結果列表。 5. 將結果數量輸出到 Lua 控制臺。 6. 如果結果數量為 1直接輸出該地址如果結果數量大于 1提示用戶手動再次掃描。 7. 每個關鍵步驟都要有注釋解釋 API 的作用。 要求兼容 Cheat Engine 7.x代碼完整可運行考慮附加失敗和掃描為空的異常情況。AI 通常會返回類似下面的腳本。我們以這份腳本為基礎逐行理解、驗證。4.4 核心 Lua 腳本源碼-- 文件路徑scripts/auto_scan.lua -- 說明AI 輔助生成的 CE Lua 掃描腳本手動整理版 -- 適用于 Cheat Engine 7.x -- 用戶輸入進程名 local processName demo_target.exe -- 附加進程 -- openProcess 會從系統進程列表中查找該名稱的進程 -- 如果找不到返回 false local opened openProcess(processName) if not opened then print([錯誤] 無法附加進程: .. processName) return end print([成功] 已附加進程: .. processName) -- 創建內存掃描對象 -- createMemScan() 返回一個 MemScan 對象用于定義掃描參數并執行 local scan createMemScan() -- 設置掃描參數 -- 第一個參數掃描類型0 表示精確數值掃描 -- 第二個參數值類型4 表示 4 BytesvtByte0, vtWord1, vtDword2, vtQword3, vtSingle4, vtDouble5, vtString6 -- 注意不同版本 CE 的常量映射可能不同建議用 4 或參考腳本函數模板 -- 第三個參數掃描模式0 表示“精確值”匹配 -- 第四/第五個參數掃描地址范圍0x0 到 0xFFFFFFFFFFFFFFFF 表示全范圍 -- 第六個參數要掃描的數值這里我們掃描 100 -- 第七個參數十六進制模式false 表示使用十進制 -- 第八個參數對齊方式1 表示按 1 字節對齊速度慢但更全面 scan.firstScan( 0, -- 掃描類型精確值 4, -- 值類型4 Bytes 0, -- 匹配模式等于 0x0, -- 起始地址 0xFFFFFFFFFFFFFFFF, -- 結束地址 100, -- 數值 false, -- 是否為十六進制 1, -- 對齊 false -- 忽略大小寫僅字符串用 ) -- 執行掃描 -- waitTillDone(true) 表示等待掃描完成 scan.waitTillDone(true) -- 創建結果列表 local foundList createFoundList(scan) foundList.initialize() -- 獲取結果數量 local count foundList.Count print([信息] 掃描結果數量: .. tostring(count)) if count 0 then print([錯誤] 沒有找到數值請確認進程正在運行且數值類型正確。) return end -- 如果結果只有一個輸出來地址 if count 1 then local address foundList.Address[0] print([結果] 唯一地址: 0x .. string.format(%X, address)) print([結果] 當前值: .. tostring(readInteger(address))) else print([提示] 結果較多請回到 CE 主界面修改目標數值后再用“再次掃描”篩選。) end -- 清理 foundList.destroy()在 CE 菜單欄選擇“表 - Lua 腳本/執行 Lua 腳本”打開腳本編輯窗口將代碼粘貼進去點擊“執行”。如果所有步驟成功Lua 控制臺會輸出類似[成功] 已附加進程: demo_target.exe [信息] 掃描結果數量: 1 [結果] 唯一地址: 0x1A2B3C40 [結果] 當前值: 1234.5 腳本解釋與參數說明上面的腳本有幾個關鍵點需要展開說明。第一firstScan參數非常多。新手最容易在這里被繞暈。核心參數是值類型和匹配模式。值類型選錯掃描結果為空匹配模式選錯結果會異常多。如果掃描結果數量巨大優先檢查這兩項。第二foundList.Address[0]只是讀取地址。它返回的是字符串形式的十六進制地址需要通過string.format(%X, address)規范化輸出。第三readInteger的 API。它用于讀取 4 字節整數。如果要讀浮點數可以用readFloat。對于新手建議先掌握整數和浮點數兩類其他類型按需查閱。第四這個腳本是“一次性”的。運行完就銷毀結果列表。實際運用中你可能希望把地址保留在地址列表Cheat Table中方便后續手動修改。這需要在腳本中調用getAddressList().getMemoryRecord().Description等 API屬于進階主題。4.6 擴展用 AI 實現“自動修改數值”在上面的基礎上我們可以讓 AI 繼續生成“將掃描到的唯一地址寫入自定義值”的代碼。你只要繼續向 AI 提問接上面的腳本。如果掃描結果唯一請彈出一個輸入框讓用戶輸入新數值然后將該地址的值修改為輸入的值。AI 可能生成類似代碼-- 文件路徑scripts/write_value.lua核心片段 if count 1 then local addr foundList.Address[0] print([結果] 唯一地址: 0x .. string.format(%X, addr)) -- 彈窗輸入新數值 local newValue inputQuery(修改數值, 請輸入新的整數, 100) if newValue nil then print([提示] 用戶取消輸入。) return end -- 嘗試轉換輸入為數字 local num tonumber(newValue) if not num then print([錯誤] 輸入不是合法數字。) return end -- 寫入整數 writeInteger(addr, num) print([成功] 已將地址寫入新值: .. newValue) -- 讀取驗證 print([驗證] 當前值: .. tostring(readInteger(addr))) end這個片段展示了 CE 腳本中常見的“讀改寫”流程定位地址 - 讀取值 - 寫入新值 - 再讀驗證。4.7 配合 Python 做內存操作有些場景你不想繼續用 CE 界面而是希望用 Python 腳本自動化讀取和修改內存。這里可以引入pymem庫開源項目常用于游戲內存分析。這在 AI 編程場景下非常常見因為 AI 能快速生成 Python 代碼。pip install pymemPython 示例# 文件路徑scripts/pymem_demo.py # 說明使用 pymem 讀取目標進程的全局變量值 # 注意需要目標進程以同權限運行且本例只是演示思路 import pymem import pymem.process process_name demo_target.exe try: pm pymem.Pymem(process_name) # 獲取進程模塊基址這里是示例實際地址需要結合 CE 掃描確定 module pymem.process.module_from_name(pm.process_handle, process_name) # 這里需要結合具體偏移生產代碼建議用 CE 離線分析后填入真實地址 base_address module.lpBaseOfDll # 假設全局變量相對模塊基址偏移為 0x100需根據實際編譯情況調整 address base_address 0x100 value pm.read_int(address) print(f讀取地址 0x{address:X} 的值: {value}) except pymem.exception.ProcessNotFound: print(目標進程未找到請先運行 demo_target.exe) except Exception as e: print(f程序錯誤: {e})注意全局變量的偏移需要你結合 CE 或編譯器符號確定這里只是一個“思路示例”不是可以直接套用的固定代碼。AI 編程時把這類提示發給 AI它通常會給出更貼合你項目的模板。5. 常見問題與排查思路5.1 附加進程失敗問題現象常見原因解決思路openProcess返回 false進程名拼寫錯誤在任務管理器中確認進程名注意大小寫附加后提示權限不足目標進程以管理員權限運行以管理員身份運行 CE附加的是 64 位程序CE 是 32 位模式版本不支持確認 CE 以正確位數運行5.2 掃描結果太多或掃不到問題現象常見原因解決思路掃描結果上百萬值類型選錯或匹配模式選錯換成 Float、4 Bytes 等正確類型使用“再次掃描”篩選掃描結果為 0目標程序沒有該值或進程未運行確認進程附加成功確認值類型與程序變量類型一致掃描后地址再次啟動失效動態地址問題使用指針掃描或 AOB 掃描5.3 Lua 腳本報錯問題現象常見原因解決思路attempt to index a nil valuefoundList 未初始化檢查foundList.initialize()是否調用bad argumentAPI 參數類型錯誤對照 CE API 文檔檢查參數或把報錯粘貼給 AI 分析找不到createMemScanCE 版本過舊升級到 7.x 或查閱舊版 API 名稱5.4 AI 生成的代碼不能用這是最常見的“坑”。AI 生成的 CE Lua 腳本可能存在以下問題使用了自定義封裝函數但你沒導入。使用了其它腳本框架的 API。版本不兼容。解決辦法向 AI 明確版本在提示詞中寫明“Cheat Engine 7.x”。把完整報錯回貼給 AI讓 AI 看到錯誤信息后修正。從簡入繁先讓 AI 生成“打印一行文字”的最小腳本跑通后再疊加功能。善用 CE 官方示例CE 安裝目錄自帶 Lua 腳本示例可以作為參考。6. 最佳實踐與工程建議6.1 腳本開發規范模塊化把“附加進程”“掃描”“修改值”拆成獨立函數方便復用。注釋完整CE Lua API 并不算廣為人知注釋里寫明每個參數的含義方便以后查閱。異常處理openProcess、掃描結果為空、寫入失敗都要有日志輸出避免“靜默失敗”。統一輸出在 Lua 控制臺輸出統一格式比如[成功] xxx、[錯誤] xxx、[警告] xxx。6.2 與 AI 協作的提示詞技巧寫 AI 提示詞時盡量包含以下要素角色你是一名 CE Lua 腳本專家。目標進程進程名、位數、運行環境。數據特征數值類型、初始值、變化規律。功能清單要做什么按優先級排序。限制條件CE 版本、是否允許彈窗、是否需要權限處理。輸出要求注釋詳細、代碼完整、說明運行方式。一個完整提示詞示例請編寫一個 Cheat Engine 7.x 的 Lua 腳本。目標進程是 Windows 64 位程序 test.exe。 我要掃描一個 Float 類型的玩家血量值初始值是 100.0角色受傷后血量會減少。 請實現 1. 附加 test.exe 2. 精確掃描 Float 值 100.0 3. 如果結果數量大于 1提示用戶手動再次掃描 4. 如果結果唯一給出地址 5. 提供讀取當前血量和設置凝血量的函數 6. 關鍵代碼寫注釋說明每個 API 的作用。6.3 安全與合規邊界CE 是一把雙刃劍。務必注意以下幾點僅用于合法場景學習、調試自己開發的程序、CTF 比賽、安全研究、單機游戲逆向學習。不要用于商業游戲作弊絕大多數商業游戲都禁止修改內存可能導致封號甚至涉及法律風險。不要在未授權系統上操作生產環境、他人設備、在線服務一律不要嘗試。注意殺毒軟件誤報部分安全軟件會把內存修改工具標記為風險程序建議只在本地測試環境使用并添加白名單。6.4 性能與穩定性建議掃描時優先限定地址范圍CE 支持按模塊、按區域掃描。只掃目標模塊的地址區間速度會快很多。避免頻繁全量掃描生產腳本中定位地址后盡量緩存不要每次啟動都全量掃描。寫入操作前確認地址有效程序退出或對象釋放后地址可能失效。寫入前可以讀取一次如果讀出來類型異常則跳過寫入。日志化在腳本中加入時間戳和操作記錄方便回溯問題。7. 總結與學習路線本文圍繞“Cheat Engine AI 編程”這個組合從概念開始到環境準備、核心原理、完整實戰案例再到排查思路和工程建議。你現在應該理解CE 不只是游戲修改器更是內存分析學習工具。AI 編程可以有效縮短 CE 腳本開發的學習曲線但 AI 生成代碼需要驗證和調試。附加進程、類型匹配、地址偏移、AOB 掃描、Lua API 是核心知識主線。遇到問題先看類型和版本再交給 AI 排查人機協作效率最高。下一步你可以按這個順序繼續學習CE 自帶 Tutorial完成全部章節覆蓋掃描、指針、碎碼等基礎。再看 CE 官方 Lua 示例學習腳本對地址列表的操作。嘗試寫一個自動化腳本比如“掃描血量變化的核心邏輯”。用 AI 輔助做一個小項目把 CE 定位能力與 Python 腳本結合實現一個內存監控小工具。操作時記得所有實驗都在本地測試環境完成尊重軟件使用協議。把 CE 當作“理解計算機內存的窗口”把 AI 當作“隨叫隨到的編程助手”這個學習過程會順暢很多。