3免费做网站,wordpress用户注册邮件验证码,网站推广联盟,深圳系统开发高端网站建设我的方式是先执行lua申请共享内存#xff0c;内存名称是进程id#xff0c;这样多开也不受影响#xff0c;然后通过共享内存的名字就可以读到地址了。之后的人造指针的地址也都可以放这里集中管理。
-- 申请内存
local size 1024 -- 申请 1024 字节#xff08;1 KB#…我的方式是先执行lua申请共享内存内存名称是进程id这样多开也不受影响然后通过共享内存的名字就可以读到地址了。之后的人造指针的地址也都可以放这里集中管理。
-- 申请内存
local size 1024 -- 申请 1024 字节1 KB内存
-- 定义共享内存名称为进程id
local sharedMemoryName getOpenedProcessID()
local address allocateSharedMemory(sharedMemoryName,size)if address 0 thenshowMessage(内存申请失败)
else-- 显示成功消息--showMessage(string.format(内存申请成功地址0x%X, address))-- 注册符号local symbolName cheatregisterSymbol(symbolName, address)-- 将内存地址写入首地址writeInteger(symbolName,address)showMessage(string.format(符号 %s 已注册地址0x%X, symbolName, address))
end然后是用C#通过进程id读取共享内存的代码
try
{// 打开共享内存using (var mmf MemoryMappedFile.OpenExisting(28728)){// 创建视图访问器using (var accessor mmf.CreateViewAccessor()){// 读取共享内存中的数据byte[] buffer new byte[1024];accessor.ReadArray(0, buffer, 0, buffer.Length);//字节数组的读取应与CE中的偏移保持一致}}
}
catch (Exception ex)
{Console.WriteLine(读取共享内存失败 ex.Message);
}
CE中lua函数参考
https://wiki.cheatengine.org/index.php?titleLua