如果我们想读取目标进程中的内存 就需要将进程提权 否则访问失败。
下面是提权代码
#include <TlHelp32.h>
/***************************************************/
/* 函数: 进程提权
/* 参数:HANDLE 目标进程句柄
/* 返回: 是否成功
/* 创建人: 日期 内容
/* 金胖胖 2015年2月27日 新建
/***************************************************/
bool ImprovePermission(HANDLE hProcessHandle)
{
HANDLE hToken = NULL; //令牌指针
LUID luid = {0}; //系统权限的特权值 结构体
TOKEN_PRIVILEGES tp = {0};
if(!::OpenProcessToken(hProcessHandle,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
{
return false;
}
if(!::LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&luid))
{
::CloseHandle(hToken);
return false;
}
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
::AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
::CloseHandle(hToken);
return true;
}
原文:http://www.cnblogs.com/-jpp/p/4302699.html