本人初学delphi,今天刚刚装的delphi7,找了一段代码,但是有些地方不懂,希望各位指点。
请看以下函数:
{---------------------------------------}
{函数功能:Send函数的HOOK
{函数参数:同Send
{函数返回值:integer
{---------------------------------------}
function MySend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;
begin
//这儿进行发送的数据处理
MessageBeep(1); //简单的响一声
//调用直正的Send函数
WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);
Result := OldSend(S, Buf, len, flags);
JmpCode.Address := @MySend;
WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize);
end;这是一段hook程序,目的是替换原来的api函数,在声明函数头的地方有这样一段:
var Buf
这个声明的意思是声明一个variant类型的变量吗?
此变量vb中声明类型是buf as any,vc中是const char * buf,请问如果我要操作这个buf,该怎么办呢?
buf的数据应该是这样的:EF 52 CF C3 DE E1 C1 85 7D,(应该是按照数组保存的)
比如我把第一个EF改成11,该怎么办?
请看以下函数:
{---------------------------------------}
{函数功能:Send函数的HOOK
{函数参数:同Send
{函数返回值:integer
{---------------------------------------}
function MySend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;
begin
//这儿进行发送的数据处理
MessageBeep(1); //简单的响一声
//调用直正的Send函数
WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);
Result := OldSend(S, Buf, len, flags);
JmpCode.Address := @MySend;
WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize);
end;这是一段hook程序,目的是替换原来的api函数,在声明函数头的地方有这样一段:
var Buf
这个声明的意思是声明一个variant类型的变量吗?
此变量vb中声明类型是buf as any,vc中是const char * buf,请问如果我要操作这个buf,该怎么办呢?
buf的数据应该是这样的:EF 52 CF C3 DE E1 C1 85 7D,(应该是按照数组保存的)
比如我把第一个EF改成11,该怎么办?
procedure ss(var s: string);
begin
s:= 'change';
end;调用后s的值就是change,如果没有var,那么s仅仅是一个局部变量ss函数执行完后s就被释放掉了。
我用vartype函数,编译通不过啊。
var
dest : pchar;
begin
strcopy(dest,'string');
end;
begin
strcopy(dest,'string');//把'string'复制到由dest开头的内存中。实现了buff的写入
end;