一个困惑了我n久的问题,求高人门指点指点(150分)

  • 主题发起人 主题发起人 andwe
  • 开始时间 开始时间
A

andwe

Unregistered / Unconfirmed
GUEST, unregistred user!
学delphi也一年多了,居然连基本的windows窗体运行机理都不了解!
大家都看过网上的qq盗号器(注意,我们讨论的不是盗号技术)吧?
获得窗体的handle,再sendMessage WM_GETTEXT
但我试了下大话西游,根本得不到用户名(密码)框的Handle
问题很多,归纳如下
1,是不是spyxx.exe(vc++带的窗体消息查看工具)的问题,窗体的处理过程函数(WinProc)屏蔽了发送到窗体的获取WM_CHILD之类的消息
2,还是根本就不是窗体?那是什么?
3,怎么办到的,哪位大虾能写个简单的出来吗?
4,最好是有人详细讲讲windows窗体生成,处理事件,处理消息等等的具体东西。
感觉连这个都不知道,windows编程不用学了(:p),有没有好点的书呢?
感觉面向对象还是有弊端啊(完全不了解系统底层!)
 
WM_GETTEXT 是不是在程序中能拦住 然后用Message:=0来屏蔽掉啊??
 
问题是我根本连它的handle也得不到!
怎么SendMessage呢。
 
可能是一个控制台程序吧
 
1.有可能!
2.有可能!
3.对于问题1,可以在自己程序设变量 自己读的时候 置true 读完马上 false ,如果在false
的时候 遇到 WM_GETTEXT 可以屏蔽,也可以给他个假的 ^_^
对于问题2, 可能采用 画的方法就可以了.....
 
谢谢大家
to 刘麻子:可以给出具体的实例吗?
 
我试着写了如下的程序,把窗体接收到的所有消息都写到磁盘去,但当spyxx.exe启动的时候,并没有记录下任何消息,这是为什么?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
procedure myproc(var msg:TMessage);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Oldproc:TWndMethod;
implementation
{$R *.dfm}
procedure writetofile(fs,s:string);
var
f:textfile;
begin
assignfile(f,fs);
if fileexists(fs)=false then
rewrite(f)
else
append(f);
writeln(f,s);
closefile(f);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Oldproc:=Form1.WindowProc;
//重写窗口消息处理函数?
Form1.WindowProc:=myproc;
end;

procedure TForm1.myproc(var msg:TMessage);
var
s:string;
begin
s:=inttostr(msg.Msg)+':'+inttostr(msg.WParam)+':'+inttostr(msg.LParam);
writetofile('c:/ttt.txt',s);
OldProc(msg);
end;

end.
 
他如果不用windows 的从标准控件下来的控件
就没有handle.
象java 的,总之 如果他不用handle 你就找不到。
不过 这类 程序 不多。
一个窗体中 可以用 lable 加form的keypress作
 
其实我想实现的是
在一个窗口上放一个edit控件而不让spyxx发现
 
to hfghfghfg:
他如果不用windows 的从标准控件下来的控件
就没有handle.
怎么不从标准控件下来?
delphi能办到吗?
 
没有handle的窗体?
好象有点不可能呢。
那windows怎么对这个窗体做处理呢?
 
窗体是有handle的。
用 lable 加form的keypress作一个edit
应该 不难 吧
 
提个意见
你的代码写的不够规范。
 
恩 ,感谢hfghfghfg
确实用Label没有Handle,确能解决我的输入框密码被盗的问题
再提一个:
我们引用Label的值Label1.Caption在底层是怎么实现的?
 
关于 , 防止 edit 中东西 被读出来 的代码 ,我已经给你了 !
另外 ,如果不用edit,是可以的,直接画就可以了!
 
我们引用Label的值Label1.Caption在底层是怎么实现的?
是不是发送消息,还是....?
 
>>>一个窗体中 可以用 lable 加form的keypress作 &
我们引用Label的值Label1.Caption在底层是怎么实现的?是不是发送消息,还是....?
就是用lable模拟edit嘛!其实直接画也可以,我早就说了。。。
关键在于,根据键盘鼠标动作,修改lable.caption或者画出新的图。。。
 
我想说的是,在汇编的层次上怎么理解程序Label1.Caption这个引用??
 
不论是大话还是传奇,都不是Tedit,好象是直接画的.
真想盗号的话,还是监视键盘和剪贴版把
 
后退
顶部