请知悉:本文最近一次更新为 11年 前,文中内容可能已经过时。

本文内容来自:https://www.bingtech.net/WordPress/2011/04/233/
但是莫名其妙的是网站打不开了,所以根据缓存,在博客备份一下,并提供稳重涉及到的win7的dll文件。
下面为部分转载原文:

默认情况下Windows的DNS交互使用UDP协议承载,于是抱着试试的心理尝试了一下用TCP来发送DNS请求,结果Google DNS很给力的返回了结果。
接下来的工作就是怎样让Windows用TCP来发送了。悲催的是翻了一遍组策略,网络连接属性等等都没找到哪个选项可以让Windows发送TCP的DNSQuery,也不知道是真没有还是没找到。没办法只好自己动手丰衣足食啦,分析后发现判断用UDP或TCP的关键位置在DnsApi.dll中,修改之,覆盖,重启,用Wireshark看到发送的都是TCP的DNS请求,目前除了nslookup工具,其他使用一切正常,用nslookup发出的请求不受影响,默认还是UDP的,反正不影响上网,无视了。

修改前请看清版本号。XP替换系统文件会麻烦一些,不会替换的请Google,Google了还不会的就别改了。

版本号一定得匹配再替换!!!

Win7版DnsApi.dll
Size: 270,336 bytes
MD5Sum :c2e583928d087a631cff925e27a5edb4
系统版本:Win7 Ultimate X86 Version 6.1.7601
DLL文件版本:6.1.7601.17570
Download : dnsapi_Win7.dll (1423)

修改方案简述(讲真我看不太懂):

.text:6DC08FC8 8B 46 10 mov eax, [esi+10h]
.text:6DC08FCB 89 45 F4 mov [ebp+var_C], eax

关键代码,此处让var_C值为2即可,这里给出我的修改方法

85A0: 90 90 90 90 90 -> 33 C0 40 EB 25
85C8: 8B 46 10 -> EB D6 40

上面是Win7下的DNSAPI.DLL修改方法,请不要用到Windows XP下

有大神补充:在本地开一个dns代理,然后用tcp2udp
(项目地址: https://github.com/lp0/dns-tcp2udp,下载地址:
https://nodeload.github.com/lp0/dns-tcp2udp/zipball/master,仅限linux desktop os 使用),专为本机服务,这样可以不必费力给系统打补丁。

参考链接:https://briteming.blogspot.com/2012/02/windowstcpdns.html


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《让Win7通过TCP协议发送DNS请求-拒绝DNS污染办法》相关的博文:


3
留言

avatar
😀
😀😁😂😅😭🤭😋😘🤔😰😱🤪💪👍👎🤝🌹👌
内核头人生观热点
内核头人生观热点
【🚶访客】

授权以鱼不如授人以渔,怎么改的?