🌍 全局变量

  • TrainerOrigin:仅当 CE 作为训练器启动时设置,包含启动 CE 的训练器路径。
  • process:当前打开进程的主模块名称。
  • MainForm:CE 主 GUI 窗口对象。
  • AddressList:主 CE GUI 的地址列表对象。

🧩 全局函数

版本与系统信息

  • getCEVersion():返回 CE 版本的浮点值(如 7.4)。
  • getCheatEngineFileVersion():返回完整版本数据(原始整数 + 表:major, minor, release, build)。
  • getOperatingSystem():Windows 返回 0,Mac 返回 1。
  • darkMode():Windows 暗模式下返回 true(Mac 无影响)。

安全与保护

  • activateProtection():防止基础内存扫描器打开 CE 进程(效果有限)。
  • enableDRM(altitude?, secondaryprocessid?):内核级保护,防止普通扫描器读取 CE 或指定进程内存。

内存操作

  • fullAccess(address, size):将内存块权限设为可写+可执行。
  • copyMemory(srcAddr, size, dstAddr?, method?)
    • 方法:0=目标→目标,1=目标→CE,2=CE→目标,3=CE→CE。
    • 成功返回目标地址,失败返回 nil。
  • compareMemory(addr1, addr2, size, method?)
    • 方法同上。相同返回 true,否则返回 false + 首次差异索引。

读写内存(目标进程)

  • readBytes(addr, count, asTable?):读取字节,asTable=true 时返回表。
  • writeBytes(addr, ...)writeBytes(addr, table):写入字节。
  • readByte/Short/Integer/Qword/Pointer/Float/Double/String(addr, ...):读取各种类型。
  • writeByte/Short/Integer/Qword/Pointer/Float/Double/String(addr, value, ...):写入各种类型。
    • 所有写入函数成功返回 true。

读写内存(CE 自身进程)

  • 所有上述函数均有 Local 后缀版本,如 readBytesLocal, writeIntegerLocal 等,操作 CE 自身内存。

数据类型转换

  • signExtend(value, msb):符号扩展。
  • xxxToByteTable(value):将数值/字符串转为字节表(word, dword, qword, float, double, extended, string, wideString)。
  • byteTableToXxx(table, signed?):反向转换(word, dword, qword, float, double, extended, string, wideString)。

位运算

  • bOr, bXor, bAnd, bShl, bShr, bNot:标准位运算。

内存区域枚举与文件操作

  • enumMemoryRegions():返回内存布局表(BaseAddress, AllocationProtect, RegionSize 等)。
  • writeRegionToFile(filename, srcAddr, size):写内存块到文件。
  • readRegionFromFile(filename, dstAddr):从文件读取到内存。

Lua 状态与引用

  • resetLuaState():创建新 Lua 状态(旧状态不销毁 → 内存泄漏)。
  • createRef(...)getRef(id)destroyRef(id):创建/获取/销毁 Lua 对象引用(用于存储非整数对象)。

函数序列化

  • encodeFunction(fn)decodeFunction(str):函数 ↔ 编码字符串(注意架构兼容性)。
  • encodeFunctionEx(script, dllPath?):支持指定 Lua DLL。

国际化

  • getTranslationFolder():返回当前翻译路径。
  • loadPOFile(path):加载 .PO 翻译文件。
  • translate(str) / translateID(id, orig?):翻译字符串。

字符编码

  • ansiToUtf8(str) / utf8ToAnsi(str):编码转换(GUI 多用 UTF-8)。

模块与文件

  • enumModules(pid?):返回模块信息表(Name, Address, Is64Bit, PathToFile)。
  • md5memory(addr, size) / md5file(path):计算 MD5。
  • getFileVersion(path):返回文件版本(64位值 + 分段表)。
  • getFileList(path, mask?, subdirs?, attr?) / getDirectoryList(path, subdirs?):文件/目录枚举。
  • extractFileName/Ext/FileNameWithoutExt/FilePath(path):路径解析。

符号处理

  • enableWindowsSymbols():下载并加载 Windows PDB 符号(首次较慢)。
  • getAddress(symbol, local?):解析符号地址(local=true 查询 CE 自身符号)。
  • enableKernelSymbols():启用内核符号(需先调用 enableWindowsSymbols)。
  • getAddressSafe(...):安全版 getAddress,失败返回 nil。
  • getSymbolInfo(symbol):返回符号信息表(modulename, address, size 等)。
  • getModuleSize(modulename):获取模块大小。
  • getRTTIClassName(addr):根据 RTTI 获取类名。
  • reinitializeSymbolhandler(wait?):重新初始化符号处理器。
  • searchPDBWhileLoading(state):是否在加载时查询 PDB(默认 false,较慢)。

错误与等待控制

  • errorOnLookupFailure(state):查找失败时是否报错(默认 true)。
  • waitforsymbols(state):是否等待符号加载(默认 true)。

汇编与脚本

  • generateAPIHookScript(addr, jumpTo, newCallAddr?, ext?, targetSelf?):生成 API Hook 脚本。
  • assemble(line, addr?, pref?, skipCheck?):汇编单行代码。
  • autoAssemble(text, targetSelf?, disableInfo?):执行自动汇编脚本。
  • autoAssembleCheck(text, enable, targetSelf?):语法检查。
  • compile(text, addr?, targetSelf?):编译 C 代码 → 返回符号表。
  • compileCS(text, refs, coreAssembly?):编译 C# 代码 → 返回临时 DLL 路径。

EXE 训练器与自定义命令

  • registerEXETrainerFeature(name, fn):向 EXE 训练器添加功能。
  • registerAutoAssemblerCommand(cmd, fn):注册自定义 AA 命令。
  • registerLuaFunctionHighlight(name):高亮指定函数名。

符号/结构回调

  • registerSymbolLookupCallback(fn, location):符号解析时回调。
  • registerAddressLookupCallback(fn):地址转名称回调。
  • registerStructureAndElementListCallback(structFn, elemFn):自定义结构剖析。
  • registerStructureDissectOverride(fn):覆盖自动结构猜测。
  • registerStructureNameLookup(fn):自定义结构命名。

汇编器覆盖

  • registerAssembler(fn):自定义单行汇编器。
  • registerAutoAssemblerPrologue(fn, postAOB?):AA 脚本预处理。

脚本模板与注入

  • registerAutoAssemblerTemplate(name, fn, shortcut?):注册 AA 模板。
  • generateCodeInjectionScript(script, addr, farjmp?):生成代码注入脚本。
  • generateAOBInjectionScript(script, sym, addr, radius?, farjmp?):生成 AOB 注入脚本。
  • getNextAllocNumber(script):获取下一个可用 alloc 编号。
  • getUniqueAOB(addr):扫描唯一 AOB 并返回字符串 + 偏移。

UI 交互

  • showMessage(text):显示消息框。
  • inputQuery(caption, prompt, init):输入对话框。
  • showSelectionList(title, caption, list, allowCustom?):选择列表。
  • messageDialog(text, type, buttons...):自定义消息框。
  • sleep(ms):暂停毫秒数。

进程与窗口

  • getProcesslist():返回进程表(pid - name)。
  • getWindowlist():返回窗口表(pid - {id, caption})。
  • getThreadlist(list):填充线程列表。
  • getHandleList(filter?):返回句柄表(filter: 0=all, 1=target, 2→target, 3→CE)。
  • closeRemoteHandle(handle, pid?):关闭远程句柄。
  • duplicateHandle(handle, mode?/fromPID, toPID?):复制句柄。

进程事件

  • onOpenProcess(pid):进程打开时调用(可能多次)。
  • MainForm.OnProcessOpened(pid, handle, caption):推荐替代 onOpenProcess(主线程单次调用)。

进程控制

  • getOpenedProcessID() / getOpenedProcessHandle():获取当前进程。
  • openProcess(pid/name):打开进程。
  • openFileAsProcess(filename, is64?, startAddr?):以进程方式打开文件。
  • saveOpenedFile(filename?):保存文件更改。
  • setPointerSize(size):设置指针大小(字节)。
  • setAssemblerMode(0=32bit, 1=64bit)
  • pause() / unpause():暂停/恢复进程。

系统信息

  • getCPUCount():CPU 核心数。
  • cpuid(eax, ecx):返回 CPUID 表(eax, ebx, ecx, edx)。
  • gc_setPassive(state) / gc_setActive(state, interval, minsize):控制垃圾回收。
  • getSystemMetrics(index):获取系统指标(参见 MSDN)。
  • getScreenDPI() / getScreenHeight() / getScreenWidth():屏幕信息。
  • getWorkAreaHeight() / getWorkAreaWidth():工作区尺寸。
  • getScreenCanvas():获取屏幕画布(谨慎使用)。
  • getPixel(x,y):获取屏幕像素 RGB。
  • getMousePos() / setMousePos(x,y):鼠标位置。
  • isKeyPressed(key) / keyDown(key) / keyUp(key) / doKeyPress(key):键盘模拟。
  • mouse_event(flags, x?, y?, data?, extra?):鼠标事件 API。
  • shortCutToText(sc) / textToShortCut(str):快捷键转换(6.4+)。
  • convertKeyComboToString(key1,...):键组合转字符串。
  • outputDebugString(text):输出调试信息(可用 DbgView 查看)。
  • shellExecute(cmd, params?, folder?, showcmd?):执行命令。
  • getTickCount():系统启动毫秒数。
  • processMessages():处理 GUI 消息(防冻结)。
  • inMainThread():是否在主线程(6.4+)。
  • integerToUserData(int) / userDataToInteger(ud):整数 ↔ UserData 转换。
  • synchronize(fn, ...):主线程同步调用。
  • queue(fn, ...) + checkSynchronize(timeout?):异步调用 + 检查。
  • writeToClipboard(text) / readFromClipboard():剪贴板操作。

速度与注入

  • speedhack_setSpeed(speed) / speedhack_getSpeed():设置/获取速度倍率。
  • injectDLL(filename, skipWait?) / injectLibrary(...):注入 DLL。
  • injectDotNetDLL(dll, class, method, params, timeout?):注入 .NET DLL 并调用静态方法。

代码执行

  • executeCode(addr, param?, timeout?):在目标进程执行 stdcall 函数。
  • executeCodeLocal(addr, param?):在 CE 进程执行。
  • executeCodeEx(callmethod, timeout, addr, {type,val}...):带参数执行(支持多种类型)。
  • executeMethod(callmethod, timeout, addr, {regnr,class}, params...):执行类方法(指定寄存器)。

插件与字体

  • loadPlugin(dll):加载插件。
  • loadFontFromStream(stream)unloadLoadedFont(id):从流加载字体。

自动猜测与窗口控制

  • onAutoGuess(fn):注册变量类型猜测回调。
  • closeCE():关闭 CE。
  • hideAllCEWindows() / unhideMainCEwindow():隐藏/显示 CE 窗口。

内存扫描

  • AOBScan(bytes...) / AOBScan("aob", prot?, alignType?, alignParam?):扫描 AOB。
  • AOBScanUnique(...) / AOBScanModuleUnique(module, ...):扫描唯一结果。

内存分配

  • allocateMemory(size, base?, prot?):分配目标进程内存。
  • deAlloc(addr, size?):释放内存。
  • allocateSharedMemory(name, size?):创建共享内存(跨进程)。
  • createSection(size)mapViewOfSection(sec, base?)unMapViewOfSection(addr):内存映射。

窗口操作

  • getForegroundProcess():获取前台进程 PID。
  • findWindow(class?, caption?):查找窗口句柄。
  • getWindow(hwnd, cmd) / getWindowCaption/ClassName/ProcessID(hwnd):窗口信息。
  • getForegroundWindow():获取前台窗口句柄。
  • sendMessage(hwnd, msg, wparam, lparam):发送窗口消息。
  • hookWndProc(hwnd, fn, async?)unhookWndProc(hwnd):挂钩窗口过程。

系统架构

  • cheatEngineIs64Bit() / targetIs64Bit():判断 CE/目标是否为 64 位。
  • getCheatEngineDir():CE 安装目录。
  • getCheatEngineProcessID():CE 自身 PID。
  • getAutorunPath() / getUserDocumentsPath():路径获取。

反汇编

  • disassemble(addr):反汇编 → “地址 - 字节 - 操作码”。
  • splitDisassembledString(str):拆分为地址、字节、操作码、extra。
  • getInstructionSize(addr):获取指令大小。
  • getPreviousOpcode(addr):获取前一条指令地址(估算)。

音频与语音

  • beep():播放提示音。
  • playSound(stream/tablefile, wait?):播放 WAV(支持内置 “Activate”/“Deactivate”)。
  • speak(text, wait?) / speak(text, flags):文本转语音(支持 SSML)。
  • speakEnglish(text, wait?):强制英语语音。

实用函数

  • printf(...) = print(string.format(...))
  • setProgressState(state) / setProgressValue(cur, max):任务栏进度(Windows)。
  • getUserRegistryEnvironmentVariable(name) / setUserRegistryEnvironmentVariable(name, val):用户环境变量。
  • stringToMD5String(str):字符串 → MD5。
  • getFormCount() / getForm(index):获取 CE 窗体。
  • registerFormAddNotification(fn)unregister...:窗体创建通知。
  • getSettingsForm() / getMemoryViewForm() / getMainForm():常用窗体。
  • getApplication() / getAddressList() / getFreezeTimer() / getUpdateTimer():核心对象。
  • setGlobalKeyPollInterval(ms):全局按键轮询间隔。
  • setGlobalDelayBetweenHotkeyActivation(ms):热键最小间隔。

Xbox 360 控制器

  • getXBox360ControllerState(id?):获取控制器状态(按钮、摇杆、扳机)。
  • setXBox360ControllerVibration(id, left, right):设置振动(0-65535)。

网络

  • connectToCEServer(host, port):连接到 CE 服务器(后续命令由服务器处理)。

属性反射(Pascal 类)

  • getPropertyList(class):获取类的已发布属性列表。
  • setProperty(class, prop, val) / getProperty(class, prop):设置/获取属性。
  • setMethodProperty(class, prop, fn) / getMethodProperty(class, prop):设置/获取方法属性。

符号注册

  • registerSymbol(name, addr, donotsave?) / unregisterSymbol(name):用户符号管理。
  • getNameFromAddress(addr, mod?, sym?, sec?):地址 → 符号/模块名。
  • inModule(addr) / inSystemModule(addr):判断地址是否在模块内。
  • getCommonModuleList():获取通用模块列表。

AOB 扫描参数详解

  • protectionflags:字符串,如 “+W-C”(可写、非写时复制)。
  • alignmenttype:0=无,1=整除,2=结尾匹配。
  • alignmentparam:对齐参数值。

🐞 调试相关

调试寄存器(全局变量)

  • 32/64 位:EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP
  • 64 位额外:RAX, RBX, …, R15
  • EFLAGS:标志寄存器

调试函数

  • debugger_onBreakpoint():断点命中时调用(填充寄存器),返回 0 刷新 UI。
  • createProcess(path, params?, debug?, breakOnEntry?):创建调试进程。
  • debugProcess(interface?):启动调试器(0=默认, 1=Windows, 2=VEH, 3=Kernel)。
  • debug_isDebugging() / debug_getCurrentDebuggerInterface():调试状态。
  • debug_canBreak() / debug_isBroken():能否/是否中断。
  • debug_getBreakpointList():获取断点列表。
  • debug_breakThread(tid):中断指定线程。
  • debug_addThreadToNoBreakList(tid) / debug_remove...:忽略线程断点。
  • debug_setBreakpoint(addr, size?, trigger?, method?, fn?):设置断点。
  • debug_removeBreakpoint(addr):移除断点。
  • debug_continueFromBreakpoint(method):继续执行(co_run, co_stepinto, co_stepover)。
  • debug_getXMMPointer(reg):获取 XMM 寄存器地址(CE 本地内存)。

最后分支记录(仅 Kernel + XP)

  • debug_setLastBranchRecording(bool):启用记录。
  • debug_getMaxLastBranchRecord():最大记录数。
  • debug_getLastBranchRecord(index):获取记录。

模块加载事件

  • debugger_onModuleLoad(name, base):模块加载时调用,返回 1 可中断。

上下文操作

  • debug_getContext(extra?) / debug_setContext(extra?):获取/设置寄存器上下文。
  • debug_updateGUI():刷新调试 UI。

其他

  • detachIfPossible():分离调试器。
  • getComment(addr) / setComment(addr, text):地址注释。
  • getHeader(addr) / setHeader(addr, text):地址头部。

BinUtils 支持

  • registerBinUtil(config):注册其他架构汇编器(如 ARM)。
    • config: {name, desc, arch, ASParam, LDParam, OBJDUMPParam, OnDisassemble, path, prefix, DisassemblerCommentChar}

🧱 类参考

Control 类(继承 Component → Object)

属性

  • Caption, Top, Left, Width, Height, ClientWidth, ClientHeight
  • Align, Enabled, Visible, Color, RGBColor, Parent, PopupMenu, Font
  • OnClick, OnChangeBounds

方法

  • setPosition(x,y), getSize(), setAlign(...), setEnabled(bool), setVisible(bool)
  • setColor(rgb), setParent(wincontrol), getFont(), repaint(), update()
  • setOnClick(fn), doClick(), bringToFront(), sendToBack()
  • screenToClient(x,y), clientToScreen(x,y)

Region 类(继承 GraphicsObject → Object)

  • createRegion():创建空区域。
  • addRectangle(x1,y1,x2,y2):添加矩形。
  • addPolygon({x1,y1,x2,y2,...}):添加多边形。

WinControl 类(继承 Control → Component → Object)

属性

  • Handle, DoubleBuffered, ControlCount, Control[], OnEnter, OnExit

方法

  • getControlCount(), getControl(index), getControlAtPos(x,y)
  • canFocus(), focused(), setFocus()
  • setShape(Region/Bitmap)
  • setOnEnter(fn), setOnExit(fn)
  • setLayeredAttributes(key, alpha, flags):设置分层属性(LWA_ALPHA, LWA_COLORKEY)