欢迎访问宙启技术站
智能推送

Python中通过win32processEnumProcessModules()函数获取进程模块列表

发布时间:2023-12-16 16:47:51

在Python中,我们可以使用win32process模块中的EnumProcessModules()函数来获取指定进程的模块列表。该函数可以获取目标进程加载的所有动态链接库(DLL)或共享库。下面是一个使用该函数的示例:

import win32api
import win32process
import win32con

# 获取目标进程的ID(PID)
target_process_name = "target_process.exe"  # 替换为你要获取模块列表的进程的名称
process_ids = win32process.EnumProcesses()
target_process_id = None

for pid in process_ids:
    try:
        process_handle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, pid)
        process_name = win32process.GetModuleFileNameEx(process_handle, 0)
        if process_name.lower().endswith(target_process_name.lower()):
            target_process_id = pid
            break
    except:
        pass

# 获取目标进程的模块列表
if target_process_id:
    try:
        process_handle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, target_process_id)
        module_handles = win32process.EnumProcessModules(process_handle)

        for module_handle in module_handles:
            try:
                module_file_name = win32process.GetModuleFileNameEx(process_handle, module_handle)
                print(module_file_name)
            except:
                pass
    except:
        pass
else:
    print("Target process not found.")

在上面的例子中,首先通过EnumProcesses()函数获取所有的进程ID(pid)列表,然后通过遍历每个进程来查找目标进程的ID。

接下来,使用OpenProcess()函数打开目标进程的句柄,并通过EnumProcessModules()函数获取目标进程的模块句柄(module handle)列表。

最后,使用GetModuleFileNameEx()函数根据进程句柄和模块句柄获取模块的文件名。

注意:在以上代码中,我使用了win32apiwin32process模块,这些模块需要通过pip install pywin32命令安装。

希望这个例子对你有帮助!