本文内容来自:http://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 使用),专为本机服务,这样可以不必费力给系统打补丁。
未经允许不得转载:阿藏博客 » 让Win7通过TCP协议发送DNS请求-拒绝DNS污染办法