以前加入BCG时写的几篇破文2

标 题:Crack之亲历手迹3--Delphi程序中是如何获得一个Edit的Text内容的 (1千字)
发信人:y97523  [ 发短消息]
时 间:2002-03-09 19:58:37
阅读次数:284
详细信息:
Crack之亲历手迹3--Delphi程序中是如何获得一个Edit的Text内容的
----------Crack之亲历手迹2--我的第一个注册机----之续集
//--------------------------------------------------------------
实验工具:IDA Pro、Delphi 6、SoftICE4.05
实验目的:发现Delphi编的程序如何获得文本框(Edit)的数据(Text)而不用API函数
//--------------------------------------------------------------
1.用Delphi编个简单的试验程序
一个Form包含一个Edit、一个Button、代码如下
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Edit1.Text);
end;
-------^~
而Edit.text好像是调用下面的类似函数(从IDA的反汇编可以看出,不过那叫TControl::GetText)
//摘录自Delphi6的source/vcl/controls.pas目录
function TControl.GetTextBuf(Buffer: PChar; BufSize: Integer): Integer;
begin
Result := Perform(WM_GETTEXT, BufSize, Longint(Buffer));
//Perform(Msg: Cardinal; WParam, LParam: Longint): Longint;
//Responds as if the control received a specified Windows message.
end;
从中我们可以看出Delphi时通过Perform函数直接模拟向Edit发送WM_GETTEXT消息来获得Text的内容的!
注意这个WM_GETTEXT消息发送是模拟的,你用BPX MSGFUN时栏不到的,其实是通过Call WndProc的方式!
2。用IDA反汇编1中的exe同样可见到
call @TControl@GetText ;
//--------------------------
@TControl@GetText proc near
...
call unknown_libname_169
...
//--------------------------
unknown_libname_169 proc near
...
call @Controls@TControl@Perform$qqruiii ; Controls::TControl::Perform(uint,int,int)
...
3.结论:Delphi通过向Edit发送WM_GETTEXT(直接调用WNDProc,而没有使用消息函数)消息来获得Text的内容的!
GetText(){
Call WndProc(WM_GETTEXT);
}
|
WndProc(Msg){
DefWndProc(Msg);
}
Text的自值由DefWndProc系统函数给出!
附:看来Borload的那些家伙写出的东西的确与众不同
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值