
這次我們來看一個很特別的組合Cheat EngineCE AI 編程。CE 是老牌的內存掃描與逆向分析工具常用于單機游戲調試、內存數據修改、指針鏈路分析和 CTF 逆向學習而 AI 編程工具可以幫你寫 CE 的 Lua 腳本、自動匯編腳本也能幫你解釋反匯編結果、設計指針掃描思路。兩者疊加之后學習門檻會下降一大截。這篇文章不聊怎么去在線游戲里作弊也不是教破解商業軟件。我們的目標很明確在你有權限、有授權的測試環境中用 CE 結合 AI 編程完成內存掃描、數值定位、指針分析、腳本編寫和批量讀取。全文會按照“環境準備 → 基本操作 → AI 輔助腳本 → 批量任務 → 排錯思路”的順序展開適合剛接觸 CE、同時對 AI 編程感興趣的讀者。先說結論CE 本身不吃配置普通 Windows 電腦都能跑AI 編程工具選一個趁手的 IDE 插件或網頁對話產品就行。真正需要花時間的是理解內存地址、指針、偏移這些概念以及學會把 AI 生成的腳本審查后落地。下面直接進入正題。1. 核心能力速覽能力項說明項目類型內存掃描 / 逆向分析 / 進程調試工具核心功能進程附加、內存掃描、數值修改、指針掃描、反匯編、自動匯編腳本、Lua 腳本CE 硬件需求普通 Windows 電腦即可內存占用很低無獨立顯卡要求可運行平臺Windows 為主Linux 可通過源碼構建實際版本和功能按官方發布為準啟動方式下載安裝包 / 綠色壓縮包解壓后運行Cheat Engine.exe能否本地寫腳本支持 Lua 腳本和自動匯編腳本可在 CE 內直接運行是否支持批量任務支持可通過 Lua 循環、定時器和地址數組做批量讀取/寫入是否提供 APICE 提供 Lua 接口適合在 CE 內部做自動化沒有獨立的對外 HTTP API結合 AI 編程的價值快速生成 Lua/AA 腳本、解釋內存結構、梳理指針偏移分析思路、輔助排查腳本報錯適合場景單機游戲機制研究、CTF 逆向入門、軟件行為分析、內存數據快照對比不適合場景在線游戲作弊、繞過商業軟件授權、未經授權修改他人系統從表格可以看到CE 不是一個“AI 項目”而是一個傳統調試工具。AI 編程賦能它主要體現在腳本編寫效率和逆向思路梳理上。2. 適用場景與使用邊界2.1 推薦使用場景CE 加 AI 編程的組合最適合下面幾類人逆向工程入門者想理解進程內存布局、地址、指針、偏移這些概念CE 的掃描功能比純讀反匯編更直觀。CTF 玩家很多逆向題目會考內存讀寫、邏輯修改CE 可以快速定位關鍵內存。單機游戲機制研究者想驗證某個單機游戲里的數值計算規則可以在本地測試環境通過 CE 觀察并修改內存。AI 編程學習者把 CE 的 Lua 腳本作為練習場景用 AI 生成代碼、人工審查并運行這是比較典型的“AI 輔助開發”工作流。從材料涉及的熱詞來看很多人關心AI 編程、Cursor、AI 編程提示詞。所以這篇文章會把 AI 編程作為“輔助工具”來用而不是反過來。2.2 必須注意的邊界CE 本身是合法開源工具但使用范圍有硬邊界只改你有權限修改的進程。自己寫的測試程序、官方允許模改的單機游戲、CTF 比賽題目都屬于合理范圍。不要用于在線游戲作弊。聯網游戲通常有反作弊系統修改內存不僅違反用戶協議還可能觸發賬號封禁或法律風險。不要繞過商業軟件授權驗證。用 CE 修改授權狀態、跳過激活校驗屬于侵權行為。AI 生成的腳本需要人工審查。AI 不熟悉你的目標程序生成的腳本可能包含錯誤指令或危險操作直接盲跑會藍屏或崩潰。涉及人臉、聲音、版權素材時不因“本地工具”而豁免授權。這和圖像/語音模型的要求一致做實驗只用自己的素材。簡單說CE 是學習與調試工具不是破壞工具。文章后面所有示例都建議在本地測試程序或你有授權的環境中進行。3. 環境準備與前置條件3.1 安裝 Cheat EngineCE 的安裝比較簡單但要注意兩點來源和殺毒誤報。下載時優先選擇官方網站或可信的軟件分發平臺不要隨便用搜索到的cheat engine 壓縮包、老版下載鏈接。很多非官方包會捆綁其他程序。CE 是內存調試工具部分殺毒軟件會報風險。如果只是學習用途建議先把 CE 加入信任列表或者用隔離測試環境運行。安裝時可選擇安裝路徑默認會附帶一些說明文檔和示例 CT 表。啟動方式很簡單# Windows 下直接運行 Cheat Engine.exe如果解壓的是綠色版同樣找到主程序運行即可。3.2 準備測試目標程序不建議一上來就打開大型游戲最好用一個你完全可控的程序來練習。可以自己寫一個簡單的 C 控制臺程序里面放一個整型變量和一個循環輸入方便測試掃描功能。#include iostream int main() { int hp 100; int userInput 0; std::cout PID: GetCurrentProcessId() std::endl; std::cout hp address: hp std::endl; while (true) { std::cout hp hp std::endl; std::cout input new hp value: ; std::cin userInput; hp userInput; } return 0; }編譯運行后程序會打印當前 PID、hp 變量的地址并允許你通過輸入來改變 hp 值。這個程序是完美的 CE 掃描練習目標你能預先知道變量地址和地址變化時機方便對照驗證。如果沒有編程環境也可以開一個單機小游戲或者使用 CTF 逆向練習程序。3.3 準備 AI 編程工具AI 編程工具有很多選擇常見的有CursorAI 原生的代碼編輯器適合寫腳本、自然語言生成代碼。GitHub CopilotIDE 插件代碼補全和對話能力很強。網頁版大模型不需要安裝適合快速提問、解釋概念、生成 Lua 腳本。本地大模型如果對數據隱私要求高可以部署本地模型但對代碼生成質量要求也更高。我的建議是先用一個網頁版對話工具做概念咨詢和腳本生成再用 IDE 插件做實際編寫。CE 的 Lua 腳本不長AI 對話工具完全能生成但你需要學會寫清晰的提示詞。一個通用提示詞模板你是一個 Cheat Engine Lua 腳本專家。我現在有一個正在運行的程序已經用 CE 附加了進程。 請幫我寫一個 Lua 腳本完成以下任務 1. 讀取地址 0x0042A1B0 的 4 字節整數。 2. 將它寫入到日志窗口。 3. 每隔 1000 毫秒重復一次。 請給出可以直接粘貼到 CE Lua 引擎運行的腳本并解釋每行作用。把這類提示詞復制到 AI 工具里就能得到初版腳本。后文會繼續展開提示詞技巧。4. 第一次內存掃描讓 AI 幫你理解“類型與數值”4.1 手動掃描流程很多新手第一次用 CE 時容易卡在“為什么掃描結果一大堆”。其實掃描流程本身很簡單打開 CE點擊左上角“Select a process”選擇一個進程。選擇剛才運行的測試程序。在 Value數值框輸入當前 hp 值例如100。Scan Type掃描類型選擇Exact Value精確數值。Value Type數值類型選擇4 Bytes4 字節因為 int 是 4 字節。點First Scan首次掃描。回到程序中輸入新的 hp 值例如200。點Next Scan再次掃描。重復兩次后掃描結果會收斂到少量地址雙擊一個地址把它加入地址列表。在地址列表下方直接修改值為其他數字回到程序觀察 hp 的變化。這就是 CE 的基礎工作流首次掃描 → 改變數值 → 再次掃描 → 收斂地址 → 修改驗證。4.2 用 AI 理解掃描參數對新手來說比較難理解的是這幾個參數Value Type數值類型。4 Bytes 對應int8 Bytes 對應long longFloat 對應單精度浮點數Double 對應雙精度浮點數。Scan Type掃描方式。Exact Value 是精確匹配Bigger than 是大于某個值Changed value 是變化過的值。Hex開關如果目標地址用十六進制顯示需要勾選 Hex。你可以直接問 AI我在用 Cheat Engine 掃描一個 C 程序里的 float 類型變量但用 4 Bytes 掃不到。 CE 里應該怎么選數值類型float 和 4 Bytes 有什么區別AI 大概率會解釋float在內存中按 IEEE 754 存儲和普通int的二進制解釋方式完全不同所以 CE 中要選Float或Double。這就是 AI 輔助學習的價值——它能把概念講得更貼近你的具體問題。4.3 判斷成功與失敗判斷標準掃描結果數量從幾十萬一路收斂到幾個地址。修改地址列表中的數值后測試程序中的對應值變化。程序尚未崩潰修改可逆。常見失敗原因數值類型選錯導致掃不到。程序開啟“優化后變量位置變化”導致你把舊地址當成新地址。進程附加失敗CE 沒有權限讀取目標進程。掃描過程中程序在并發寫同一個內存地址導致結果不穩定。如果掃不到先回到測試程序確認變量確實在變化然后重開掃描會話。5. 指針與偏移AI 最適合的講解場景5.1 為什么需要指針第一次掃描后定位到的地址可能是動態地址。也就是說程序每次重啟后這個數值的實際內存位置會變化。為了讓修改腳本在下次啟動時依然有效就要找到“指向這個地址的指針”以及從某個穩定模塊地址開始的一串偏移。舉例目標血量的動態地址0x0234A1B0 可能存在的指針鏈路 測試程序.exe 0x003F2A88 - 指向一個結構體 結構體 0x20 - 指向另一個對象 該對象 0x10 - 最終指向 hp 變量CE 的Pointer Scan指針掃描就是自動搜索這些鏈路。操作流程是先通過掃描定位到目標地址并把它加入地址列表。右鍵點擊該地址選擇Pointer scan for this address。設置最大偏移、最大層級開始掃描。重啟程序重新定位新地址。用掃描出的指針鏈路去訪問驗證是否能夠穩定定位。5.2 讓 AI 幫你設計偏移分析提示詞指針掃描經常掃出成百上千條鏈路新手不知道選哪條。這時可以把信息給 AI讓它幫你梳理我用 Cheat Engine 對單機測試程序做指針掃描掃出了以下幾條候選鏈路 [link list] 我的目標是 hp 變量程序是 C 寫的模塊基址是 TestGame.exe。 請幫我分析服務器端如何判斷這條鏈路更穩定優先選擇哪類偏移路徑為什么AI 能從這些候選鏈路中幫你總結規律比如優先選擇模塊名開頭是程序主模塊的鏈路因為系統 DLL 地址可能隨系統版本變化。偏移量較小的鏈表通常更穩定但也要結合程序結構判斷。指針指向的地址如果落在堆區域鏈路可能更可靠。不過要強調AI 的分析只能作為參考最終判斷必須靠實機驗證。尤其是指針偏移不同編譯器和優化選項會導致完全不同的布局。5.3 實機驗證的標準判斷指針鏈路是否有效標準很簡單重啟目標程序讓舊地址失效。利用候選指針鏈路重新計算目標地址。讀取該地址數值看是否等于當前 hp 值。修改該地址數值看程序是否響應。如果多次重啟后依然穩定這條鏈路就可以寫進腳本里。6. CE 腳本入門自動匯編與 Lua 雙軌并行CE 有多種腳本方式最常見的是兩種Auto AssemblerAA 腳本和Lua 腳本。AI 編程在兩種場景里都能幫上忙。6.1 自動匯編腳本AA 腳本本質上是匯編級別的內存補丁它可以在目標進程的指定地址寫入一段跳轉邏輯實現“當你訪問某塊內存時先執行我們的代碼再回到原邏輯”。典型結構如下[ENABLE] // 分配一塊新內存 alloc(newmem, 2048) label(returnhere) label(originalcode) label(exit) newmem: // 在這里寫入你自己的匯編邏輯 // 例如把 eax 寄存器加 1 inc eax jmp originalcode originalcode: // 這里是原本要執行的指令需要從反匯編窗口里復制 mov [rsi10],eax exit: jmp returnhere // 把目標地址的指令改成跳轉到 newmem TestGame.exe123ABC: jmp newmem nop returnhere: [DISABLE] // 恢復原始指令 TestGame.exe123ABC: mov [rsi10],eax dealloc(newmem)這個腳本只是模板實際指令必須根據目標進程的反匯編結果來寫。AI 不能憑空幫你生成精確的匯編指令它只能生成一個結構正確的框架真正的originalcode需要你從 CE 的反匯編窗口復制。給 AI 的提示詞可以這樣寫這是我用 Cheat Engine 反匯編得到的一段指令 [粘貼指令] 我想在它執行之前把 ebx 的值加 5請幫我寫一個完整可用的 AA 腳本框架保留原指令并用 [ENABLE]/[DISABLE] 塊組織。AI 會補全分配內存、跳轉、恢復等邏輯但你要檢查寄存器使用是否沖突。6.2 Lua 腳本Lua 腳本比 AA 腳本更接近日常編程適合做地址讀取、寫入、循環、批處理和 GUI 交互。CE 的 Lua 引擎是內置的通過菜單Table - Show Cheat Table Lua Script打開腳本編輯窗口。一個最簡單的讀取示例-- 檢查是否已附加進程 local pid getOpenedProcessID() if pid 0 then showMessage(請先附加目標進程) return end -- 從模塊基址加上偏移獲取地址 local addr getAddress(TestGame.exe10AB0) if addr nil then showMessage(地址無效請檢查模塊名和偏移) return end -- 讀取當前值并寫入日志窗口 local hp readInteger(addr) print(當前 hp .. hp) -- 寫入一個新值 writeInteger(addr, 999) print(已寫入 hp 999)這個腳本能在沒有圖形界面操作的情況下直接通過代碼完成內存讀寫。AI 很適合生成這類腳本因為邏輯簡單、API 穩定只要給出明確需求就能產出接近可用的代碼。6.3 AI 輔助調試腳本AI 生成的 Lua 腳本經常會有小問題比如 API 名稱錯誤、路徑寫錯、函數返回值沒判空。把這些報錯信息直接丟給 AI是最高效的排查方式我在 CE Lua 引擎里運行這段腳本報錯 attempt to call a nil value (global readInteger) CE 版本是 7.x。請幫我看看是什么原因怎么改成正確寫法。實際原因通常是CE 腳本引擎中函數名區分大小寫或者該函數僅在附加進程后才可用。AI 會根據報錯信息和上下文給修復建議。7. AI 編程實戰批量讀取多個地址的 Lua 小工具7.1 場景描述假設你有一個測試程序里面同時存在血量、魔法值、攻擊力三個變量。你想用 Lua 腳本每隔一秒批量讀取一次這三個值并把結果輸出到日志窗口方便觀察變化規律。這個場景很適合用來演示“AI 編程 CE 批量任務”的組合。7.2 提示詞示例我是一個 Cheat Engine 初學者目標程序已經附加在 CE 中。 我有三個動態地址分別是 - 0x0042A1B0血量 - 0x0042A1B4魔法值 - 0x0042A1B8攻擊力 請用 CE Lua 腳本實現 1. 每秒批量讀取這三個地址的 4 字節整數。 2. 用 print 輸出格式化日志。 3. 運行 10 次后自動停止。 4. 腳本要判斷地址是否有效避免崩潰。7.3 AI 生成的示例代碼local addresses { { name Hp, addr 0x0042A1B0 }, { name Mp, addr 0x0042A1B4 }, { name Atk, addr 0x0042A1B8 } } local tickCount 0 local maxTicks 10 function readBatch() if tickCount maxTicks then print(批量讀取結束) return end for i, item in ipairs(addresses) do local valid, value pcall(readInteger, item.addr) if valid then print(string.format([%d] %s %d, tickCount 1, item.name, value)) else print(string.format([%d] %s 讀取失敗, tickCount 1, item.name)) end end tickCount tickCount 1 end -- 每 1000ms 調用一次 createTimer(nil, true) local timer getTimer() timer.Interval 1000 timer.OnTimer readBatch timer.Enabled true這段代碼不保證在 CE 7.x 所有版本里直接運行因為createTimer的用法在不同版本有差異。但它展示了批量任務的骨架地址數組 循環讀取 pcall 異常保護 定時器驅動。如果你要實際使用建議把 AI 生成代碼粘到 CE 里試跑遇到報錯再把日志貼給 AI 修。這本身就是標準 AI 編程工作流生成 → 運行 → 反饋 → 迭代。7.4 擴大為真正的批量任務上面的腳本可以很容易擴展成“批量”思路地址列表來自文件把地址和名稱寫在文本文件中腳本逐行讀取。批量寫入把讀取邏輯替換成寫入邏輯注意先備份原始值。批量對比程序運行前后各快照一次對比哪些地址發生變化。日志落盤用 Lua 的io.open把結果寫入 CSV 文件方便后續分析。local file io.open(snapshot.csv, w) file:write(address,name,value\n) for i, item in ipairs(addresses) do local value readInteger(item.addr) file:write(string.format(%08X,%s,%d\n, item.addr, item.name, value or 0)) end file:close() print(快照已寫入 snapshot.csv)這就是典型的“批量任務”落地方式。CE 本身不是一個云服務但它內置的 Lua 引擎足夠完成本地自動化。如果你想要更強大的異步任務隊列可以先讓 CE 導出日志再由外部 Python 腳本做分析。8. 接口能力說明CE 沒有 HTTP API怎么集成很多讀者可能習慣調用 API 服務。這里要明確CE 默認不是網絡服務沒有對外 HTTP API。它提供的是進程內 Lua 接口。如果你需要把 CE 集成到 Python 或 Node.js 的自動化流程中常見思路有三種8.1 方案一CE Lua 腳本 文件通信讓 CE Lua 腳本讀取外部配置文件處理完后寫結果到指定目錄。外部程序通過文件系統觀察結果。-- CE 側 local configFile io.open(config.json, r) local content configFile:read(*a) configFile:close() -- 解析 JSON 并執行任務外部 Python 只負責生成配置文件和讀取結果文件不直接操作 CE。這種方案最簡單也最穩定。8.2 方案二外部程序通過窗口消息調用CE 支持通過命令行參數加載 CT 文件和 Lua 腳本。外部程序可以啟動一個新的 CE 進程并傳入腳本路徑。Cheat Engine.exe -open my_script.lua具體參數在不同版本里可能不同需要查閱當前版本幫助。8.3 方案三完全改到外部編程語言中如果你的核心目標是“批量讀取內存”其實不需要 CE 當運行時。Python 有很多庫可以直接讀取進程內存比如pymemWindows 下可用。AI 生成這類代碼比生成 CE Lua 腳本更像是“常規 AI 編程”。但使用前要確保你有權限訪問目標進程且不會和反作弊系統沖突。綜合來看CE 的定位不是“提供 Web API 的中間件”而是“可視化逆向工具 內置腳本運行時”。想把它做成自動化工序最友好的方式仍然是CE 腳本 文件/命令行聯動。9. 資源占用與性能觀察CE 本身的資源占用非常低因為它主要是對目標進程做內存掃描不像大模型需要吃 GPU 顯存。但如果你同時開著 AI 編程工具資源占用就要分開看。9.1 CE 的資源占用觀察點內存掃描過程中的 CPU 占用掃描整個內存范圍時會短時升高特別是首次大范圍掃描。暫停進程CE 可以暫時掛起目標進程讓內存區域靜止方便精確修改。掃描模式選擇CE 有多種掃描選項例如“Fast Scan”和“Ultimap2”不同模式性能差別較大需要根據場景選擇。附加大量進程時的穩定性如果同時打開很多程序CE 的畫面和列表會變慢但這通常不影響核心掃描功能。你可以用 Windows 任務管理器或進程監控工具觀察 CE 進程的資源占用。一般來說CE 不是性能瓶頸真正的瓶頸是目標程序的大小和掃描頻率。9.2 AI 編程工具的資源占用觀察點AI 編程工具的資源占用差異很大IDE 插件如 GitHub Copilot依托云端模型本地占用主要是 IDE 本身顯存幾乎不占。本地大模型插件的顯存占用則要看模型規格。常見的 7B/13B 模型在量化后可能需要 6G 到 12G 顯存具體以本機測試為準。如果只是輔助學習沒必要本地部署。所以組合使用時的建議是CE 負責輕量級的進程分析AI 編程用云端對話或 IDE 插件就夠。這樣資源占用最小啟動最快。10. 常見問題與排查方法問題現象可能原因排查方式解決方案CE 無法附加目標進程權限不足目標進程以管理員身份運行右鍵 CE 以管理員身份運行或以普通權限運行目標程序大部分掃描結果無法收斂數值類型選錯或程序在并發修改該內存確認變量類型暫停進程后掃描改為 Float/8 Bytes或暫停進程后在操作修改數值后程序不響應修改的是顯示層緩存不是真實邏輯內存嘗試用指針掃描定位真實地址改用指針鏈路不直接用掃描快照地址地址列表里的地址重啟后失效這是動態地址沒有通過指針固化重啟目標程序執行指針掃描用指針 偏移重建地址AA 腳本注入后程序崩潰原指令復制錯誤或寄存器沖突反匯編窗口核對原始字節恢復原始指令重新設計注入點Lua 腳本提示函數不存在CE 版本低或函數是內置引擎才可調用打印 CE 版本并查閱幫助調整函數名或改用低版本兼容寫法殺毒軟件攔截 CECE 是內存調試工具容易被誤報查看殺毒隔離區在測試環境使用或加入信任列表AI 生成的腳本不符合 CE 語法提示詞缺少環境信息把 CE 版本和報錯信息貼給 AI補充版本、目標 API、報錯日志再生成排查通用原則先看 CE 右下角狀態欄再看 Lua 引擎日志最后看目標進程是否還活著。CE 報錯信息通常已經很明確把報錯原文復制給 AI 是最快的解決路徑。11. 最佳實踐與合規建議11.1 工作區管理CE 的 CT 表文件.CT和腳本很容易散落。建議按項目整理目錄project/ ├── target/ # 目標測試程序副本 ├── scripts/ # Lua 腳本和 AA 腳本 ├── tables/ # CT 表文件 ├── logs/ # 批量讀取日志 └── notes/ # AI 對話記錄和地址筆記這樣每次訓練新目標時都能快速復用已有腳本。11.2 AI 提示詞模板沉淀把好用的提示詞存成模板能顯著提升效率。推薦框架角色CE 腳本專家 目標程序描述模塊名、地址、寄存器狀態 任務明確要讀取/寫入/注入的事務 約束需要版本兼容、需要錯誤處理、需要注釋 輸出可直接運行的完整腳本 關鍵步驟說明11.3 合規使用清單每次動手前自檢三件事這個目標程序是不是我擁有、或我有權修改的這次操作是不是在單機/測試環境里進行我不會把這個腳本用于在線游戲作弊、商業軟件破解或非法入侵。只要有一條不滿足就停止。11.4 安全使用建議不要隨意打開網上下載的 CT 表腳本可能包含惡意內存寫入指令。AI 生成的腳本要逐行審查尤其是 AA 腳本它直接操作匯編指令風險更高。對目標程序先備份存檔或運行環境修改內存之前留一張“內存快照”。批量寫入前先記錄原值方便回滾。接觸敏感數據的測試建議在虛擬機里進行避免影響主系統。12. 總結與下一步CE AI 編程這個組合最值得嘗試的點是AI 能把“我不懂匯編、不懂 CE API”的卡點快速消掉。你不用一開始就背 Lua API也不用會手寫匯編只要會提出清晰需求、會審查代碼就能完成內存定位、腳本注入和價值提取這些任務。建議你按這個順序實踐先寫一個最簡單的 C 測試程序跑通 CE 的首次掃描、再次掃描、修改驗證把基礎流程走順。用 AI 生成一個 Lua 腳本讀取并修改一個已知地址掌握 CE 腳本的基本骨架。做一次指針掃描讓 AI 幫你分析鏈路理解動態地址和靜態指針的差別。把腳本擴展成批量讀取任務輸出 CSV 日志形成一套完整的本地自動化流程。最后再挑戰更復雜的目標程序比如帶反調試或復雜指針鏈路的單機程序。最容易踩的坑有三個第一用 CE 去處理在線游戲目標不僅有封號風險還違反平臺規則第二直接在動態地址上寫腳本重啟后全部失效必須用指針鏈路第三AI 生成的腳本不審查就運行遇到崩潰只能從頭再來。后續可以繼續探索的方向包括CE 的Ultimap2指令追蹤、自動匯編的AOBScan特征碼掃描、Lua 腳本調用外部 Python 做數據可視化。這些方向一旦跑通CE 就不再只是“改數值的工具”而是一套本地逆向分析與自動化實驗平臺了。這篇文章先到這里。建議收藏備用等你有空把測試程序搭好再對照文章里的步驟跑一遍很快就能找到手感。