首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

ReadProcessMemory函数运作正确,却得不到内存数据

2012-08-17 
ReadProcessMemory函数运行正确,却得不到内存数据//获取窗口句柄HWND gameh::FindWindow(NULL,gameCaptio

ReadProcessMemory函数运行正确,却得不到内存数据
//获取窗口句柄
HWND gameh=::FindWindow(NULL,gameCaption);
   
//获取窗口进程ID
DWORD processid;
::GetWindowThreadProcessId(gameh,&processid);

//打开指定进程
HANDLE processH=::OpenProcess(PROCESS_ALL_ACCESS,true,processid);

   
//读指定进程 内存数据
  DWORD byread;
LPCVOID pbase=(LPCVOID)0x00B797B8;
LPVOID nbuffer=(LPVOID)&m_num;;
if(!::ReadProcessMemory(processH,pbase,nbuffer,4,&byread))
{
  this->errormsg=GetLastError();
UpdateData(false);

}
else
{
  UpdateData(false); //更新变量的值到 编辑框
}


调试时m_num没有接受到数据,为0,不知为何?


[解决办法]
这是我写的内存读取:

先在OnInitDialog()里放一个计时器:
::SetTimer(m_hWnd,1,1000,NULL);


然后提权:

C/C++ code
void EnableDebugPriv() {          HANDLE hToken;          LUID sedebugnameValue;          TOKEN_PRIVILEGES tkp;     OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);     LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue);     tkp.PrivilegeCount = 1;          tkp.Privileges[0].Luid = sedebugnameValue;          tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;     AdjustTokenPrivileges(hToken, false, &tkp, sizeof tkp, NULL, NULL);     CloseHandle(hToken);  } 

热点排行