基于visual c++之windows核心编程代码分析(62)读取本地已登录的QQ号及应用代码
来源:互联网 发布:java多进程同步 编辑:程序博客网 时间:2024/04/30 01:15
有时候,一个PLMM在网吧上过网以后,你不好意思去搭讪要她得电话,所以就得靠自己去看她得QQ上过以后留下的记录了。
我们自己去翻QQ文件是不是很累,我们来编个程帮我们干活。
#include "stdafx.h"//对比数据,找到相同字节集的偏移int GetInBuffer(const void *pStart, int nLen, const void *pFindBuffer, int nfLen){for (int i = 0; i < nLen - nfLen; i++){if (memcmp((void *)((ULONG)pStart + i), pFindBuffer, nfLen) == 0){return i;}}return -1;}void ReadQQ(DWORD dwProcessId){//由于QQ是使用Unicode字符集的,所以我们使用wchar_t类型static wchar_t QQDATA[] = L"Msg2.0.db";//MsgEx.db,好像以前有个版本的数据库文件是MsgEx.db,用MsgEx来当关键字检索速度会变慢。//但是QQ2010的是用Msg2.0.db的。//打开进程HANDLE hProcess = OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION, 0, dwProcessId);int nMemLen = 28, nMemStart;void *pMemAddress = NULL;BYTE *bMemBuffer;MEMORY_BASIC_INFORMATION mbi;memset(&mbi, 0, sizeof(MEMORY_BASIC_INFORMATION));wchar_t szQQnumber[15];szQQnumber[0] = 0;//寻找进程空间while (VirtualQueryEx(hProcess, pMemAddress, &mbi, nMemLen) != 0){if (mbi.Type == MEM_PRIVATE && mbi.Protect == PAGE_READWRITE){//分配足够的内存空间,存放数据bMemBuffer = new BYTE[mbi.RegionSize + 1];bMemBuffer[mbi.RegionSize] = 0;if (ReadProcessMemory(hProcess, pMemAddress, bMemBuffer, mbi.RegionSize, NULL)){//尝试寻找当前内存空间中是否包含Msg2.0.dbnMemStart = GetInBuffer(bMemBuffer, mbi.RegionSize, QQDATA, sizeof(QQDATA));if (nMemStart != -1){//向前推一定位置,因为路径是 ..\[QQ号]\Msg2.0.dbwchar_t *pQQText = (wchar_t *)&bMemBuffer[nMemStart - 28];wchar_t *pQQstart = wcsstr(pQQText, L"\\");if (pQQstart){pQQstart++;wchar_t *pQQEnd = wcsstr(pQQstart, L"\\");if (pQQEnd){lstrcpynW(szQQnumber, pQQstart, pQQEnd - pQQstart + 1);wprintf(L"%s\n", szQQnumber);}}delete[] bMemBuffer;break;}}//销毁刚刚分配的内存空间delete[] bMemBuffer;}pMemAddress = (void *)((ULONG)pMemAddress + mbi.RegionSize);}CloseHandle(hProcess);}void FindQQ(){//DWORD dwProcessId = 0;//进程快照~HANDLE Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);PROCESSENTRY32 pl;pl.dwSize=sizeof(PROCESSENTRY32);if (Process32First(Snapshot, &pl)){do{if(lstrcmpi(pl.szExeFile, _T("QQ.exe")) == 0){//读取QQ号ReadQQ(pl.th32ProcessID);//dwProcessId = pl.th32ProcessID;//循环,读取本地所有登录的QQ号。//break;跳出循环}}while(Process32Next(Snapshot, &pl));}CloseHandle(Snapshot);//return dwProcessId;}int _tmain(int argc, _TCHAR* argv[]){FindQQ();scanf("%*c");return 0;}
- 基于visual c++之windows核心编程代码分析(62)读取本地已登录的QQ号及应用代码
- 基于visual c++之windows核心编程代码分析(62)读取本地已登录的QQ号及应用代码
- VC++实现读取本地已登录的QQ号及应用代码
- VC++实现读取本地已登录的QQ号及应用代码
- 基于visual c++之windows核心编程代码分析(48)编程实现远程登录3389
- 基于visual c++之windows核心编程代码分析(48)编程实现远程登录3389
- 基于visual c++之windows核心编程代码分析(47)实现交换网络的QQ号嗅探
- 基于visual c++之windows核心编程代码分析(47)实现交换网络的QQ号嗅探
- 基于visual c++之windows核心编程代码分析(61)打造自己的Windows输入法
- 基于visual c++之windows核心编程代码分析(35)实践NT服务的框架
- 基于visual c++之windows核心编程代码分析(18)远程代码注入执行
- 基于visual c++之windows核心编程代码分析(18)远程代码注入执行
- 基于visual c++之windows核心编程代码分析(64)现有的exe文件中添加自己的代码
- 基于visual c++之windows核心编程代码分析(64)现有的exe文件中添加自己的代码
- 基于Visual C++之Windows核心编程代码分析(2)实现Windows用户管理
- 基于Visual C++之Windows核心编程代码分析(2)实现Windows用户管理
- 基于Visual C++之Windows核心编程代码分析(2)实现Windows用户管理
- 基于visual c++之windows核心编程代码分析(22)Mapping File编程
- PS 合成相关技巧
- 基于visual c++之windows核心编程代码分析(59)实现网络简单代理编程
- 基于visual c++之windows核心编程代码分析(60)实现系统盘定制与软件自动安装
- 基于visual c++之windows核心编程代码分析(61)打造自己的Windows输入法
- 分享关于平板电视的一些使用、选购经验和想法。
- 基于visual c++之windows核心编程代码分析(62)读取本地已登录的QQ号及应用代码
- 基于visual c++之windows核心编程代码分析(63)无模块dll进程注射
- 对字符编码的学习理解
- 互联网访问oracle(监听器)
- 基于visual c++之windows核心编程代码分析(64)现有的exe文件中添加自己的代码
- 基于visual c++之windows核心编程代码分析(65)实现程序自我复制
- 基于visual c++之windows核心编程代码分析(66)实现Windows服务的远程控制
- C++ 泛型 Heap 实现
- 优酷,土豆,迅雷看看等视频网站去广告其实有很多方法