挂在C和窗户

时间:2012-02-08 17:33:19

标签: c windows hook

我正在寻找一个快速指导基本的dll在带有C的窗口挂钩,但我找到的所有指南都不是C,或者不是窗口。

(DLL不是Windows的一部分,而是第三方程序)

我理解这个原则,但我不知道如何去做。

我在C ++中预先存在源代码,它显示了我需要挂钩的内容,但我没有任何C库,或者知道如何从头开始挂钩。

2 个答案:

答案 0 :(得分:0)

绕行许可条款非常严格。

如果您只想挂钩DLL的某些功能,那么对要挂接其DLL的应用程序使用DL​​L放置攻击通常会更便宜。为此,请提供具有相同导出集的DLL,并转发您不关心的那些并截取其余部分。无论是C还是C ++并不重要。即使有大量的出口,这在技术上也是可行的,但是对于导出的数据有其局限性,如果您不知道或无法辨别所使用的调用约定。

如果必须使用挂钩,有很多方法,包括编写启动器并重写预先填充的(通过加载程序)IAT指向您的代码,同时启动的应用程序的主线程仍然被挂起(参见相应的CreateProcess标志)。否则你可能需要至少一点装配知识才能使跳跃正确。有很多自由许可的反汇编引擎可以让你计算适当的补丁偏移量(例如,因为你不想修补多字节操作码的中间位置)。

您可能希望再次编辑您的问题,以包含您在评论中写的内容(关键字:“DLL挂钩”)。

答案 1 :(得分:0)

通过LoadLibrary()

加载DLL

这是众所周知的不良做法。

你可能想要查找臭名昭着的恶意软件开发者“巫婆”或“hctiw”。他有如此臭名昭着的原因 - 他用LoadLibrary()加载了DLL。尽量避免这样的坏习惯。