GetProcAddress(GetModuleHandle("user32.dll"), "DefWindowProcW") returns ntdll 中的地址
GetProcAddress(GetModuleHandle("user32.dll"), "DefWindowProcW") returns address in ntdll
我正在使用 Windows 7 Professional x64。
我需要挂接 DefWindowProcW 程序。但是当我试图通过 GetProcAddress()
获取它的地址时,它是 NtdllDefWindowProcW()
的 returns 地址,它位于 ntdll.dll。在 NtdllDefWindowProcW()
.
的开头有跳转到真正的 user32
函数 DefWindowProcW()
有没有办法获取真正的程序地址而不是 ntdll 程序?
这就是所谓的转发导出。该功能在Windows的早期版本中在user32中实现。但在某个时候,微软决定将其移至 ntdll。为了避免破坏应用程序,user32 导出转发到 ntdll.
中名为 "NtdllDefWindowProc_W"
的函数
ntdll中的转发地址是函数真正实现的地方。它可能随后调用 user32 是一个实现细节。所以,如果你想挂钩 DefWindowProcW
,你可以很好地挂钩你调用
返回的地址
GetProcAddress(GetModuleHandle("user32.dll"), "DefWindowProcW")
我正在使用 Windows 7 Professional x64。
我需要挂接 DefWindowProcW 程序。但是当我试图通过 GetProcAddress()
获取它的地址时,它是 NtdllDefWindowProcW()
的 returns 地址,它位于 ntdll.dll。在 NtdllDefWindowProcW()
.
user32
函数 DefWindowProcW()
有没有办法获取真正的程序地址而不是 ntdll 程序?
这就是所谓的转发导出。该功能在Windows的早期版本中在user32中实现。但在某个时候,微软决定将其移至 ntdll。为了避免破坏应用程序,user32 导出转发到 ntdll.
中名为"NtdllDefWindowProc_W"
的函数
ntdll中的转发地址是函数真正实现的地方。它可能随后调用 user32 是一个实现细节。所以,如果你想挂钩 DefWindowProcW
,你可以很好地挂钩你调用
GetProcAddress(GetModuleHandle("user32.dll"), "DefWindowProcW")