关于delphi汇编问题
BackAdr:= Pointer($00400000);asm
push 101
call BackAdr
end;
BackAdr:= Pointer(GetAdr);
asm
push 101
call BackAdr
end;
上面第一个可以正常使用,下面就不行,GetAdr为遍历获取的模块基址,请问要怎么赋值呢{:1_932:} 本帖最后由 Vvvvvoid 于 2021-9-21 11:10 编辑
BackAdr:= Pointer(GetAdr);
asm
push ebx
mov ebx,BackAdr
push 101
call ebx
pop ebx
end; BackAdr:= Pointer(GetAdr);
begin
asm
push 101
call BackAdr
end;
end;
最好不要直接用asm,然后要用或者加上pushad popad,注意堆栈平衡,不然会出现很多莫名其妙的问题 Vvvvvoid 发表于 2021-9-21 11:09
BackAdr:= Pointer(GetAdr);
asm
push ebx
不行 不知道为什么会CALL到一个奇怪的地方 xiaoy 发表于 2021-9-21 15:21
BackAdr:= Pointer(GetAdr);
begin
asm
不行 pushad popad也用了 不知道为什么会CALL到一个奇怪的地方 darkyu 发表于 2021-9-21 17:56
不行 pushad popad也用了 不知道为什么会CALL到一个奇怪的地方
你直接OD挂上看一下不就知道哪里的问题了,地址错误肯定就是GetAdr的问题咯
页:
[1]