看流星社区

 找回密码
 注册账号
查看: 2588|回复: 4

关于delphi的CALL参数传递

[复制链接]

该用户从未签到

发表于 2011-4-24 10:31:57 | 显示全部楼层 |阅读模式
procedure Key(KeyName:integer);
var
  userkeyName:dword;
begin
  userkeyName := $4*KeyName;
  asm
    pushad
      mov  eax, dword ptr [$8F04D4]
      mov  eax, dword ptr [eax+$24]    //;此处执行完,EAX保存的是人物基地址
  mov  eax, dword ptr [eax+$8ec]  //;
      mov  eax, dword ptr [eax+$C]    //;
      mov  eax, dword ptr [eax+userkeyName]  //;此处我把值放入了eax 不知会不会影响到其他的地方
  mov ecx,eax
      mov edx,[ecx]
      mov eax,[edx+8]
      call eax
    popad
  end;
end;

以上是刚写的本人汇编很菜,一开始使用mov  eax, dword ptr [eax+keyName]  
delphi编译说不能用变量传递
于是想是不是keyName 这个位置不能进行有变量的运算,再看看上面的
mov  eax, dword ptr [$8F04D4]
mov  eax, dword ptr [eax+$24]  
于是想到预先定义一个变量算好了 在传进去  
于是userkeyName := $4*KeyName;
这样编译通过了,由于没有注入,没有测试这样行不;想问下各位大大 $24 这个在delphi里表示什么样的数据类型 就是这个吗 dword?

该用户从未签到

 楼主| 发表于 2011-4-24 10:32:16 | 显示全部楼层
函数入口地址
  asm
        pushad
          mov  eax, dword ptr [$8F04D4]
          mov  eax, dword ptr [eax+$24]    //;此处执行完,EAX保存的是人物基地址
          mov  ecx, eax                  //  ;人物基地址要作为此函数调用的this指针
          push 0                    //好象没作用!
          mov  eax, $0045C340
          call eax
        popad
  end;
end;
另外TAB我觉得 Call 只是需要一个 任务的二级地址做为参数 因此想这样修改函数
procedure TAB(PAddress:dword,base2:dword);
var
  Address:Pointer;
begin
    Address:=Pointer(PAddress);  //函数入口地址
  asm
        pushad   
          mov  ecx, base2//  ;人物基地址要作为此函数调用的this指针
          push 0                    //好象没作用!
          mov  eax, Address
          call eax
        popad
  end;
end;
各位大大 觉得可行不 还是那个问题$4这个类型是不是等于dword;

该用户从未签到

发表于 2011-4-24 10:32:23 | 显示全部楼层
$4我想是十六进制的4吧

该用户从未签到

发表于 2011-4-24 10:32:30 | 显示全部楼层
这句改为
mov ebx,userkeyName
mov eax,dword ptr [eax+ebx]

因为局部变量userkeyName在汇编中是[esp+??],而全局变量在汇编中是[XX],??,XX代表常量
试问能这样写吗? mov eax,[eax+[esp+??]] 两个[ ]了!


TAB是不用参数的!!

该用户从未签到

发表于 2011-12-2 18:38:04 | 显示全部楼层
我没有来过这里
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-6 00:56

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表