我一直在尝试将模块中的内存从基本复制到模块大小,而不需要花费5年时间,而且计算机的CPU比天空还要高。
我把这个脚本放在Cheat Engine LUA中,它通过读取复制内存,然后在一行上打印每个字节,这样我就可以用它来写入分配的空间(memcopy // newmem2):
autoAssemble[[
alloc(newmem2, 2048)
label(memcopy)
registerSymbol(memcopy)
newmem2:
memcopy:
]]
for i = 0x00, getModuleSize("Notepad.exe") do
x = readBytes(getAddress("Notepad.exe+0" .. string.format("%x", i)))
if (string.len(x) == 1) then
print(x .. "0")
else
print(string.upper(string.format("%x", x)))
end
if (isKeyPressed(VK_F) == true) then break end
end
我基本上试图在分配的空间中重新创建确切的模块(我不在脚本中写入内存)。
非常感谢帮助!
答案 0 :(得分:0)
This document有一个特定的章节被称为'关于字符串'它建议不要在循环中连接。以下是文章中替代解决方案的引用:
local t = {}
for line in io.lines() do
t[#t + 1] = line
end
s = table.concat(t, "\n")
它考虑txt文件读取。 本质上,它将每个获得的字符串放入一个表元素,然后使用内置函数从中组合单个megastring。
你循环中的那些字符串更改似乎对代码至关重要,但也许你可以将它们作为更大字符串的正则表达式而不是单独的操作来执行。
我更倾向于写入磁盘也有很大的开销,如果你调用一个带有大表的print()
,其中的行用转义字符\n
分隔你&你#39; d加速。如果它是磁盘上的文件,则您要打印到。