--lua
local PROCESS_VM_READ = 0x0010
local ffi = require("ffi")
local user, kernel = ffi.load('User32'), ffi.load('Kernel32')
ffi.cdef[[
int OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);
int GetWindowThreadProcessId(int hWnd, int *lpdwProcessId);
bool CloseHandle(int hObject);
bool ReadProcessMemory(int hProcess, int lpBaseAddress, void *lpBuffer, int nSize, int *lpNumberOfBytesRead);
]]
function readmemory(address)
if workwindow() == 0 then log('Не указано рабочее окно') return -1 end
local PID, pointer_float = ffi.new('unsigned long[1]'), ffi.new('float[1]')
user.GetWindowThreadProcessId(workwindow(), PID)
local process = kernel.OpenProcess(PROCESS_VM_READ, true, PID[0])
if process > 0 then
kernel.ReadProcessMemory(process, address, pointer_float, 4, nil)
kernel.CloseHandle(process);
return tonumber(pointer_float[0])
end
log('Процесс не открылся') return -2
end
-- всё что выше в начало скрипта
log 'clear' log 'mode compact'
local x = readmemory(0x001756C4) -- прочитать значение типа float с указанного адреса
log(x)