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,因为我用作弊引擎把它变成了80。print read_buff
行返回
^{unichr(80)
返回P
和{create_string_buff
有问题。我应该使用字节缓冲区还是整数缓冲区?我应该怎么做?使用unichr()
对一些值有效,但是如果地址值是800
,unichr(800)
显然行不通。我正在寻找read_buff
来返回50
或{
它不返回Unicode,但四个字节作为一个字符串(可能是“\x80\x00\x00\x00”)传递一个指向整数而不是字符串缓冲区的指针:
相关问题 更多 >
编程相关推荐