內存讀寫

#include <windows.h>
#include <stdio.h>
#include <tlhelp32.h>
#include <string.h>
#include <malloc.h>

HANDLE fnGetProcess()
{
	HANDLE hShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
	PROCESSENTRY32 myPro;
	myPro.dwSize=sizeof(myPro);
	
	Process32First(hShot, &myPro);
	do{
		if(strcmp(myPro.szExeFile, "測試.exe")==0){
			HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, FALSE, myPro.th32ProcessID);
			return hPro;
		}
	}while(Process32Next(hShot, &myPro));

	return NULL;
}



/*讀內存*/
void main(){
	HANDLE hPro=fnGetProcess();			/*內存基地址*/
	if(hPro==NULL)
	{
		puts("沒有找到句柄!!!")
		return;
	}
	int *ReAddRess=(int *)1244996;		/*偏移量*/
	int *p=(int *)malloc(sizeof(int));	/*存儲讀出的內容*/
	unsigned long size;					/*實際讀出長度*/
	ReadProcessMemory(hPro, ReAddRess, p, sizeof(int), &size);
	printf("%d", *p);
}




/*寫內存*/
void main(){
	HANDLE hPro=fnGetProcess();			/*內存基地址*/
	if(hPro==NULL)
	{
		puts("沒有找到句柄!!!")
		return;
	}
	int *WrAddRess=(int *)1244996;		/*偏移量*/
	int *p=(int *)malloc(sizeof(int));	/*要寫入內容的首地址*/
	WriteProcessMemory(hPro, WrAddRess, p, 4, NULL);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章