【问题标题】:How to call the VirtualAllocEx WinAPI in python?如何在 python 中调用 VirtualAllocEx WinAPI?
【发布时间】:2020-04-17 15:13:45
【问题描述】:

您好,我一直在关注The poor Man's Process Migration 技术来了解进程迁移。但是每当我打开一个进程时,它都会返回一个 0 作为进程句柄。

>>> kernel32 = cdll.kernel32
>>> kernel32.OpenProcess()
0
>>> kernel32.OpenProcess('PROCESS_ALL_ACCESS', 0,13036)
0

【问题讨论】:

    标签: python windows ctypes kernel32


    【解决方案1】:

    第一个参数是数字,不是字符串。 PROCESS_ALL_ACCESS 因目标 Windows 系统而异。请参阅this MSDN link 了解常量及其值的讨论(引用如下):

    PROCESS_ALL_ACCESS 进程对象的所有可能访问权限。Windows Server 2003 和 Windows XP:在 Windows Server 2008 和 Windows Vista 上增加了 PROCESS_ALL_ACCESS 标志的大小。如果为 Windows Server 2008 和 Windows Vista 编译的应用程序在 Windows Server 2003 或 Windows XP 上运行,则 PROCESS_ALL_ACCESS 标志太大,指定此标志的函数失败并显示 ERROR_ACCESS_DENIED。要避免此问题,请指定操作所需的最小访问权限集。如果必须使用 PROCESS_ALL_ACCESS,请将 _WIN32_WINNT 设置为应用程序所针对的最低操作系统(例如,#define _WIN32_WINNT _WIN32_WINNT_WINXP)。有关详细信息,请参阅使用 Windows 标头。

    PROCESS_CREATE_PROCESS (0x0080) 创建进程所必需的。

    PROCESS_CREATE_THREAD (0x0002) 需要创建线程。

    PROCESS_DUP_HANDLE (0x0040) 需要使用 DuplicateHandle 复制句柄。

    PROCESS_QUERY_INFORMATION (0x0400) 需要检索有关进程的某些信息,例如其令牌、退出代码和优先级(请参阅 OpenProcessToken)。

    PROCESS_QUERY_LIMITED_INFORMATION (0x1000) 需要检索有关进程的某些信息(请参阅 GetExitCodeProcess、GetPriorityClass、IsProcessInJob、QueryFullProcessImageName)。自动授予具有 PROCESS_QUERY_INFORMATION 访问权限的句柄 PROCESS_QUERY_LIMITED_INFORMATION。Windows Server 2003 和 Windows XP:不支持此访问权限。

    PROCESS_SET_INFORMATION (0x0200) 需要设置有关进程的某些信息,例如其优先级类别(请参阅 SetPriorityClass)。

    PROCESS_SET_QUOTA (0x0100) 需要使用 SetProcessWorkingSetSize 设置内存限制。

    PROCESS_SUSPEND_RESUME (0x0800) 暂停或恢复进程所必需的。

    PROCESS_TERMINATE (0x0001) 需要使用 TerminateProcess 终止进程。

    PROCESS_VM_OPERATION (0x0008) 需要对进程的地址空间执行操作(请参阅 VirtualProtectEx 和 WriteProcessMemory)。

    PROCESS_VM_READ (0x0010) 需要在使用 ReadProcessMemory 的进程中读取内存。

    PROCESS_VM_WRITE (0x0020) 在使用 WriteProcessMemory 的进程中写入内存时需要。

    SYNCHRONIZE (0x00100000L) 需要使用等待函数等待进程终止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多