【问题标题】:Windows Kernel: Retrieving function addresses inside modulesWindows 内核:检索模块内的函数地址
【发布时间】:2019-03-25 04:03:50
【问题描述】:

我正在尝试调用位于 win32kfull.sys 模块中的内核中的一个函数。 我使用 ZwQuerySystemInformation 获得了模块的基地址。 现在我想找出位于 win32kfull.sys 模块中的 NtUserSendInput 函数的偏移量。 当我在 IDA Pro 中打开 win32kfull.sys 并打开该函数时,我得到两个地址:

可惜我不知道怎么把偏移量加到win32kfull.sys的基地址上得到函数地址。

如果有人能向我解释我现在可以如何进行,我将不胜感激。

【问题讨论】:

  • 我不明白这个问题。屏幕截图中只显示了一个地址。
  • 两个地址是指“原始偏移”和“虚拟位置”。原则上我只想知道:如何获取 NtUserSendInput 的地址? (当我将 NtUserSendInput 添加到 win32kfull.sys 的模块基地址时,“原始偏移量”和“虚拟位置”都没有指向我。
  • 我猜你甚至不知道如何获得 pdb 符号的offset。所以你到底需要什么?
  • 我需要 NtUserSendInput 的地址,因为我想调用内核中的函数。如果我尝试以这种方式通过 IDA 查找地址,我是否走错路了?
  • @moccajoghurt - NtUserSendInput 是导出符号,所以取地址没问题

标签: windows winapi kernel reverse-engineering windows-kernel


【解决方案1】:

由于NtUserSendInput是导出函数,也就是说图片的PE格式(特别是导出目录)如果解析正确会让你知道函数的地址。

这是一个更好的解决方案,从 IDA Pro 中获取偏移量将为您提供特定于版本的地址,这意味着我必须每次都获取 win32kfull.sys 的每个版本的偏移量有新版本你必须更新你的驱动程序。

所以,如果你有win32kfull.sys的基地址,你可以把它当作PE结构的起始地址并解析它,网上有很多关于如何做到这一点的教程。

【讨论】:

    猜你喜欢
    • 2013-03-10
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 2012-05-28
    • 2013-07-10
    • 2014-12-06
    相关资源
    最近更新 更多