clarexxg 发表于 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 位置上的 值 是一会一变的我要从一个固定内存读出来。
    CALLaddr_tt
popad
end;
end;

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

yq_ryan 发表于 2011-3-29 08:48:43

可以赋值但是一样要汇编.比如MOV eax,$XXXXXXXX
然后mov p,eax就可以了 .
汇编传值必须带1个寄存器

yq_ryan 发表于 2011-3-29 08:48:54

通过寄存器就可以传值了.你试试.

tiangao 发表于 2011-3-29 08:49:05

楼主的代码是注入其他进程的吧,如果是要注入到其他进程的代码是不能用全局变量的,但是可以用常量.
因为变量在编译后只是个内存地址,变量的值就是这个内存地址里的值,而在本进程和其他进程同一内存地址里并不相同,所以肯定会出错。而常量在编译后是直接将数值代替常量,所以在不同进程都可以用。
如果非要用变量的话,只用作为参数传递了。相关资料可以搜索本论坛的CALL游戏函数
页: [1]
查看完整版本: 向汇编代码里传全局变量的问题