我正在尝试读取进程句柄游戏,但如果我尝试读取进程句柄,它总是返回0,有人能给我解释一下吗
import ctypes, psutil
import sys
#DLLs needed
kernel32 = ctypes.windll.kernel32
#Process Permissions
PROCESS_QUERY_INFORMATION = (0x0400)
PROCESS_VM_OPERATION = (0x0008)
PROCESS_VM_READ = (0x0010)
PROCESS_VM_WRITE = (0x0020)
#Windows API's
OpenProcess = kernel32.OpenProcess
CloseHandle = kernel32.CloseHandle
GetLastError = kernel32.GetLastError
ReadProcessMemory = kernel32.ReadProcessMemory
WriteProcessMemory = kernel32.WriteProcessMemory
class ReadWriteMemory:
def OpenProcess(self, myProcess):
dwDesiredAccess = (PROCESS_QUERY_INFORMATION |
PROCESS_VM_OPERATION |
PROCESS_VM_READ | PROCESS_VM_WRITE);
bInheritHandle = False
for Process in psutil.process_iter():
dfr = str(Process.name)
i = dfr.find("name=")
z = dfr.find(".exe',")
if z == -1:
z = i+8
if dfr[i+6:z+4] == myProcess:
dwProcessId = Process.pid
hProcess = OpenProcess(
dwDesiredAccess,
bInheritHandle,
dwProcessId
);
return hProcess
elif Process.name == None:
hProcess = None
def CloseHandle(self, hProcess):
CloseHandle(hObject);
def GetLastError(self):
GetLastError();
return GetLastError()
def PointerOffset(self, lpBaseAddress):
pass
rwm = ReadWriteMemory()
handleProcess = rwm.OpenProcess('Empire Earth.exe')
print("handleProcess", handleProcess)
结果:
handleProcess 0
从^{} docs
这意味着在流程创建过程中出现了一些问题,您需要
GetLastError
提供更多细节相关问题 更多 >
编程相关推荐