0

我需要直接与操作系统交谈,要求它在您的 Python 进程虚拟内存中分配页面。

如何访问地址为 0xB621740000 的虚拟内存并保留内存?

我使用 VirtualAlloc 吗?在此之前,我必须要 OpenProcess 吗?

下面是我的代码:

PVOID = LPVOID
SIZE_T = ctypes.c_size_t
PAGE_SIZE = 4 * 1024

kernel32 = ctypes.WinDLL('Kernel32', use_last_error=True)

address_str = input('Please enter an address where pages should be allocated: ')
address = int(address_str, 0)

handle = OpenProcess(PROCESS_VM_READ, True, 15460)

VirtualAlloc(address, PAGE_SIZE, MEM_RESERVE, PAGE_READWRITE)
4

1 回答 1

0

你听说过 win32api 库吗?应该可以使用该库来完成它,这将是使用 ctypes 的更简单的替代方案。您可以在所述库中使用 VirtualAllocEx 来解决此问题。由于您正在尝试执行此操作,因此我假设运行代码的 python 进程相同,因此您不需要 OpenProcess,而是 win32proces.GetCurrentProcess() 就足够了。

win32process.VirtualAllocEx(win32process.GetCurrentProcess(), 地址, PAGE_SIZE, win32con.MEM_RESERVE, win32con.PAGE_READWRITE)

将在分配的大小为 PAGE_SIZE 的内存空间中分配读写权限。

于 2022-03-03T09:30:08.023 回答