OpenProcess权限不够,怎样让一外部的程序如CE获得更高的权限?

chrishzb 2007-08-01 05:08:02

背景:

用CE (CheatEngine,一内存扫描器) 打开某进程时报错,打不开。
估计是进程做了些保护措施。

现在想提高一外部程序CE 的权限 , 降低该目标进程的权限,各位有什么好方法?

我的思路有二:

A、写一段程序提高自身权限再执行 CE (shellExecute? ) ,不知道能不能提高这个外部程序的权限?

B、听说修改目标进程的内存的5个字节就使得保护失效,不知道具体如何。


望各位提供点思路给我啊 , 谢谢谢谢!~
...全文
890 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chrishzb 2007-08-03
  • 打赏
  • 举报
回复
问问 zzz3265

你这里的第一个函数,送进去的应该就是游戏的PID 吧?

然后再执行的时候,得到句柄的那一步 ::OpenProcess() 不会出问题吗?
扫描器(例如金山游侠)打开不了 游戏进程 也就是 OpenProcess 这一步失败的啊
df8327 2007-08-03
  • 打赏
  • 举报
回复
你的思路二没听说过
不知道怎么回事 :》
df8327 2007-08-03
  • 打赏
  • 举报
回复
TOKEN_PRIVILEGES tkp;
HANDLE hToken=NULL;

if ( OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken) )
{
LookupPrivilegeValue( NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid );//修改进程权限
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges( hToken,FALSE,&tkp,sizeof tkp,NULL,NULL );//通知系统修改进程权限
}
CloseHandle(hToken);

这是提升权限的代码
基于你的思路A
在 目的进程中开启远程线程 “using createremotethread()”
执行上述代码即可
xdljf 2007-08-02
  • 打赏
  • 举报
回复
SetKMode进入内核态看看
Yofoo 2007-08-02
  • 打赏
  • 举报
回复
我在玩游戏的时候 金山游侠,变速齿轮 操作不了游戏 这也是权限不够
自己写个Dll setwindowshook让他载入dll 在dll中执行一个函数(PID=0)
BOOL EnableProcPrivilege(DWORD PID)
{
HANDLE hProc, hToken;
BOOL bRetVal;
bRetVal = EnablePrivilege(SE_DEBUG_NAME);
if(bRetVal == FALSE)
return FALSE;
if(PID == 0)
return TRUE;
hProc = ::OpenProcess(PROCESS_ALL_ACCESS, TRUE, PID);
if(hProc == NULL)
return FALSE;
bRetVal = OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
if(bRetVal == FALSE)
{
CloseHandle(hProc);
return FALSE;
}
bRetVal = EnablePrivilege(SE_DEBUG_NAME, TRUE, hToken);
CloseHandle(hToken);
CloseHandle(hProc);
if(bRetVal == FALSE)
return FALSE;
return TRUE;
}

BOOL EnablePrivilege(TCHAR * name, BOOL fEnable = TRUE, HANDLE hToken = NULL)
{
BOOL bRetVal;
int nError;
HANDLE hNewToken = NULL;
TOKEN_PRIVILEGES priv = { 1, {0, 0, fEnable ? SE_PRIVILEGE_ENABLED : 0} };
LookupPrivilegeValue(0, name, &priv.Privileges[0].Luid);
if(hToken == NULL)
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hNewToken);
else
hNewToken = hToken;
bRetVal = AdjustTokenPrivileges(hNewToken, FALSE, &priv, sizeof(priv), 0, 0);
if(bRetVal == FALSE)
{
nError = ::GetLastError();
if(hToken == NULL) CloseHandle(hNewToken);
::SetLastError(nError);
return FALSE;
}
if(hToken == NULL) CloseHandle(hNewToken);
return TRUE;
}
你可以参考

15,474

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧