#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);
}
內存讀寫
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.