为了账号安全,请及时绑定邮箱和手机立即绑定

求助,请问OpenProcess()这个API怎么能成功调用啊?

求助,请问OpenProcess()这个API怎么能成功调用啊?

MMMHUHU 2021-08-04 10:07:11

我是遍历了进程列表,对每个进程OpenProcess();可是总是失败;进程PID为0 的进程OpenProcess()87(参数错误);其他的进程的OpenProcess()错误代码是5(拒绝访问);还有一个错误代码是6(句柄无效)。网上有说参数错误的,我仔细看了一下也没错啊;还有说进程特权级不够的,我也提高了特权级,可还是同样的错误。真是弄不懂了,有高手能帮帮我吗?感激不尽~~~

查看完整描述

2 回答

?
翻阅古今

TA贡献1710条经验 获得超2个赞

听说pid为0的进程是不允许被打开的
其他的说你提权了,确定提权成功么?有时候操作系统的用户就没有这个权限的话是没有办法提权的

查看完整回答
反对 回复 2021-08-09
?
一只斗牛犬

TA贡献1698条经验 获得超5个赞

个 OpenProcess 函数打开一个已存在的进程对象。
HANDLE OpenProcess(
DWORD dwDesiredAccess, // access flag
BOOL bInheritHandle, // handle inheritance option
DWORD dwProcessId // process identifier
);
返回值:如成功,返回值为指定进程的打开句柄。
如失败,返回值为空,可调用GetLastError获得错误代码。
-------------------------------------------------------------
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid) 打开进程
If hProcess Then
ReadProcessMemory hProcess, ByVal &H12F82C, base, 4, 0& 读写进程内存
CloseHandle hProcess 结束进程
End If
----------------------
BOOL ReadProcessMemory( HANDLE hProcess, PVOID pvAddressRemote, PVOID pvBufferLocal, DWORD dwSize, PDWORD pdwNumBytesRead);
参数
hProcess为远程进程的句柄
pvAddressRemote用于指明远程进程中的地址
pvBufferLocal是本地进程中的内存地址
dwSize是需要传送的字节数
pdwNumBytesRead和pdwNumBytesWritten用于指明实际传送的字节数.当函数返回时,可以查看这两个参数的值.
在vb中的使用
VB声明
Declare Function OpenProcess Lib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
说明
打开一个现有进程的句柄
返回值
Long,如执行成功,返回进程句柄;零表示失败。会设置GetLastError
参数表
参数 类型及说明
dwDesiredAccess Long,指定这个句柄要求的访问方法。指定API32.TXT文件中以PROCESS_???开头的一个或多个常数
bInheritHandle Long,如句柄能够由子进程继承,则为TRUE
dwProcessId Long,要打开那个进程的进程标识符
注解
这个函数经常用来打开一个要进行同步的进程
另外,站长团上有产品团购,便宜有保证



查看完整回答
反对 回复 2021-08-09

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信