跪求各位大虾帮助解决以下问题:首先看下程序吧,程序如下:unit TcpAPIHook;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls, WinSock, Registry;type
//要HOOK的API函数定义
TSockProc = function (s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;PJmpCode = ^TJmpCode;
TJmpCode = packed record
JmpCode: BYTE;
Address: TSockProc;
MovEAX: Array [0..2] of BYTE;end;//--------------------函数声明---------------------------
procedure HookAPITcp;
procedure UnHookAPITcp;var
OldSend, OldRecv: TSockProc; //原来的API地址
JmpCode: TJmpCode;
OldProc: array [0..1] of TJmpCode;
AddSendTcp, AddRecvTcp: pointer; //API地址
TmpJmp: TJmpCode;
ProcessHandle: THandle;问题:我执行WriteProcessMemory(ProcessHandle, AddSendTcp, @OldProc[0], 8, dwSize);
这样就将内存存入到数据了 OldProc中,此时我想将TJmpCode.Address 存入一个用Variant来定义的变量中,但此时报错:
Not enough actual parameters 没有足够的实际参数 请问这样的问题怎么解决?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls, WinSock, Registry;type
//要HOOK的API函数定义
TSockProc = function (s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;PJmpCode = ^TJmpCode;
TJmpCode = packed record
JmpCode: BYTE;
Address: TSockProc;
MovEAX: Array [0..2] of BYTE;end;//--------------------函数声明---------------------------
procedure HookAPITcp;
procedure UnHookAPITcp;var
OldSend, OldRecv: TSockProc; //原来的API地址
JmpCode: TJmpCode;
OldProc: array [0..1] of TJmpCode;
AddSendTcp, AddRecvTcp: pointer; //API地址
TmpJmp: TJmpCode;
ProcessHandle: THandle;问题:我执行WriteProcessMemory(ProcessHandle, AddSendTcp, @OldProc[0], 8, dwSize);
这样就将内存存入到数据了 OldProc中,此时我想将TJmpCode.Address 存入一个用Variant来定义的变量中,但此时报错:
Not enough actual parameters 没有足够的实际参数 请问这样的问题怎么解决?
再赋值给variant类型变量
不行啊,定义一个integer变量后然后将其存入,还是弹出Not enough actual parameters 没有足够的实际参数 这样的错误
var
vKeyOfAddress integer;
begin
vKeyOfAddress := OldProc[0].Address;
............
end;这样程序还是出错,还请akirya 及各位帮助解决!
OldProc[0].Address是个函数变量,不能直接保存,只能保存它的地址