VC/MFC 访问进程内存,代码片段
来源:互联网 发布:js 手写板 编辑:程序博客网 时间:2024/05/18 05:51
#include "StdAfx.h"#include <TlHelp32.h>#include "ProcessMemory.h"//打开进程内存BOOL CProcessMemory::Open(INT nPID){HANDLE hToken;INT nFlag;nFlag = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);if(!nFlag){OutputDebugString(_T("OpenProcessToken Fail!\n"));return 0;}SetPrivilege(hToken, SE_DEBUG_NAME, TRUE);::CloseHandle(hToken);m_hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, nPID);if (m_hProc == INVALID_HANDLE_VALUE)return FALSE;return TRUE;}BOOL CProcessMemory::Open(LPCTSTR pzProcessName){INT nPID;nPID = GetProcessID(pzProcessName);return Open(nPID);}//设置进程权限int CProcessMemory::SetPrivilege(HANDLE hToken, LPCTSTR lpszStr, BOOL bEnable){TOKEN_PRIVILEGES tp;LUID luid;BOOL bRet;bRet = LookupPrivilegeValue(NULL, lpszStr, &luid);if(bRet == FALSE){OutputDebugString(_T("Lookup Privilege Value Fail!\n"));return FALSE;}tp.PrivilegeCount = 1;tp.Privileges[0].Luid = luid;if(bEnable)tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;elsetp.Privileges[0].Attributes = 0;bRet = AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, NULL);return bRet;}//写入DWORD CProcessMemory::Write(LPVOID lpBaseAddress, LPVOID lpBuffer, DWORD nSize){BOOL bRet;DWORD dwReaded = 0;//句柄无效if(m_hProc == NULL)return FALSE;bRet = ::WriteProcessMemory(m_hProc, lpBaseAddress, lpBuffer, nSize, &dwReaded);if (bRet == FALSE)dwReaded = 0;return dwReaded;}//读取DWORD CProcessMemory::Read(LPCVOID lpBaseAddress, LPVOID lpBuffer, DWORD nSize){BOOL bRet;DWORD dwReaded = 0;//句柄无效if(m_hProc == NULL)return FALSE;bRet = ::ReadProcessMemory(m_hProc, lpBaseAddress, lpBuffer, nSize, &dwReaded);if (bRet == FALSE)dwReaded = 0;return dwReaded;}//关闭void CProcessMemory::Close(){if (m_hProc){::CloseHandle(m_hProc);}}//根据进程名,返回第一个进程实例的PIDINT CProcessMemory::GetProcessID(LPCTSTR pzProcessName){BOOL bRet;CString szExeName(pzProcessName);HANDLE hProcess;PROCESSENTRY32 procEntry;procEntry.dwSize = sizeof(PROCESSENTRY32); //进行进程快照hProcess=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//开始进程查找bRet=Process32First(hProcess,&procEntry);//循环比较,得出ProcessIDwhile(bRet){if(0 == szExeName.Compare(procEntry.szExeFile))return procEntry.th32ProcessID;bRet=Process32Next(hProcess,&procEntry);}return 0;}
VC/MFC 访问进程内存,代码片段
0 0
- VC/MFC 访问进程内存,代码片段
- VC/MFC MFC中保存ini配置文件,代码片段
- VC/MFC 文件选择和文件夹选择,代码片段
- VC++MFC 枚举系统进程核心代码
- VC++常用代码片段
- vc++中常用代码片段
- VC++2010下使用MFC+托管代码访问Revit
- 内存泄漏常见代码片段
- MFC代码片段备忘(不断更新)
- VC中调用JavaScript的代码片段
- VC HTML IHtmlDocument相关代码片段
- VC中调用JavaScript的代码片段
- 进程内存访问
- java访问DB的代码片段
- 访问网络数据+json解析代码片段
- [代码片段]提升Win32进程权限
- Java,Android内存泄漏代码片段
- MFC/VC: 关于内存问题。
- sysbench的安装和性能测试
- goldengate安装(windows xp)
- 解决Cygwin "error while loading shared libraries"的问题
- GridView分页详解
- H.265 SAO技术
- VC/MFC 访问进程内存,代码片段
- 一道360面试题引发的思考
- php源代码解析:一次请求生命周期
- 第十七周项目2-1-连接字符串(数组名做形参)
- BZOJ 1303 [CQOI2009] 中位数图 题解与分析
- ios objective-c将base64位编码字符串转换成图片
- 葡萄皮2
- GridView前台分析
- cannot open shared object file: No such file or directory