我可能用如下方法获得EAX的值
var
N:Integer;
begin
asm
Mov N,EAX
end; ShowMessage('EAX='+IntToStr(N));
end;
但这个方法不适用EIP,因为EIP没定义,记得8086汇编中$就相当于当前指令的址,可以通过Mov AX,$
当前指令的地址,不知在Delphi下有没有类似的方法得到当前的指令地址??
var
N:Integer;
begin
asm
Mov N,EAX
end; ShowMessage('EAX='+IntToStr(N));
end;
但这个方法不适用EIP,因为EIP没定义,记得8086汇编中$就相当于当前指令的址,可以通过Mov AX,$
当前指令的地址,不知在Delphi下有没有类似的方法得到当前的指令地址??
解决方案 »
- 如何建立这样的DLL?
- Delphi 中﹐如果指定dbgrid 的某个field 得到焦点啊……
- 简单问题,送分啦
- 有那位朋友,了解‘汇驿软件’,请介绍一下!在线等
- 如何在DBGrid中给日期型字段调用日期控件? 在线等待
- 请熟悉用delphi操作word的朋友进来看看下面两行代码。
- 200分!!!有本事拿走~~ :多级分组报表问题。Up有分。
- Delphi+Access2000中,如何复制一个表的结构(包括索引、约束、默认值)?急!!!
- delphi5有象vb中的面版锁一样的功能吗?
- To Kingron & All 能否给我一些关于PE文件结构的资料?
- 窗体的问题!
- 在 dll 中使用 ado 控件是不是需要一些特别的操作才行?
asm
POP EAX;
PUSH EAX
end;在其他地方调用一下就行了。
应该是
Function GetEIP : DWORD;stdcall;
忘记加规范了,Sorry
以下方法可以得到@Label处的地址
var
n : integer;
begin
asm
@Label:
LEA EAX , @Label;//这样子写,也就是得到运行到此处时的EIP
MOV n , EAX;
end;
ShowMessage(Inttohex(n,8));
end;
给一个我最拿手的方法,病毒或PE壳最最经典的方法:
ASM
CALL @Delta
@Delta:
POP EAX // get current EIP
SUB EAX, OFFSET @Delta // calculate and adjust offset (current EIP)
END;http://lysoft.7u7.net