-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Victor edited this page Apr 12, 2026
·
3 revisions
local memory = _G.Engine.MemoryЗабивает участок памяти NOP-инструкциями (0x90).
Параметры:
-
address (number)— адрес в памяти (uintptr_t) -
size (number)— количество байт
Возвращает:
-
boolean— успешно ли применен патч
memory.write_nop(0x401000, 5)Записывает произвольные байты.
Параметры:
-
address (number)— адрес -
bytes (table<number>)— массив байтов (0–255)
Возвращает:
boolean
memory.patch(0x401000, {0xEB, 0x01})Читает int32.
Параметры:
address (number)
Возвращает:
-
number— int32 значение
local hp = memory.read_int(0x500000)
print(hp)Читает float.
Параметры:
address (number)
Возвращает:
-
number— float значение
local speed = memory.read_float(0x500100)
print(speed)Записывает int32.
Параметры:
address (number)-
value (number)— int32
Возвращает:
nil
memory.write_int(0x500000, 999)Записывает float.
Параметры:
address (number)-
value (number)— float
Возвращает:
nil
memory.write_float(0x500100, 3.14)local input = _G.Engine.InputВызывает функцию при нажатии клавиши (один раз при нажатии, не при удержании).
Параметры:
-
key (number)— virtual-key code (WinAPI), например:-
0x41— A -
0x46— F -
0x20— Space
-
-
callback (function)— функция без аргументов
Возвращает:
nil
input.bind(0x41, function()
print("Pressed A")
end)Удаляет биндинг.
Параметры:
key (number)
Возвращает:
nil
input.unbind(0x41)local hooks = _G.Engine.HooksСоздает detour-хук функции.
Параметры:
-
address (number)— адрес функции -
signature (string)— C-сигнатура сNAME -
callback (function)— Lua функция (должна соответствовать сигнатуре)
Возвращает:
-
function | nil— оригинальная функция (если успешно)
Важно:
- обязательно вызывать
original(...)чтобы не ломать логику - сигнатура должна совпадать
local original
original = hooks.create(0x401000, "int (__cdecl *NAME)(int a)", function(a)
print("Called:", a)
return original(a)
end)Хук для нестандартных (usercall) функций.
Параметры:
address (number)-
callback (function)— сигнатура фиксирована:
int func(int, int, void*, void*, int, int)Возвращает:
-
cdata | nil— оригинальный указатель
hooks.create_usercall(0x402000, function(a, b, c, d, e, f)
print("Usercall intercepted")
return 0
end)local crash = _G.Engine.VahCrashРегистрирует точку восстановления при краше.
Параметры:
-
crash_addr (number)— адрес, где происходит краш -
safe_addr (number)— адрес для перехода
Возвращает:
nil
crash.catch(0x403000, 0x404000)local memory = _G.Engine.Memory
local input = _G.Engine.Input
local hooks = _G.Engine.Hooks
local crash = _G.Engine.VahCrash
-- биндим клавишу F
input.bind(0x46, function()
print("Applying NOP")
memory.write_nop(0x401000, 5)
end)
-- хук
local original
original = hooks.create(0x401000, "int (__cdecl *NAME)(int)", function(a)
print("Hooked:", a)
return original(a)
end)
-- защита от краша
crash.catch(0x403000, 0x404000)