关于hook一段汇编代码的问题
目标进程有这样两句汇编。
mov edx,[ebp+20]
mov eax,[ebp+20]
都是为三字节
我现在想hook eax的值。
所以我就想改成
jmp 我的函数地址($9f00000)
9f00000 mov edx,[ebp+20]
mov eax,[ebp+20]
mov [我的地址],eax
我的代码如下。
Function myfun;
asm
mov edx,[ebp+$20]
mov eax,[ebp+$20]
mov [我分配的地址],eax
jmp 前面汇编的第三行
end;
type Twrite=packed record
jmp_code:byte;
jmpaddr:integer;
retcode:byte;
end;
begin
Twrt.jmp_code:= $eb;
Twrt.jmpaddr:=integer(@isSelfAddr);
Twrt.retcode:=$90;
edit1.Text:=inttohex(integer(@isSelfAddr),4); //用来查看我的函数的地址
WriteProcessMemory( GetCurrentProcess , pointer($00578c12), @Twrt.jmp_code,1,ret);
WriteProcessMemory( GetCurrentProcess , pointer($00578c12+1), @Twrt.jmpaddr,4,ret);
WriteProcessMemory( GetCurrentProcess , pointer($00578c12+1), @Twrt.nopcode,1,ret);
但结果。edit里面读出来的地址是正确的。我用OD跟进去能看到我的代码。但是我改写的JMP 地址变成4开头的了。这是为什么呢。。。希望有人能帮我解答下。谢谢啦。我试了一天了。也没能搞定。