首页
社区
课程
招聘
[求助]请问,这里的PUSH EAX有什么作用呢,照道理说,它这样入栈那么ADD_STDCALL的参数不就是EAX,1,2,3了吗,而实际上我入栈的是1 2 3 4 啊
发表于: 2008-3-23 07:13 5118

[求助]请问,这里的PUSH EAX有什么作用呢,照道理说,它这样入栈那么ADD_STDCALL的参数不就是EAX,1,2,3了吗,而实际上我入栈的是1 2 3 4 啊

2008-3-23 07:13
5118
function tform1.add_stdcall(a,b,c,d:integer):integer;stdcall;
begin
  result:=a+b+c+d;
end;

//STDCALL调用方式(主调用函数)
00462F8A   64FF32                 push    dword ptr fs:[edx]
00462F8D   648922                 mov     fs:[edx], esp
00462F90   6A04                   push    $04
00462F92   6A03                   push    $03
00462F94   6A02                   push    $02
00462F96   6A01                   push    $01  
00462F98   50                     push    eax

* Reference to : TForm1.add_stdcall()
//调用ADD_STDCALL函数进行运算|
00462F99   E892FFFFFF             call    00462F30
......
......

调用者函数:
procedure TForm1.Button1Click(Sender: TObject);
var
  s:integer;
begin
  s:=add_stdcall(1,2,3,4);
  showmessage(inttostr(s));
end;

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
你的add_stdcall方法是属于类级别的方法,类级别的方法有一个隐含参数,那就是Tform类参数。有这个类参数,你的add_stdcall方法才能在内部直接操作Tform窗口。
2008-3-23 08:07
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哦,谢谢了。
2008-3-23 08:23
0
雪    币: 297
活跃值: (27)
能力值: ( LV13,RANK:380 )
在线值:
发帖
回帖
粉丝
4
也有可能是对象指针,要看上下文。
2008-3-23 18:43
0
游客
登录 | 注册 方可回帖
返回
//