1. 程式人生 > >C++讀寫記憶體 可變參方法未寫完 等完善

C++讀寫記憶體 可變參方法未寫完 等完善

#include "stdafx.h"


//定義讀取記憶體的方法
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;
}