原理和HOOK是一样的,都是通过WriteProcessMemory写入代码,但这里我们想任意位置加入代码,为了不影响原程序的执行,执行完我们的函数后,必须恢复原有程序的寄存器和堆栈的值,所以第一句话就是 pushad将所有寄存器压栈,执行完我们的函数跳回原有程序后,第一句就是pop eax,因为跳转代码是mov eax,xxx jmp eax修改了eax:
伪代码:
根据伪代码用delphi写成的函数:
我们自己的函数:
调用方法:
说明:这里的addrBeforeWriteCard 等于baseAddr+$8