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