首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

basm 操作属性,该如何解决

2012-03-30 
basm 操作属性Delphi(Pascal) codeprocedure TForm1.FormCreate(Sender: TObject)asm//以下两句都不行!ca

basm 操作属性

Delphi(Pascal) code
procedure TForm1.FormCreate(Sender: TObject);asm//以下两句都不行!  call TWinControl.Handle  call TWinControl.GetHandleend;


我只是想获得窗体的句柄而已!用basm肿么弄!

[解决办法]
如果只是想调用非Pushished属性的Get方法,如GetHandle
还可以这样
procedure Get_TWinControlHandle_Address;
begin
TWinControl(NIL).Handle;
end;

然后分析 函数@Get_TWinControlHandle_Address中的第一个CALL,即可得到GetHandle函数的地址
得到地址后,就可以构造类方法来任意调用了,这里得用到反编译或者,根据情况直接访问@Get_TWinControlHandle_Address的地址字节来获取,后着需要根据情况来分析.
[解决办法]
Create+偏移,自然能得到地址,有区别的就是,如果这个类的某些函数没被编译进来,那这个地址就得跟着变动,有一定不可靠因素,甚至连这个函数都没有被编译进来, 这和fHandle地址不一样,对象本身的成员,只要一定义,并且别任意地方引用,不管这个地方是否被编译进来,就回跟随Create一起申请内存,而函数地址就有不好说了。

NIL通过是D7
忘记说了,我最常用的是D7

热点排行