要求:不通过定义相同的函数指针类型执行它
解决方案 »
- 想编一个最大化程序,如何排版最简单?
- 求助,如何在delphi中安装flatstyle控件
- delphi表格制作——再次请问一下
- TDBLookupComboboxEh 可不可以录入其它数据?
- 初学者请教一个问题!!!!
- 如何在同一事务中处理两个表的更新?
- 汉字转拼音问题,太难了
- 编译提示'Undeclared identifier: 'locaseinsensitive',为何
- soap应用程序如何发布?
- !!!!在变量名前面分别 加以下三种符号是什么意思:^/@/$ !!!!
- 共享软件如果包含不合法功能,是否会有麻烦?
- 高分求教,关于Midas.dll文件的问题?急急急!!!在线等待!!!
To yansea(思宏)给段代码看看吗,若通马上结贴
若你真的是想hookapi,那还是要给每个函数做一个说明的。
asm
Mov eax,&LP
push 参数N
Push 参数N-1
Push 参数N-2
...
Push 参数1
Call [EAX]
End;用API:CallWindowProc也可以的!
begin
ShowMessage(IntToStr(a+b+c+d));
Result := a+b;
end;//有这样一个函数;调用如下
procedure TForm1.Button1Click(Sender: TObject);
var
a,b :integer;
begin
a := 10;
b := 11;
asm
mov eax, a
mov edx, b
mov ecx, 11
push 11 //使用堆栈
call Afunction
end;
end;
几点说明 “默认情况下若参数在3个已内,将分别使用eax、edx和ecx。超过3个参数部分将使用堆栈。返回参数的存放视长度而定。8位用al返回,16位用ax,32位用eax,64位用用两个32位寄存器edx:eax,其中eax是低位。”