WEB开发网
开发学院软件开发VC 如何截取QQ密码和聊天内容、去掉QQ广告栏、添加QQ... 阅读

如何截取QQ密码和聊天内容、去掉QQ广告栏、添加QQ尾巴

 2009-02-21 19:59:56 来源:WEB开发网   
核心提示: 说到这里,还有一个非常重要的问题,如何截取QQ密码和聊天内容、去掉QQ广告栏、添加QQ尾巴(2),那就是我们的程序必须执行在QQ空间,因为Windows系统进程是受系统保护的,首先我们要找到系统中的QQ进程,这里要用到ToolHelp32系列函数,每个进程有自己独立的内存空间,很多API函

说到这里,还有一个非常重要的问题,那就是我们的程序必须执行在QQ空间,因为Windows系统进程是受系统保护的,每个进程有自己独立的内存空间,很多API函数只对同一个进程有效,我们必须解决这个问题。

进入QQ进程

要将我们自己写的代码执行在QQ进程空间中才能实现我们上面的的分析思路,我想到了两种方法:

第一种方法还是钩子,我们的代码写到一个dll动态链接库里,然后启动系统钩子,当任何一个进程启动时,我们的dll将会被加载到该进程中,我们判断是否为QQ进程,如果不是,我们的dll就立即卸载,否则我们就顺利地进入到QQ进程空间了。这种方法有个缺点,就是任何进程启动时我们的dll都会被加载,严重影响到系统性能,我们在学习钩子的时候书本上也确实讲过,系统钩子最好少用,如果程序代码执行效率不高的情况下,将影响系统性能,再好用的软件也将变成垃圾而被用户清除出去的。

第二种方法就是远程dll注入,即用创建远程线程的方法在QQ进程空间中注入一个我自己的线程,这种方法针对性很强,只对QQ进程进行操作,不操作其他进程,不影响系统性能,而且灵活性好,我们随时可以将线程注入,也可以随时撤销,而第一种方法是系统钩子内部控制的,我们无法干预。

远程注入Dll

我们的程序分为两个部分,一部分是exe执行程序,可以控制Dll的注入,另一部分就是我们要注入的Dll。

首先我们要找到系统中的QQ进程,这里要用到ToolHelp32系列函数,以下函数能枚举出系统所有的进程:

  BOOL CProcessManage::EnumSystemProcess (
      OUT CStringArray *pStrAry_ProcessName/*=NULL*/,
      OUT CUIntArray *pUIntAry_ProcessID/*=NULL*/,
      OUT CStringArray *pStrAry_ProcessPriority/*=NULL*/,
      OUT CUIntArray *pUIntAry_ThreadNum/*=NULL*/,
      OUT CStringArray *pStrAry_ProcessPath/*=NULL*/
    )
  {
    HANDLE hProcess = NULL;
    PROCESSENTRY32 pe32;
    pe32.dwSize = sizeof(pe32);
    HANDLE hProcessSnap = ::CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 );
    if ( hProcessSnap == INVALID_HANDLE_VALUE )
      return FALSE;
  
    BOOL bMore = ::Process32First(hProcessSnap,&pe32);
    while ( bMore )
    {
      hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);
      if ( pStrAry_ProcessName ) pStrAry_ProcessName->Add ( pe32.szExeFile );
      if ( pUIntAry_ProcessID ) pUIntAry_ProcessID->Add ( pe32.th32ProcessID );
      if ( pUIntAry_ThreadNum ) pUIntAry_ThreadNum->Add ( pe32.cntThreads );
      if ( pStrAry_ProcessPriority ) pStrAry_ProcessPriority->Add ( GetProcessPriority(hProcess) );
      if ( pStrAry_ProcessPath ) pStrAry_ProcessPath->Add ( GetProcessPath(pe32.th32ProcessID) );
      bMore = ::Process32Next(hProcessSnap,&pe32);
    }
    ::CloseHandle(hProcessSnap);
    return TRUE;
  }

从枚举出的所有进程中找到QQ进程,如下代码:

上一页  1 2 3 4 5 6 7  下一页

Tags:如何 截取 QQ

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接