[英]pydbg 64 bit enumerate_processes() returning empty list
我使用的是從此處下載的pydbg二進制文件: http ://www.lfd.uci.edu/~gohlke/pythonlibs/#pydbg,如先前答案中所建議。
我可以將32位版本與32位Python解釋器一起使用,但不能使64位版本與64位Python一起使用。 enumerate_processes()
始終返回一個空列表。我在做錯什么嗎?
測試代碼:
import pydbg
if __name__ == "__main__":
print(pydbg.pydbg().enumerate_processes())
32位工作:
>C:\Python27-32\python-32bit.exe
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32
...
>C:\Python27-32\python-32bit.exe pydbg_test.py
[(0L, '[System Process]'), (4L, 'System'), <redacted for brevity>]
64位給出一個空列表:
>python
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)] on win32
...
>python pydbg_test.py
[]
Pydbg定義PROCESSENTRY32結構錯誤。
最好使用諸如psutil之類的維護包或直接使用ctypes,例如:
from ctypes import windll, Structure, c_char, sizeof
from ctypes.wintypes import BOOL, HANDLE, DWORD, LONG, ULONG, POINTER
class PROCESSENTRY32(Structure):
_fields_ = [
('dwSize', DWORD),
('cntUsage', DWORD),
('th32ProcessID', DWORD),
('th32DefaultHeapID', POINTER(ULONG)),
('th32ModuleID', DWORD),
('cntThreads', DWORD),
('th32ParentProcessID', DWORD),
('pcPriClassBase', LONG),
('dwFlags', DWORD),
('szExeFile', c_char * 260),
]
windll.kernel32.CreateToolhelp32Snapshot.argtypes = [DWORD, DWORD]
windll.kernel32.CreateToolhelp32Snapshot.restype = HANDLE
windll.kernel32.Process32First.argtypes = [HANDLE, POINTER(PROCESSENTRY32)]
windll.kernel32.Process32First.restype = BOOL
windll.kernel32.Process32Next.argtypes = [HANDLE, POINTER(PROCESSENTRY32)]
windll.kernel32.Process32Next.restype = BOOL
windll.kernel32.CloseHandle.argtypes = [HANDLE]
windll.kernel32.CloseHandle.restype = BOOL
pe = PROCESSENTRY32()
pe.dwSize = sizeof(PROCESSENTRY32)
snapshot = windll.kernel32.CreateToolhelp32Snapshot(2, 0)
found_proc = windll.kernel32.Process32First(snapshot, pe)
while found_proc:
print(pe.th32ProcessID, pe.szExeFile)
found_proc = windll.kernel32.Process32Next(snapshot, pe)
windll.kernel32.CloseHandle(snapshot)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.