参考某论坛大佬使用最新CE源代码编译
成品:123网盘 百度网盘
解压使用"\Cheat Engine\bin\uxeatengine-x86_64.vmp.exe"或"\Cheat Engine\bin\uxeatengine-x86_64.exe"
对CE的修改
更改了驱动名字
修改了名字和图标,修改了字符串
使用vmp3.X进行混淆和保护
编译了访问内核的驱动程序(要使用内核驱动程序请配合https://github.com/Mattiwatti/EfiGuard/releases/tag/v1.2.1)需要一个U盘
- 格式化为:IDA, "">FAT 或 FAT32
- 下载efiguard并将EFI放入U盘
- 打开 U 盘上的“EFI”文件夹 ->“Boot”并删除“Loader.config.efi”文件,将“Loader.efi”文件重命名为“bootx64.efi”。
- 进入BISO后选择usb启动
- 使用管理员cmd打开下载的efiguard文件夹,在 CMD 中输入“efidsefix.exe -d”以禁用驱动程序签名强制
- 然后启动CE并在 Cheat Engine 内转到“编辑”->“设置”->“调试器选项”并选中“使用内核模式调试器(需要 DBVM)”
- 然后转到“额外”并选中所有 4 个复选框
- 点击确定确保能在屏幕左上角看到“DBK64 LOADED”
- 返回cmd并输入“efidsefix.exe -e”确保游戏驱动不受影响正常启动
执行下面这个lua脚本即可
[Lua] 纯文本查看 复制代码
symbols = createSymbolList();
symbols.register();
function onOpenProcess(pid)
symbols.unregister();
symbols = createSymbolList();
symbols.register();
reinitializeSymbolhandler();
if (pid == 4) then
return;
end
local proc = dbk_getPEProcess(pid);
--printf("proc: %08X", proc);
local peb = readQword(proc + 0x550);
--printf("peb: %08X", peb);
local ldr = readQword(peb + 0x18);
--printf("ldr: %08X", ldr);
local index = readQword(ldr + 0x10);
--printf("index: %08X\n", index);
while (index ~= ldr + 0x10) do
local mod = readQword(index);
--printf("mod: %08X", mod);
local name = readString(readQword(mod + 0x58 + 0x8), readSmallInteger(mod + 0x58), true);
--printf("name: %s", name);
local base = readQword(mod + 0x30);
--printf("base: %08X", base);
local size = readInteger(mod + 0x40);
--printf("size: %04X\n", size);
symbols.addModule(name, "", base, size, true);
index = readQword(mod);
end
local name = readString(proc + 0x5A8, 15);
--print("name:", name);
local base = readQword(proc + 0x520);
--printf("base: %08X", base);
local size = readQword(proc + 0x498);
--printf("size: %04X", size);
symbols.addModule(name, "", base, size);
reinitializeSymbolhandler();
--print("finished!");
end
这个程序并不完善,特别是内核部分
不过一般的检测应该是没有问题的
修复了前面版本开始的字符报错