从QQ进程内存中搜索出QQ号码

从进程中获取QQ号码 HANDLE GetQQProcess();bool SeachQQNumber(HANDLE _hProcess,string &strQQ);int _tmain(int argc, _TCHAR* argv[]){    HANDLE hProces = GetQQProcess() ;    if(hProces== NULL)        cout     string strQQ;    SeachQQNumber(hProces,strQQ);    cout     system("pau 阅读详情
// 读进程内存.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include <windows.h>
#include <tlhelp32.h>
#include <tchar.h>
#include <stdlib.h>
#include <stdio.h>

int SearchStr(PTSTR pszString, int iStrLen, PTSTR pszSearchStr)
{
	int i = 0;
	int iSearchStrlen = _tcslen(pszSearchStr);

	while ((i + iSearchStrlen) <= iStrLen )
	{
		int n = 0;
		//先匹配两个字串的第一个字符
		if (pszSearchStr[0] == pszString[i])
		{
			//若相等,则开始逐字符匹配
			for (int j = 0; j <iSearchStrlen; j++)
			{
				//相同位置字符匹配
				if (pszSearchStr[j] == pszString[i + j])
				{
					//若相同位置字符匹配成功,则计数器加1
					n++;
				}
				else  //相同位置字符匹配失败
				{
					//源字符串位置跳过匹配相同的n个字符
					i = i + n;
					//跳出当前匹配循环,开始新位置的匹配
					break;
				}
			}
			//若匹配成功,计数和目标字符串长度相等,则找到目标
			if (iSearchStrlen == n)
			{
				//i为找到的目标字符串在源字符串中的起点位置,
				//此处return,即找到的目标字符串首次出现位置
				return i;
				//找到一个目标,后移一位继续找,
				//如要继续找,请注意最后的return,代码需做点小修改
				//i++;
			}
		}
		else  //若两字符串的第一个字符不同
		{
			//开始反向找源字符串相对目标字符串的后一个字符是否在目标字符串内
			for (int j = iSearchStrlen - 1; j >= 0; j--)
			{
				//找到存在紧跟其后的那个字符
				if (pszSearchStr[j] == pszString[i + iSearchStrlen])
				{
					//该字符出现在目标字符串中的位置
					n = j;
					//只需知道排在倒数第一那个位置,跳出循环开始移动位置
					break;
				}
			}
			//移动到位置为(一个目标串长度减去出现目标串中匹配字符出现的位置),
			//即如果出现该字符,则使相同的两个字符对齐,若未出现,直接移动一个目标串长度
			i = i + iSearchStrlen - n;
		}
	}
	return 0;
}

int ReadMem(DWORD dwPid)
{
	//要搜索的特征码
	TCHAR szSub[] = TEXT("index?uin=");
	//特征码出现的位置
	int iPos = 0;
	HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, dwPid);
	if (hProcess == NULL)
	{
		return 0;
	}
	SYSTEM_INFO siSysInfo;
	GetSystemInfo(&siSysInfo);

	MEMORY_BASIC_INFORMATION mbi;
	DWORD pAddress = (DWORD)siSysInfo.lpMinimumApplicationAddress;

	int Count = GetTickCount();
	while (pAddress < (DWORD)siSysInfo.lpMaximumApplicationAddress)
	{
		if (VirtualQueryEx(hProcess, (LPVOID)pAddress, &mbi, sizeof(mbi)) != sizeof(mbi))
		{
			return 0;
		}

		if ((mbi.State == MEM_COMMIT) && (mbi.Protect == PAGE_READWRITE))
		{
			DWORD Base = pAddress;
			int ReadSize = mbi.RegionSize;

			if (ReadSize >= 1024)
			{
				DWORD dwBytes = 0;
				TCHAR *MemBuf = (TCHAR *)malloc(ReadSize * sizeof(TCHAR));

				if (ReadProcessMemory(hProcess, (LPCVOID)Base, MemBuf, ReadSize, &dwBytes))
				{
					//开始搜索特征码
					iPos = SearchStr(MemBuf, dwBytes, szSub);
					if (iPos)
					{
						_tprintf(TEXT(">>>   Address: 0x%.8X\n"), Base + iPos * sizeof(TCHAR));
						//指向QQ号码的第一个字符
						TCHAR *ptsQQ = &MemBuf[iPos + _tcslen(szSub)];
						_tprintf(TEXT(">>>        QQ: "));
						//利用指针来打印出当前QQ进程的QQ号码,
						//QQ号码之后的字符是'&'
						for (;*ptsQQ != '&';*ptsQQ++)
						{
							//注意这里是循环打印出QQ号码的每个字符,而不是整个字符串
							_tprintf(TEXT("%c"), *ptsQQ);
						}
						_tprintf(TEXT("\n"));
						//找到1个就OK了,去除break可继续找
						break;
					}
				}
				free(MemBuf);
			}
		}
		//从下一块内存块继续找
		pAddress = (DWORD)mbi.BaseAddress + mbi.RegionSize;
	}
	//计算一下查找QQ号码的用时
	Count = GetTickCount() - Count;
	_tprintf(TEXT(">>>      Time: %d ms\n"), Count);
	return iPos;
}

DWORD FindByPID(PTSTR pszProcessName)
{
	DWORD dwProcessID = 0;
	HANDLE hProcessSnap;
	PROCESSENTRY32 pe32;

	hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	if (hProcessSnap == INVALID_HANDLE_VALUE)
	{
		return 0;
	}
	pe32.dwSize = sizeof(PROCESSENTRY32);
	if(!Process32First(hProcessSnap, &pe32))
	{
		CloseHandle(hProcessSnap);
		return 0;
	}
	do
	{
		//找到QQ进程
		if (wcscmp(pszProcessName, pe32.szExeFile) == 0)
		{
			dwProcessID = pe32.th32ProcessID;
			wprintf(TEXT(">>> ------ PID = %d ------\n"), dwProcessID);
			//开始内存搜索
			ReadMem(dwProcessID);
			wprintf(TEXT(">>> ------------------------\n\n"), dwProcessID);
		}
	}
	//继续找下一个进程
	while(Process32Next(hProcessSnap, &pe32));
	CloseHandle(hProcessSnap);
	//如果存在QQ进程,此处return的是最后一个QQ进程的ID,
	//如果不在QQ进程,此处return的是dwProcessID的初始值0
	return dwProcessID;
}


int _tmain(int argc, _TCHAR* argv[])
{
	TCHAR pszP[] = TEXT("QQ.exe");
	DWORD dwPID = FindByPID(pszP);
	if (!dwPID)
	{
		wprintf(TEXT(">>> Do not found the QQ.exe\n"));
	}
	getchar();
	return 0;
}

转自看雪论坛: http://bbs.pediy.com/showthread.php?t=129164

易语言QQ评估价值源码 仅供娱乐 调用精易模块和精易皮肤模块。 阅读详情

相关推荐

抖音爆火的QQ价格评估前端源码

最近抖音很火直播给别人测qq价值多少,喜欢的自行研究。

分享一个在内存里搜索QQ号码的源码,源自看雪论坛

源码出于看雪论坛。源址已佚。先谢过     看结果         耗时47微秒 #include #include #include #include #include int SearchStr(PTSTR pszString, int iStrLen, PTSTR pszSearchStr) { int i = 0; int iSea

_Witch__的专栏 4523

C#获得当前登录的所有QQ号码,可支持win10_64

直接复制可用

QQ获取群信息

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码

qq_44243000的博客 3497

C#获取本机登录的QQ号码-源码

C#获取本机登录的QQ号码-源码

qq价值在线评估网页源码.rar

qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网页源码qq价值在线评估网2023QQ在线价值评估源码,这个源码是很多年以前的了,最近又在抖音刷到别人直播需要刷礼物才能给你评测,所以又找了一下测试了可用,将源码上传后解压,访问可以直接使用。

基于visual c++之windows核心编程代码分析(62)读取本地已登录的QQ号及应用代码...

有时候,一个PLMM在网吧上过网以后,你不好意思去搭讪要她得电话,所以就得靠自己去看她得QQ上过以后留下的记录了。 我们自己去翻QQ文件是不是很累,我们来编个程帮我们干活。 #include "stdafx.h" //对比数据,找到相同字节集的偏移 int GetI...

chengyixian7877的博客 104

QQ在线评估源码,无需部署

QQ在线评估源码:直接打开里面的 index.html 即可使用

从进程中获取QQ号码(终结修改篇+源码)

  -- 作者: 行客-- 发布时间: 2005/06/06 03:14pm [b]修正后的源码及EXE , 有易友提出源程序出错, 这里说明一下, 源程序是用4.0测试版5编写的 , 用3.8打开会出错[/b]

kingwkb的专栏 2556

抖音直播间很火的QQ号码价值在线评估HTML源码下载

抖音直播间很火的QQ号码价值在线评估HTML源码下载 QQ在线价值评估源码,最近又在抖音刷到别人直播需要刷礼物才能给你评测,所以又找了一下测试了可用,将源码上传后解压,访问可以直接使用。抖音直播间很火的QQ号码价值在线评估HTML源码下载/抖音直播间很火的QQ号码价值在线评估HTML源码下载/抖音直播间很火的QQ号码价值在线评估HTML源码下载/抖音直播间很火的QQ号码价值在线评估HTML源码下载/抖音直播间很火的QQ号码价值在线评估HTML源码下载/抖音直播间很火的QQ号码价值在线评估HTML源码下载/抖音直播间很火的QQ号码价值在线评估HTML源码下载/

QQ靓号采集源码【易语言源码】

最近打算搞个靓号,写了小软件采集一下,自行导入精易模块即可

【转】一个在内存里搜索QQ号码的源码,源自看雪论坛

#include <windows.h> #include <tlhelp32.h> #include <tchar.h> #include <stdlib.h> #include <stdio.h> int SearchStr(PTSTR pszString, int iStrLen, PTSTR pszSe...

205

win x64下安装oracle 12c出现[INS-30131]报错的解决方案

问题:  win x64下安装oracle 12c出现[INS-30131]报错的解决方案 安装oracle11g碰到“无法访问临时位置”的问题,详细信息如下: INS-30131] 执行安装程序验证所需的初始设置失败。 原因 - 无法访问临时位置。   操作 - 请确保当前用户具有访问临时位置所需的权限。   附加信息:  - 所有节点上的框架设置检查都失败  

一条道走到黑的GISer 1348

用VC获取正在运行的QQ号码

用VC获取正在运行的QQ号码 收录人:admin 文章作者:佚名(从网上收集) 更新日期:2006-3-13 阅读次数:220   前段时间在论坛上, 易友 "wjkplx"

goingup的专栏 6999

手把手教你绕过Incapsula reese84防护:从JS反混淆到动态Token生成全流程

本文深入解析了以Incapsula reese84为代表的现代Web客户端挑战防护机制,详细介绍了从JS反混淆、算法逆向到动态Token生成的全流程实战方法。文章系统阐述了如何通过模拟浏览器指纹、移植关键算法或嵌入JS引擎来构建自动化应对策略,并提供了稳健的令牌管理与系统架构设计思路,帮助开发者在合规前提下提升自动化工具的适应性。

jenkins8butler的博客 518

BERT之提取特征向量 及 bert-as-server的使用

本文内容列表提取句向量1、句向量简介1-1传统句向量1-2、BERT句向量2、 extract_features.py源码分析2-1 main函数 前一篇文章 BERT介绍及中文文本相似度任务实践 简单介绍了使用BERT进行中文文本相似度计算的方法,这篇文章着重对特征提取方法进行讲述。 提取句向量 1、句向量简介 1-1传统句向量 更多采用word embedding的方式取加权平均,该方法的一大...

ling620的专栏 1万+

从进程中获取QQ号码密码

QQ程序在运行过程中, 所有数据都是存放在进程空间中,QQ号码也不例外, 要取QQ号码, 从QQ进程空间着手是最保险的. 怎样确定QQ号码在QQ进程空间的位置? "goomoo"的方法是搜索"clientuin="关键字,这个关键字之后紧跟着就是QQ号码. 但我发现, "clientuin="后面也不一定总是登陆的QQ号码,有时是别的字符,有时是本地登陆的...

allen88的专栏 408

TwinCAT3 Modbus-TCP Client/Server使用

/起始地址是12289//起始地址是12294。

panjinliang066333的博客 7736
上一篇: Ansi转Unicode,Unicode转Ansi
下一篇: C#引用office库
sysprogram
博客等级 码龄17年 298粉丝 442原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值