Aşağıda verdiğim kod 64 bit için 32 bit için düzenlemek istiyorsanız RIP gördüğünz yerleri EIP registeri ile değişmeniz yeterli.
Kodun amacı seçtiğiniz noktada breakpoint olusturarak oradaki RIP registerini değiştirmek RIP registeri ise o anki çalısan asm'nin memory alanındaki konumunu temsil eder bizde RIP registerini seçtiğimiz noktada değişerek kendi kodumuzun oldugu memory bölümüne atlatıyoruz işimiz bitincede tekrar break point noktasından devam ediyoruz.
İstediğiniz debugger ile kullanabilirsiniz dbvm veh farketmez.
Lua:
local res = assert(AOBScan('74 ?? ?? ?? 74','+X-C-W'), 'no results found')
OFFSETS = {}
HOOKS = {}
OFFSETS.CGame = tonumber(res[0],16)
OFFSETS.CGameReturn = 0xhookadr
debug_removeBreakpoint(OFFSETS.CGame)
debug_setBreakpoint(OFFSETS.CGame)
function debugger_onBreakpoint()
if (RIP == OFFSETS.CGame) then
RIP = OFFSETS.CGameReturn
end
debug_continueFromBreakpoint(co_run)
return 1
end