我成功HOOK了 connect,send/recv和sendto/recvfrom函数,
这些函数里都有一个相同的参数s:Tsocket,这个s在内存里是同一份拷贝吗?
s在内存里给这些函数共享?如果我HOOK了connect并且在处理代码里修改了s的值,
是不是也能影响到HOOK其他函数的s?也就是说当我再HOOK send等函数的时候,
这时里面是s已经是我在HOOK了connect里修改了s的值了?
这些函数里都有一个相同的参数s:Tsocket,这个s在内存里是同一份拷贝吗?
s在内存里给这些函数共享?如果我HOOK了connect并且在处理代码里修改了s的值,
是不是也能影响到HOOK其他函数的s?也就是说当我再HOOK send等函数的时候,
这时里面是s已经是我在HOOK了connect里修改了s的值了?
应该是一个共享……如果是一个共享的话,Hook一个s就能影响到全部函数,那么你说的s就已经是Hook里面修改过的s了
type
u_int = Integer;
TSocket = u_int;
function send(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;传值,4字节,和句柄类似的东西。
begin
//......
s:=socket(AF_INET,SOCK_STREAM,0);//比如这样。
//......
end;
begin
//......
s:=socket(AF_INET,SOCK_STREAM,0);//比如这样。
//......
end;
但因为它是元件,所以任何对它的状态改变,外部都能感受到变化。