C 需要一个内核模式API,该API将查找用户模式Win32 Dll的基址

C 需要一个内核模式API,该API将查找用户模式Win32 Dll的基址,c,windows-xp,driver,device,C,Windows Xp,Driver,Device,我是新的设备驱动程序编程。我遵循了网络上的可用教程,这些教程为入门提供了有用的信息。然而,现在我已经开始了一个新的项目,其唯一目标是搜索被恶意软件或键盘记录程序钩住的功能。因此,我认为我已经整理好了完成这项工作所需的内容,尽管我仍然需要能够找到已加载到内存中的系统dll(即kernel32.dll、user32.dll等)的加载地址。我需要加载地址,这样我就可以解析他们的PE,从而进入导出和导入部分。此外,将加载地址添加到文件大小将为我提供一个地址范围,以交叉引用导出函数的地址否?交叉引用进口地

我是新的设备驱动程序编程。我遵循了网络上的可用教程,这些教程为入门提供了有用的信息。然而,现在我已经开始了一个新的项目,其唯一目标是搜索被恶意软件或键盘记录程序钩住的功能。因此,我认为我已经整理好了完成这项工作所需的内容,尽管我仍然需要能够找到已加载到内存中的系统dll(即kernel32.dll、user32.dll等)的加载地址。我需要加载地址,这样我就可以解析他们的PE,从而进入导出和导入部分。此外,将加载地址添加到文件大小将为我提供一个地址范围,以交叉引用导出函数的地址否?交叉引用进口地址会稍微复杂一些,但可以根据我的估计完成。我认为构建内核模式驱动程序将是正确的方法,因为访问内核驱动程序地址范围之外的内存对驱动程序来说不是问题,而不是用户模式应用程序。否则,我将如何访问位于目标dll的EAT和IAT中的地址?我知道存在一个用户模式API,它可以提供主要为GetModuleHandle的加载地址,但我希望在内核模式中找到等效的加载地址。我可以编写一个用户模式的应用程序,将这些信息传递给驱动程序,但如果可能的话,我更喜欢在内核模式下完成。欢迎提出任何建议或意见

提前谢谢

胜利者

p、 这篇文章经过编辑以更清晰。希望它能让我更清楚地了解我要完成的任务。

看看这群人的情况

编辑: 可能也会有帮助。

看一看和其他帮派成员

编辑:
可能也会有帮助。

在内核模式下这样做可能不是一个好主意。你打算什么时候真正做到这一点,并保证流程处于一种你可以通过IAT的状态


如果进程在加载DLL中间,该怎么办?如果您在线程中执行(即从系统调用或设备IOCTL执行),那么如果其他线程也在执行呢?在你不是操作系统的时候这样做是一个非常困难的建议,而且很容易破坏你客户机器的稳定性(见鬼,即使你是操作系统也很难做到)

在内核模式下这样做可能不是一个很好的主意。你打算什么时候真正做到这一点,并保证流程处于一种你可以通过IAT的状态


如果进程在加载DLL中间,该怎么办?如果您在线程中执行(即从系统调用或设备IOCTL执行),那么如果其他线程也在执行呢?在你不是操作系统的时候这样做是一个非常困难的建议,而且很容易破坏你客户的机器(见鬼,即使你是操作系统也很难做到)

我只是想感谢大家的贡献。我做了一些进一步的研究,发现有一个叫做PsLoadImageNotifyCallback的内核模式API,可以找到任何进程的基本地址

我只是想感谢大家的贡献。我做了一些进一步的研究,发现有一个叫做PsLoadImageNotifyCallback的内核模式API,可以找到任何进程的基本地址

@Ken。谢谢你的回复。我试图构建的驱动程序不会像上面提到的那样挂接内核或win32系统dll中的任何函数。目标是查看是否有任何函数被钩住,如果是,则通过将与内核模式驱动程序通信的用户模式应用程序通知机器用户。@Ken。谢谢你的回复。我试图构建的驱动程序不会像上面提到的那样挂接内核或win32系统dll中的任何函数。我们的目标是查看是否有任何函数被钩住,如果是,则通过将与内核模式驱动程序通信的用户模式应用程序通知机器的用户。感谢您的回复。我正在研究你的建议,尽管初步看一下上面的函数似乎并没有提供基本地址,但也许其中一个姐妹函数可以正常工作。谢谢你的回复。我正在研究你的建议,尽管初步看一下上面的函数似乎并没有提供基本地址,但也许其中一个姐妹函数可以正常工作。谢谢你的回复。我肯定开始考虑你建议的问题,但我开始怀疑是否有可能将用户模式文件映像(如kernel32.dll)复制到新创建/分配的内存中,然后可能会完成我试图完成的任务,否则我会同意你的想法和观点。这是很好的回答。谢谢你的回复。我肯定开始考虑你建议的问题,但我开始怀疑是否有可能将用户模式文件映像(如kernel32.dll)复制到新创建/分配的内存中,然后可能会完成我试图完成的任务,否则我会同意你的想法和观点。这是一个很好的例子。