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

📄 memedit.cpp

📁 游戏修改器 大家可以看看呵呵 老牌子的 但是可能别人已经发过了
💻 CPP
字号:
// MemEdit.cpp : implementation file
//
#include "winbase.h"
#include "stdafx.h"

#include "MemEdit.h"

#include "GameMaster.h"

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

BOOL g_BlockModified;//
BYTE g_BlockBuffer[256];//

/////////////////////////////////////////////////////////////////////////////
// MemEdit dialog


MemEdit::MemEdit(CWnd* pParent /*=NULL*/)
	: CDialog(MemEdit::IDD, pParent)
{
	//{{AFX_DATA_INIT(MemEdit)
	m_strMemAddr = _T("");
	m_dwbaseAddr = 0x00100000;
	m_strMemValue = _T("");
	m_strASCIIValue = _T("");
	//}}AFX_DATA_INIT
}


void MemEdit::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(MemEdit)
	DDX_Control(pDX, IDC_EDIT_ASCII, m_ASCIIValue);
	DDX_Control(pDX, IDC_EDIT_HEXVALUE, m_hexValue);
	DDX_Control(pDX, IDC_EDIT_HEXADDR, m_memAddr);
	DDX_Text(pDX, IDC_EDIT_HEXADDR, m_strMemAddr);
	DDX_Text(pDX, IDC_EDIT_MEMADDR, m_dwbaseAddr);
	DDX_Text(pDX, IDC_EDIT_HEXVALUE, m_strMemValue);
	DDX_Text(pDX, IDC_EDIT_ASCII, m_strASCIIValue);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(MemEdit, CDialog)
	//{{AFX_MSG_MAP(MemEdit)
	ON_EN_VSCROLL(IDC_EDIT_HEXADDR, OnVscrollEditHexaddr)
	ON_EN_VSCROLL(IDC_EDIT_HEXVALUE, OnVscrollEditHexvalue)
	ON_EN_VSCROLL(IDC_EDIT_ASCII, OnVscrollEditAscii)
	ON_BN_CLICKED(IDC_BTN_MEMREAD, OnBtnMemread)
	ON_BN_CLICKED(IDC_BTN_MEMWRITE, OnBtnMemwrite)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// MemEdit message handlers

void MemEdit::OnVscrollEditHexaddr() 
{
	int nIndex= m_memAddr.GetFirstVisibleLine()-m_nLine;
	m_nLine=m_memAddr.GetFirstVisibleLine();
	m_hexValue.LineScroll(nIndex);
	m_ASCIIValue.LineScroll(nIndex);
	
}

void MemEdit::OnVscrollEditHexvalue() 
{
	int nIndex= m_hexValue.GetFirstVisibleLine()-m_nLine;
	m_nLine=m_hexValue.GetFirstVisibleLine();
	m_memAddr.LineScroll(nIndex);
	m_ASCIIValue.LineScroll(nIndex);
}

void MemEdit::OnVscrollEditAscii() 
{
	int nIndex= m_ASCIIValue.GetFirstVisibleLine()-m_nLine;
	m_nLine=m_ASCIIValue.GetFirstVisibleLine();
	m_hexValue.LineScroll(nIndex);
	m_memAddr.LineScroll(nIndex);
	
}

void MemEdit::OnBtnMemread() 
{

	UpdateData( TRUE );

	memset(g_BlockBuffer,0,sizeof(g_BlockBuffer));
	m_strMemAddr = "";
	m_strMemValue = "";
	m_strASCIIValue = "";


/*	HANDLE hProcess = OpenProcess(
		                       PROCESS_ALL_ACCESS,
							   FALSE,
							   ProcId
							   );
							   */

	if(hProcess==INVALID_HANDLE_VALUE)
	{
		AfxMessageBox(" hProcess==INVALID_HANDLE_VALUE !");
		return;
	}
	DWORD NumberOfBytesRead;


	BOOL bOk=ReadProcessMemory(hProcess,
							   (LPVOID)m_dwbaseAddr,
							   g_BlockBuffer,
							   256,
							   &NumberOfBytesRead);
	if(bOk==FALSE)
	{
		AfxMessageBox("ReadProcessMemory Failed!");
		return;
	}

	CString csTemp;
	char chTemp;
	if(bOk)
	{
		for(int i=0;i<32;i++)
		{

			csTemp.Format("0x%p \n",m_dwbaseAddr+i*8);//Edit 1
			m_strMemAddr+=csTemp;

			for(int j=0;j<8;j++)
			{
				csTemp.Format("%02x ", g_BlockBuffer[i*8+j]);//Edit 2        
				m_strMemValue +=csTemp;
				chTemp=g_BlockBuffer[i*8+j] ? g_BlockBuffer[i*8+j]:'.';
				csTemp.Format("%c ",chTemp);
				m_strASCIIValue +=csTemp;
				if(j==7)
				{
					m_strMemValue+="\n";
					m_strASCIIValue+="\n";
				}

			}
		}
		UpdateData(false);
	}

//	CloseHandle(hProcess);


}


void MemEdit::OnBtnMemwrite() 
{
	//Write g_buffer[256] back to the memory
	if(g_BlockModified)
	{
//		CTask m_Task;//............Must..to..be..Modefied........................
	
//     	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcId);
		
		DWORD NumberOfBytesWrite;
		int bOk=WriteProcessMemory(hProcess,
							   (LPVOID)m_dwbaseAddr,
							   g_BlockBuffer,
							   sizeof(g_BlockBuffer),
							   &NumberOfBytesWrite);

		if(!bOk)
		{
			AfxMessageBox( "Write memory Error!");

		}
//		CloseHandle(hProcess);

	}

	OnBtnMemread();
			
}

⌨️ 快捷键说明

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