求VC导出内存所有数据的源码!解决方法
求VC导出内存所有数据的源码!!
自己琢磨了很久,也在网上找了很多资料,一直没有找到可以导出内存数据的方法!
哪位大侠有相关源码不?或者相关资料也可以,谢谢!!不慎感激…
------解决方案--------------------
自己琢磨了很久,也在网上找了很多资料,一直没有找到可以导出内存数据的方法!
哪位大侠有相关源码不?或者相关资料也可以,谢谢!!不慎感激…
------解决方案--------------------
- C/C++ code
首先搜索坐标地址 找到改变这个地址的代码 修改代码让他跳到自己的代码中运行 在程序的空白段加入自己的代码,当然要补上被替换了的那句,还有修改了寄存器,必须先PUSH,再POP ------------------------------------------ CProcess m_process; bool m_ret=m_process.FindProcess("FortressII"); if (m_ret) { BYTE tank1xL = m_process.ReadByte(0x00470000); BYTE tank1xR = m_process.ReadByte(0x00470001); WORD tank1x = tank1xL+tank1xR*256; temp = tank1x; str.Format("%d",temp); m_tank1x=str; UpdateData(FALSE); return TRUE; } else return FALSE; ----------------------------------------- HANDLE CProcess::OpenProcess(char *p_ClassName, char *p_WindowTitle) { HWND hWindow; DWORD pid; hWindow = FindWindow(p_ClassName, p_WindowTitle); if (hWindow) { GetWindowThreadProcessId(hWindow, &pid); return ::OpenProcess(PROCESS_ALL_ACCESS, false, pid); } return NULL; } bool CProcess::FindProcess(char *p_WindowTitle) { if (m_hProcess == NULL) { m_hProcess = this->OpenProcess(NULL, p_WindowTitle); if (m_hProcess) m_bGameRunning = true; return m_bGameRunning; } else return false; } BYTE CProcess::ReadByte(DWORD p_Address) { DWORD bytes; BYTE tmpValue; if (m_bGameRunning) { if (ReadProcessMemory(m_hProcess, (void*)p_Address, (void *)&tmpValue, 1, &bytes) == 0) return 0; else return tmpValue; } return 0; }
------解决方案--------------------
ReadProcessMemory
------解决方案--------------------
MSDN98中的例子walker又名pwalk。完整列出指定进程的内存使用情况,显示进程地址空间内容,装载哪些DLL,代码、数据、堆栈段分配在何处,可以用来检测内存泄漏,监测内存使用。
http://download.csdn.net/detail/zhao4zhong1/3667896