Delphi制作QQ自动登录器源码
Delphi制作QQ自动登录器源码
以TM2009为例,检查了一下,未登录之前一个窗体,上边两个控件,登录以后,窗体捕获到一个控件,根据这个,首先找到QQ登录框,输入用户名,密码的位置,获取窗体句柄的具体代码如下:
这里先定义了一个record类型,
1 TQQWnd= record
2 QQWnd,QStatusWnd: HWND; //QQ窗口句柄,QQ弹出登录状态句柄
3 QQNumWnd, QQPassWnd: HWND; //QQ号码输入句柄,QQ密码输入句柄
4 end;
5
1 function GetQQLoginHwdvar A QQWnd: TQQWnd: Boolean;
2 var
3 WinTitle: array[0..254] of Char;
4 WinClass: array[0..254] of Char;
5 begin
6 Result:= False;
7 A QQWnd.QQWnd:= 0;
8 A QQWnd.QQNumWnd:= 0;
9 A QQWnd.QQPassWnd:= 0;
10 A QQWnd.QQWnd:= FindWindownil, 'TM2009';
11 while A QQWnd.QQWnd<> 0 do begin
12 A QQWnd.QQNumWnd:= FindWindowExAQQWnd.QQWnd, 0, 'A TL:30A 4D1D8', nil;
13 A QQWnd.QQPassWnd:= FindWindowExAQQWnd.QQWnd, 0, 'Edit', nil;
14 if AQQWnd.QQNumWnd<> 0and AQQWnd.QQPassWnd<> 0 then begin
15 Result:= True;
16 FOpened:= True;
17 Exit;
18 end else begin
19 A QQWnd.QQWnd:= GetWindowAQQWnd.QQWnd, GW_HWNDNEXT;
20 if A QQWnd.QQWnd=0 then Continue;
21 GetWindowTextAQQWnd.QQWnd, @WinTitle, SizeOfWinTitl;
22 if WinTitle<>'TM2009' then Continue;
23 end;
24 end;
25 end;
26
因为腾讯的密码输入框,采用的低级钩子,然后定时的释放,建立钩子这种方式来防止木马顺序去捕获,尝试了下,直接的用Sendmessag去发送密码信息,没反应,因此这里我采用了SendInput方式去输入密码,而用户框因为没有做任何的维护措施,所以可以直接的通过发送消息,将QQ账户信息给赋值过去,具体代码为
1 SetForegroundWindowQQWnds.QQWnd; //QQ窗体设置为活动窗体
2 //设置QQ号码
3 SendMessagQQWnds.QQNumWnd,WM_SETFOCUS,0,0; //聚焦至QQ号码输入框
4 Sleep20;
5 SendMessagQQWnds.QQNumWnd,WM_SETTEXT,0,LPA RA MFQQNum; //设置QQ号码
6
7 SendMessagQQWnds.QQPassWnd,WM_SETFOCUS,0,0; //聚焦密码输入框
8 Sleep20;
9 //设置QQ密码
10 SIKeyInputFQQPass, 10; //QQ密码采取SENDINPUT方式
11
12
13
解下来要操作的就是设置登录方式了譬如说“线上”隐身”等状态,由于腾讯的登录窗体是采用的GUI所以是捕获不到句柄的只能通过坐标来捕获,之前的时候,用的固定坐标,然后有的电脑可以用,有的不能用,后来才发现,由于腾讯的界面可以拉动,只要一拉动,坐标位置就变了因此我这里采取相对坐标,根据QQ密码框的坐标,来设置点击的坐标。腾讯的状态是窗体上点击以后,弹出一个跟登录框平级的窗口,因此点击以后,需要检测是否弹出选择状态窗口,找到那个窗口句柄以后,再发送相应的点击命令,这样就完成整个的流程了
1 const
2 QQStatusYA rray: array[0..5] of Integer= 19, 38, 62, 86, 105, 131;
3
4
5 ClickTimes:= 0; //为防止有的时候点击过程中出现其他不可预料的错误,这里可以重复点击三次
6 QQWnds.QStatusWnd:= 0; //设置QQ状态初始句柄为0
7 //鼠标点击
8 while ClickTimes<3 do begin
9 PostMessagQQWnds.QQWnd,$201,MK_LBUTTON,StrToInt#36+IntToHexQQNumRec.Bottom- QQRect.Top+21,4+IntToHexQQNumRec.Left-QQRect.Left+25,4; //发送点击消息,这里如果采用SendMessag会死线程,因此我采用了PostMessage
10 PostMessagQQWnds.QQWnd,$202,MK_LBUTTON,StrToInt#36+IntToHexQQNumRec.Bottom- QQRect.Top+21,4+IntToHexQQNumRec.Left-QQRect.Left+25,4;
11 Sleep200;
12 QQWnds.QStatusWnd:= FindWindow'TXGuiFoundation','TXMenuWindow'; //检测是否存在QQ设置状态窗体
13 if QQWnds.QStatusWnd<>0 then begin
14 try
15 PostMessagQQWnds.QStatusWnd,$201,MK_LBUTTON,StrToInt#36+IntToHexQQStatusYA rray[FQQStatus],4+IntToHex27,4; //如果存在窗体,直接的发送点击信息
16 PostMessagQQWnds.QStatusWnd,$202,MK_LBUTTON,StrToInt#36+IntToHexQQStatusYA rray[FQQStatus],4+IntToHex27,4;
17 except
18 end;
19 Break;
20 end;
21 ClickTimes:=ClickTimes+1;
22 end;
23 if QQWnds.QStatusWnd=0 then begin //如果一直没有捕捉到设置状态窗体,顺序则自动退出
24 Task.Comm.SendMSG_QQ_ERR, IntToStrQQRect.Left+''+ IntToStrQQRect.Top+ ''+ In
tToStrQQRect.Right+ ''+ IntToStrQQRect.Bottom
25 +''+ IntToStrQQNumRec.Left+''+ IntToStrQQNumRec.Top+ ''+ IntToStrQQNu
mRec.Right+ ''+ IntToStrQQNumRec.Bottom
26 + IntToStrQQNumRec.Bottom- QQRect.Top+21+'设置状态失败';
27 // Task.Comm.SendMSG_QQ_ERR, IntToStrQQNumRec.Left-QQRect.Left+25+''+ IntToStrQQNumRec.Bottom- QQRect.Top+21+'设置状态失败';
28 Exit;
29 end;
30
最后,直接的点击登录按钮就可以了这个地方,也是要计算相对于密码输入框的坐标
1 //点击登录按钮
2 try
3 PostMessagQQWnds.QQWnd,$201,MK_LBUTTON,StrToInt#36+IntToHexQQNumRec.Bottom- QQRect.Top+114,4+IntToHexQQNumRec.Left-QQRect.Left+64,4;
4 PostMessagQQWnds.QQWnd,$202,MK_LBUTTON,StrToInt#36+IntToHexQQNumRec.Bottom- QQRect.Top+114,4+IntToHexQQNumRec.Left-QQRect.Left+64,4;
5 except
6 end;
7
至此,整个的流程完毕了最后,还可以增加上检测该QQ号码是否已经登录
以下是最后进去的界面,直接的将QQ信息保管在数据库当中,密码采用了AES加密,所以也不用担心密码信息被泄
Delphi制作QQ自动登录器源码的更多相关文章
- QQ自动登录Demo源码(附全套WindowsApi)
在开发过程中,偶尔会有自动化操作软件的需求,便想到用句柄实现自动化的功能,记录下知识点,以作备忘. 实现流程: 获取窗口句柄,根据定位获取input,调用windowsapi模拟鼠标点击, 输入 , ...
- C++、VC++、MFC网页自动注册、登陆、发帖、留言,QQ注册、QQ申请器源码、注册邮箱源码、自动发帖源码
C++.VC++.MFC网页自动注册.登陆.发帖.留言,QQ注册.QQ申请器源码.注册邮箱源码.自动发帖源码 参考资料: 自动登录yahoo邮箱http://blog.csdn.net/suisu ...
- android文件管理器源码、斗鱼直播源码、企业级erp源码等
Android精选源码 文件清理管理器 自定义水平带数字的进度条以及自定义圆形带数字的进度条 利用sectionedRecyclerViewAdapter实现分组列表的recyclerView源码 流 ...
- linux调度器源码分析 - 初始化(二)
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 引言 上期文章linux调度器源码分析 - 概述(一)已经把调度器相关的数据结构介绍了一遍,本篇着重通过代码说明 ...
- 一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- H5类似易企秀/编辑器/页面制作/开发/生成工具/软件/源码/授权
代码地址如下:http://www.demodashi.com/demo/14960.html 项目简介 H5DS (HTML5 Design software) 这是一款基于WEB的 H5制作工具. ...
- 32.修改IK分词器源码来基于mysql热更新词库
主要知识点, 修改IK分词器源码来基于mysql热更新词库 一.IK增加新词的原因 在第32小节中学习到了直接在es的词库中增加词语,来扩充自已的词库,但是这样做有以下缺点: (1)每次添加完 ...
- Linux 内核调度器源码分析 - 初始化
导语 上篇系列文 混部之殇-论云原生资源隔离技术之CPU隔离(一) 介绍了云原生混部场景中CPU资源隔离核心技术:内核调度器,本系列文章<Linux内核调度器源码分析>将从源码的角度剖析内 ...
- Android音乐播放器源码(歌词.均衡器.收藏.qq5.0菜单.通知)
一款Android音乐播放器源码,基本功能都实现了 qq5.0菜单(歌词.均衡器.收藏.qq5.0菜单.通知) 只有向右滑动出现,菜单键和指定按钮都还没有添加. 源码下载:http://code.66 ...
随机推荐
- 搭建springmvc项目404,没扫描到包
搭建简单项目完成之后,曾经出现过一个问题 跳转报了404,控制台忘了没留啊... 反正意思就是说我配置有问题,导致没有扫描到注释的类 <context:component-scan base-p ...
- 【bzoj4756】[Usaco2017 Jan]Promotion Counting 离散化+树状数组
原文地址:http://www.cnblogs.com/GXZlegend/p/6832263.html 题目描述 The cows have once again tried to form a s ...
- HTML,CSS,font-family:中文字体的英文名称【转载】
转自:http://www.9958.pw/post/html_font-family 宋体 SimSun 黑体 SimHei 微软雅黑 Microsoft YaHei 微软正黑体 Microsoft ...
- spring in action 学习十一:property placeholder Xml方式实现避免注入外部属性硬代码化
这里用到了placeholder特有的一个语言或者将表达形式:${},spring in action 描述如下: In spring wiring ,placeholder values are p ...
- 浅谈android Socket 通信及自建ServerSocket服务端常见问题
摘 要:TCP/IP通信协议是可靠的面向连接的网络协议,它在通信两端各建立一个Socket,从而在两端形成网络虚拟链路,进而应用程序可通过可以通过虚拟链路进行通信.Java对于基于TCP协议的网络通 ...
- Codevs 1710 == POJ 1190 生日蛋糕 == 洛谷P1731
生日蛋糕 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ ...
- 强引用(StrongReference)、弱引用(WeakReference)、软引用(SoftReference)、虚引用(PhantomReference)
1.强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.如下: Object o=new Object(); // 强引用 当内存空间 ...
- 无法安装MVC3,一直卡在vs10-kb2483190
原文发布时间为:2011-05-15 -- 来源于本人的百度文章 [由搬家工具导入] 无法安装MVC3,一直卡在vs10-kb2483190 解决方案: 1、用winrar 解压 MVC3安装文件 2 ...
- 行为型设计模式之观察者模式(Observer)
结构 意图 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新. 适用性 当一个抽象模型有两个方面, 其中一个方面依赖于另一方面.将这二者封装在独 ...
- loj 数列分块入门 5 7 8
5 题意 给出一个长为\(n\)的数列,以及\(n\)个操作,操作涉及区间开方,区间求和. 思路 用\(tag\)记录这一块是否已全为\(1\). 除分块外,还可用 树状数组+并查集(链表) 或者 线 ...