前提我已经注入到目标程序。
00256CB5 mov ebx,dword ptr ds:[eax+23]
00256CB6 mov .....
00256CB7 mov .....
00256CB8 mov .....
反汇编得到的信息,我要HooK这句00256CB5 mov ebx,dword ptr ds:[eax+23] ,
取得ebx的值跳到我程序FUN()去处理,处理完后再让它继续执行00256CB6 mov .....下面的语句。
帮帮忙!!!!说下具体思路???procedure FUN();
begin
showmessage('ebx');//暂时别管ebx里面的值是什么。
end;
00256CB5 mov ebx,dword ptr ds:[eax+23]
00256CB6 mov .....
00256CB7 mov .....
00256CB8 mov .....
反汇编得到的信息,我要HooK这句00256CB5 mov ebx,dword ptr ds:[eax+23] ,
取得ebx的值跳到我程序FUN()去处理,处理完后再让它继续执行00256CB6 mov .....下面的语句。
帮帮忙!!!!说下具体思路???procedure FUN();
begin
showmessage('ebx');//暂时别管ebx里面的值是什么。
end;
jmp到一个地方,做操作,然后再jmp回来
0086E3B4 . 8B8E 52040000 mov ecx, dword ptr [eax+452]//要Hook的语句
0086E3BA . 8BC3 mov eax, ebx
0086E3BC . 2BC1 add eax, ecx
0086E3BE . 50 push eax
0086E3BF . 8BCE mov ecx, esi
我这样做:
procedure FunA();stdcall;//处理函数
var
r:DWORD;
begin
asm
pushad
mov ecx, dword ptr [eax+452]//要hook的
mov r,ecx;
end;
showmessage(IntToStr(r));
asm
popad;
end;
end;
procedure FunB();//HOOK与还原函数。
var
p:Pointer;
begin
p:=@FunA;//处理函数指针
asm
//这里应该用怎么样的代码来Hook与还原???
end;
end;