eglib.memory
路径: eglib.memory
直接内存访问方法。
方法
memory:new_ptr(address: number | string | LuaPtr) -> LuaPtr
返回: LuaPtr
创建一个新的LuaPtr包装给定的地址值。
可接受的地址值:
- 表示内存地址的数字。例如
0x12345678
(十六进制)12345678
(十进制) - 表示内存地址的字符串。例如
"0x12345678"
(十六进制必须以"0x"
开头)"12345678"
(十进制) - 另一个LuaPtr对象。
memory:patch(ptr: AsLuaPtr, bytes: List<u8>)
用给定的字节修补指定地址的内存。
支持修补只读区域,如指令、数据和代码。
WARNING
多次修补同一内存区域会引发错误。
memory:patch_nop(ptr: AsLuaPtr, size: usize)
用NOP指令(Windows AMD64中为0x90
)修补指定地址的内存。
memory:restore_patch(ptr: AsLuaPtr) -> bool
返回: 如果修补成功恢复则返回true
。
在修补后恢复指定地址的原始字节。
如果只是想重新加载脚本时恢复修补,则不需要调用此方法。修补会自动恢复。
WARNING
此方法目前不是线程安全的。建议在hook或其他线程安全函数中运行。