gpt4 book ai didi

Python ctypes.create_string_buffer 问题

转载 作者:行者123 更新时间:2023-11-28 22:06:14 27 4
gpt4 key购买 nike

kernel32.dll 的 ReadProcessMemory 函数似乎正在返回 Unicode。

kernel32 = ctypes.windll.kernel32
PROCESS_QUERY_INFORMATION = 0x0400
PROCESS_VM_READ = 0x0010

pid = int(raw_input("Enter PID: "))
hproc = kernel32.OpenProcess(PROCESS_QUERY_INFORMATION |PROCESS_VM_READ, False, pid)
lpbaseaddr = 16799644
read_buff = ctypes.create_string_buffer(4)
bytread = ctypes.c_ulong(0)
kernel32.ReadProcessMemory(hproc, lpbaseaddr, read_buff,
4, ctypes.byref(bytread))
print read_buff.raw #i also tried read_buff.value

我知道该地址的值为 80,因为我使用 Cheat Engine 将其设为 80。print read_buff 行返回P。如果我使用 Cheat Engine 将该地址的值设置为 81 并运行我的程序,它会返回值 Q。我一直在胡闹,unichr(80) 返回 Punichr(81) 返回 Qcreate_string_buff 显然有问题。我应该使用字节缓冲区还是整数缓冲区,我该怎么做?使用 unichr() 对一些值有效,但假设地址值为 800unichr(800) 显然不起作用。我正在寻找 read_buff 以返回 5060800

最佳答案

它不返回 Unicode,而是作为字符串的四个字节(可能是 '\x80\x00\x00\x00')传递一个指向整数而不是字符串缓冲区的指针:

read_buff = ctypes.c_uint()
kernel32.ReadProcessMemory(hproc, lpbaseaddr, ctypes.byref(read_buff),
ctypes.sizeof(read_buff), ctypes.byref(bytread))
print read_buff.value

关于Python ctypes.create_string_buffer 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4056609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com