Python 3.4 64位kernel32.GetModuleHandleW返回32位地址

时间:2015-05-10 00:47:34

标签: ctypes python-3.4

这个python代码是Greyhat Python的调试器类的一部分;但是,我没有使用与作者相同的环境,即python 2.5。

由于某种原因,对GetModuleHandleW的调用返回值0x1AC60000。

msvcrt.dll的实际加载地址为0x7FFB1AC60000。我直接使用msvcrt = cdll.msvcrt和hmod = c_void_p(msvcrt._handle)检查了这个

任何人都可以解释为什么会发生这种情况以及如何解决问题吗?

printf_address = debugger.func_resolve("msvcrt.dll", "printf")

def func_resolve(self, dll, function):
    error = None
    handle = kernel32.GetModuleHandleW(dll)
    address = kernel32.GetProcAddress(handle, function.encode("ascii"))

    if(address == 0):
        error = kernel32.GetLastError()
        print("Error: {}: {}".format(error, FormatError(error)))
    kernel32.CloseHandle(handle)
    return address

0 个答案:

没有答案