是否可以使用LSP/SPI截获dns查询?
我写了自己的LSP,效果很好。但是,我无法捕获dns查询。例如,没有像WSPGetHostByName或WSPGetAddrInfo这样的函数 我的lsp也支持UDP协议,但它不工作。如果我从控制台(cmd.exe)运行nslookup,它似乎可以工作,但我无法捕获gethostbyname。有人知道怎么做吗?我不认为编写NSP(名称服务提供商)是一个解决方案。但我可能错了是否可以使用LSP/SPI截获dns查询?,dns,winsock,winsock-lsp,Dns,Winsock,Winsock Lsp,我写了自己的LSP,效果很好。但是,我无法捕获dns查询。例如,没有像WSPGetHostByName或WSPGetAddrInfo这样的函数 我的lsp也支持UDP协议,但它不工作。如果我从控制台(cmd.exe)运行nslookup,它似乎可以工作,但我无法捕获gethostbyname。有人知道怎么做吗?我不认为编写NSP(名称服务提供商)是一个解决方案。但我可能错了 谢谢我们开发了一种可以“拦截”DNS查询的LSP。要做到这一点,唯一的方法是连接到所有DNS功能,请记住,您需要解决一些挑
谢谢我们开发了一种可以“拦截”DNS查询的LSP。要做到这一点,唯一的方法是连接到所有DNS功能,请记住,您需要解决一些挑战:
拦截UDP将不起作用,因为查询是从MS DNS客户端发出的,因此除非您编写低级别驱动程序,如:TDI、NDIS或WFP,否则您必须挂接函数(或编写NSP)。NSLookup对您有效,因为它本身创建DNS查询。我的解决方案如下:
Firefox修改需要汇编语言,除非你知道如何下载所有必要的文件来编译Firefox自己,否则你就可以访问C/C++编译器(可能是明文GCC),并且准备好C++有2个互斥标准,如果你的G++(GCC套件的一部分)与你的Firefox源不兼容,那么你的尝试就会失败
<>我不是C++专家,所以我用机器语言(至少我)更容易的路线,这样我就不需要成为C/C++专家来完成任务。 一些相关点:我知道有一些组件像基于Firefox的TWebBrowser,但他们的问题是很长一段时间没有人愿意更新它们,所以它们只与一些非常过时的Firefox版本兼容。Barak感谢您的快速响应。当你说“钩子”时,你是指dll注入还是LSP?我的LSP同时支持x86和x64。没问题。当我说hook时,我指的是类似Microsoft迂回库的东西,请记住,除非你购买了10万美元的许可证,否则你不能商业化使用它。在Komodia,我们编写了我们自己的库,这样我们就可以在没有任何许可证限制的情况下转售。Barak,使用你自己的库需要支付多少费用?你也有预编译的dll与不同的编程语言一起使用吗?顺便问一下,有人知道下面的链接吗?通知@PeterNote在Windows 8中不支持LSP,如TDI。如果我没记错的话,gethostbyname会触发DnsCache(DNS客户端)服务来进行DNS查询。尝试重新启动DnsCache服务,看看是否可以获得流量。嗨,Peter。您确定不支持LSP吗?我知道TDI将不被支持,但我不确定LSP。是的,正如参加一些MS会议的人所说。抱歉,无法找到任何链接来证明这一点。实际上,我们并不确定LSP,但我们测试了TDI过滤器,发现它仍然可以在当前的Win8测试版上安装和运行。但是据说如果软件使用TDI,那么它就不能获得某些Win8证书。我没有使用TDI,所以我相信我在这里是安全的:)问题是我在Delphi XE2中编码。我可以读C把它翻译回Delphi,但是说C可能需要很长时间。所以我不能用C写。我知道用Delphi写驱动程序几乎是不可能的。