IAT / EAT挂钩“gethostbyname”

时间:2010-11-11 16:59:28

标签: dll hook winsock

我编写此代码以通过更改IAT和EAT中的地址来挂钩API函数:http://pastebin.com/7d9N1J2c

当我想挂钩“recv”或“connect”时,这很好用。但是,由于某些未知的原因,当试图挂钩“gethostbyname”时,我的钩子函数永远不会被调用。

我试图通过获取wsock32.dll模块的基地址+ 0x375e在调试器中找到“gethostbyname”,这是我的wsock32.dll的序号52显示为偏移量。但这只会让我在一些随机的asm代码中结束,而不是在函数的开头。 但是,同样的方法可以很好地找到“recv”入口点。

有谁看到我可能做错了什么?

2 个答案:

答案 0 :(得分:2)

我推荐这个工具: http://www.moduleanalyzer.com/

它们完全相同,并显示与该API连接的网址。 问题是有多个API将URL转换为地址。您正在挂钩的应用程序可能正在使用您未拦截的另一个版本的API。

答案 1 :(得分:1)

运行一些像IDA这样的反汇编程序并在挂钩此函数后附加到您的进程,ida在附加和播放过程中应用更改并检查错误。

另外,你有许多库可以与微软Detours,NCodeHook等蹦床挂钩。