向汇编代码里传全局变量的问题
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. 可以赋值但是一样要汇编.比如MOV eax,$XXXXXXXX
然后mov p,eax就可以了 .
汇编传值必须带1个寄存器 通过寄存器就可以传值了.你试试. 楼主的代码是注入其他进程的吧,如果是要注入到其他进程的代码是不能用全局变量的,但是可以用常量.
因为变量在编译后只是个内存地址,变量的值就是这个内存地址里的值,而在本进程和其他进程同一内存地址里并不相同,所以肯定会出错。而常量在编译后是直接将数值代替常量,所以在不同进程都可以用。
如果非要用变量的话,只用作为参数传递了。相关资料可以搜索本论坛的CALL游戏函数
页:
[1]