这个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