看流星社区

 找回密码
 注册账号
查看: 3099|回复: 3

[Delphi] 向汇编代码里传全局变量的问题

[复制链接]

该用户从未签到

发表于 2011-3-29 08:48:27 | 显示全部楼层 |阅读模式
procedure JC_call;
var
addr_tt:pointer;
begin
    addr_tt  :=pointer($72fce10);
  pushad
    push xxxxxxxx
  mov ecx,xxxxxxx  我想把这里换成mov ecx,P ,这里 P 位置上的 值 是一会一变的我要从一个固定内存读出来。
    CALL  addr_tt
  popad
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
    P:=$XXXXXXXX  ; 这是我从内存里读出 的数据
end;
我现在的问题是P的值就不能正确的传到 mov ecx,P 这。
请问有别的解决办法吗?
end.

该用户从未签到

发表于 2011-3-29 08:48:43 | 显示全部楼层
可以赋值但是一样要汇编.比如MOV eax,$XXXXXXXX
然后mov p,eax  就可以了 .  
汇编传值必须带1个寄存器

该用户从未签到

发表于 2011-3-29 08:48:54 | 显示全部楼层
通过寄存器就可以传值了.你试试.

该用户从未签到

发表于 2011-3-29 08:49:05 | 显示全部楼层
楼主的代码是注入其他进程的吧,如果是要注入到其他进程的代码是不能用全局变量的,但是可以用常量.
因为变量在编译后只是个内存地址,变量的值就是这个内存地址里的值,而在本进程和其他进程同一内存地址里并不相同,所以肯定会出错。而常量在编译后是直接将数值代替常量,所以在不同进程都可以用。
如果非要用变量的话,只用作为参数传递了。相关资料可以搜索本论坛的CALL游戏函数
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

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

GMT+8, 2024-3-29 12:43

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

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