⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memreader.cpp

📁 基于VC++用来读指定进程内存数据的程序
💻 CPP
字号:
// MemReader.cpp: implementation of the MemReader class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MemoryReader.h"
#include "MemReader.h"

#include "winbase.h"
#include "tlhelp32.h"

#include "iostream.h"
#include "stdlib.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

MemReader::MemReader(LPCTSTR name)
{
	pId = GetProcessIdFromName(name);
	hProcess = OpenProcess(PROCESS_VM_READ, false, pId);

	if(hProcess == NULL)
	{
		cout << "Open Process Error!" << endl;
		return;
	}
}

MemReader::~MemReader()
{

}

DWORD MemReader::GetProcessIdFromName(LPCTSTR name)
{
	PROCESSENTRY32 pe;
	DWORD id = 0;
	HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
	pe.dwSize = sizeof(PROCESSENTRY32);
	if(!Process32First(hSnapshot,&pe))
		return 0;
	do
	{
		pe.dwSize = sizeof(PROCESSENTRY32);
		if(!Process32Next(hSnapshot,&pe))
		break;
		if(strcmp(pe.szExeFile,name) == 0)
		{
			id = pe.th32ProcessID;
			break;
		}
	}while(TRUE);
	CloseHandle(hSnapshot);
	return id;
}

void MemReader::setProcess(char *procName)
{
	pId = GetProcessIdFromName(procName);
	hProcess = OpenProcess(PROCESS_VM_READ, false, pId);

	if(hProcess == NULL)
	{
		cout << "Open Process Error!" << endl;
		return;
	}
}

void MemReader::readMemory(LPCVOID addr, LPVOID valueBuffer, int bytes)
{
	if(!ReadProcessMemory(hProcess, addr, valueBuffer, bytes, NULL))
		cout << "Read Error!" << endl;
}

int MemReader::getSpeed()
{
	char speedStr[64];
	readMemory((LPCVOID)speedAddr, (LPVOID)speedStr, 8);
	cout << "speed string: " << speedStr << endl;
	return atoi(speedStr);
}

int MemReader::getGear()
{
	char gearStr[64];
	readMemory((LPCVOID)gearAddr, (LPVOID)gearStr, 8);
	cout << "gear string: " << gearStr << endl;
	return atoi(gearStr);
}


void MemReader::setSpeedAddress(long int addr)
{
	speedAddr = addr;
}

void MemReader::setGearAddress(long int addr)
{
	gearAddr = addr;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -