主题:求教dll调用的问题
刚刚学习delphi dll远程注入,有些东西不太明白,来请教老师.
我写了个dll远程注入到宿主程序,通过HOOK内置窗体调用dll的函数一切正常,但如果通过应用程序调用嵌入汇编的函数就有问题了,主要是访问地址违规,请好心人指点:
1.如果是这样就没问题
Function addHp():boolean;stdcall;// var
begin
showMessage('开始外部调用dll');
asm
mov edx,$00d947e4
mov eax,$00d91f74
end;
showMessage('调用结束');
end;
2.如果是这样就有问题了
Function addHp():boolean;stdcall;// var
begin
showMessage('开始外部调用dll');
asm
mov edx,[$00d947e4]
mov eax,[$00d91f74]
end;
showMessage('调用结束');
end;
3.这样也有问题
Function addHp():boolean;stdcall;// var
begin
showMessage('开始外部调用dll');
asm
mov edx,$00d947e4
mov eax,$00d91f74
mov ecx,$00453014
call ecx
end;
showMessage('调用结束');
end;
总结了下,就是使用寄存器没问题,但访问内存地址就不行,使用CALL指令也不行,求大虾指点了!
我写了个dll远程注入到宿主程序,通过HOOK内置窗体调用dll的函数一切正常,但如果通过应用程序调用嵌入汇编的函数就有问题了,主要是访问地址违规,请好心人指点:
1.如果是这样就没问题
Function addHp():boolean;stdcall;// var
begin
showMessage('开始外部调用dll');
asm
mov edx,$00d947e4
mov eax,$00d91f74
end;
showMessage('调用结束');
end;
2.如果是这样就有问题了
Function addHp():boolean;stdcall;// var
begin
showMessage('开始外部调用dll');
asm
mov edx,[$00d947e4]
mov eax,[$00d91f74]
end;
showMessage('调用结束');
end;
3.这样也有问题
Function addHp():boolean;stdcall;// var
begin
showMessage('开始外部调用dll');
asm
mov edx,$00d947e4
mov eax,$00d91f74
mov ecx,$00453014
call ecx
end;
showMessage('调用结束');
end;
总结了下,就是使用寄存器没问题,但访问内存地址就不行,使用CALL指令也不行,求大虾指点了!