Cheat Engine笔记 使用Lua操作地址
卜多嘢洁姨
编辑于 2026年01月15日 22:01

打开Cheat Engine,不用打开进程

按Ctrl + Alt + L或者点击菜单栏中的“表单 -> 显示CT表的Lua脚本”,打开lua脚本窗口

跟着就可以开始了,首先来学习一下通过lua来添加地址

代码块
JavaScript
自动换行
复制代码
local list = getAddressList()   -- 获取整个CT表对象
local rec = list.createMemoryRecord()  -- 添加地址
复制成功

注:复制代码请注意,“--”才是lua脚本的注释开始,之前我用的是“//”直接复制会运行错误,b站专栏代码块不支持lua

通过这两条代码,CT如下图:

可见会添加一条地址,CE中叫MemoryRecord。跟着对这条地址添砖加瓦,操作一下地址。

因为清空原来的代码,可以根据描述来定位MemoryRecord对象,

代码块
JavaScript
自动换行
复制代码
local list = getAddressList()
local rec = list.getMemoryRecordByDescription("插件地址")	-- 定位地址对象
rec.setAddress(0xFFFF)	-- 设置地址,可以是字符串rec.setAddress("0xFFFF")
rec.setDescription(string.format("addr %03d",1)) -- 设置描述
复制成功

string.format用于格式化字符串,跟C语言printf用法差不多。

这种固定地址操作就是这样,不过一般用到lua的话,我们会使用指针地址,就是基地址+偏移的方式。先来看一下图,下面我们修改一下代码,

设置基址是一样的,通过setAddress,setOffsetCount会先添加偏移空位,它的参数是2,即是两个。rec.setOffset(0,0x10)设置偏移量,第一个参数是位置,第二个参数是偏移量,由图中能看到是自上到下排序。

好。这部分就讲到这里。

以下是一些小记录:

要实现上图中的父子节点,可以通过appendToEntry来实现,appendToEntry中的参数是父节点的MemoryRecord对象。