C++讀寫記憶體 可變參方法未寫完 等完善
//定義讀取記憶體的方法
DWORD R4(DWORD base);
////可變參函式 用來讀取記憶體
//DWORD R4(DWORD base,...);
////定義寫記憶體的方法
bool W4(DWORD base, float dwValue);
//debugview除錯 過濾頭:qidai
void DbgPrintfA(char*pszFormat, ...);
//將float轉換為字串
CStringA formatMyData(float a);
#include "stdafx.h"
#include "Tools.h"
//定義讀取記憶體的方法
DWORD R4(DWORD base){
DWORD res;
__try{
__asm{
mov eax, base;
mov eax, [eax]
mov res, eax
}
}
__except (1){
MessageBoxA(0, "讀取記憶體出錯", 0, 0);
}
return res;
}
////可變參函式 用來讀取記憶體
//DWORD R4(DWORD*pszFormat,...){
//va_list argList;
//
//va_start(argList,pszFormat);//引數列表初始化
//
//
//
//va_end(argList);
//}
//debugview除錯 過濾頭:qidai
void DbgPrintfA(char*pszFormat, ...){
char szBufFormat[0x1000];
char szBufFormat_Game[0x1008] = "qidai:";//DebugView的過濾條件
va_list argList;
va_start(argList, pszFormat);//引數列表初始化
vsprintf_s(szBufFormat, pszFormat, argList);
strcat_s(szBufFormat_Game, szBufFormat);
OutputDebugStringA(szBufFormat_Game);//關鍵
va_end(argList);
}
//將float轉換為字串
CStringA formatMyData(float a){
CStringA tmp;
tmp.Format("%f", a);
return tmp;
}
//定義寫記憶體的方法
bool W4(DWORD base, float dwValue){
__try{
__asm{
mov eax, dwValue
mov ebx, base
mov[ebx], eax
}
}
__except (1){
MessageBoxA(0, "修改無限視距失敗", 0, 0);
return false;
}
return true;
}