改了一下cracktcpip.exe,使之同时对MS06-032/KB917953、MS08-001/KB941644、
MS08-037/KB953230有效,并同时对XP SP2、SP3有效。
与以前一样,同时去掉了对raw socket的各种限制及SYN_SENT数的限制。
http://www.opencjk.org/~scz/windows/cracktcpip.exe
如果不用cracktcpip.exe改,也可以照着下面的fc输出自己用16进制编辑器改,此时
注意sys的校验和需要手工确认,不建议生手这样干。
>cracktcpip.exe -v
cracktcpip.exe ver 2008-07-22 09:12
以英文tcpip.sys(5.1.2600.3394/xpsp_sp2_gdr.080620-1245)为例。
>cracktcpip.exe -i tcpip.sys.old tcpip.sys
infile : tcpip.sys.old
outfile : tcpip.sys
size : 0x00057F80
oldsum : 0x00064997
sum[0] : 0x00064EEC
sum[1] : 0x00064EEC
succeeded
>fc /b tcpip.sys.old tcpip.sys
00000130: 97 EC
00000131: 49 4E
00023FE6: 8A EB
00023FE7: 41 45
0004F7A2: 0A FE
0004F7A3: 00 FF
0004F7A4: 00 FF
以英文tcpip.sys(5.1.2600.5625/xpsp_sp3_gdr.080620-1249)为例。
>cracktcpip.exe -i tcpip.sys.old tcpip.sys
infile : tcpip.sys.old
outfile : tcpip.sys
size : 0x00058480
oldsum : 0x0005ED6B
sum[0] : 0x0005F2C0
sum[1] : 0x0005F2C0
succeeded
>fc /b tcpip.sys.old tcpip.sys
00000130: 6B C0
00000131: ED F2
00023FB2: 8A EB
00023FB3: 41 45
0004FB46: 0A FE
0004FB47: 00 FF
0004FB48: 00 FF
将临时目录里修改好的tcpip.sys严格地按如下顺序复制到相应目录:
%systemroot%\ServicePackFiles\i386\
%systemroot%\system32\dllcache\
%systemroot%\system32\drivers\
在资源管理器里确认%systemroot%\system32\drivers\tcpip.sys未因SFC而被自动恢
复成某个早期版本。重启OS使之生效。
剁了tcpip.sys之后用sendto()发送所有IP碎片均不会返回10004号错误。第一个IP碎
片肯定可以发送出去,但后续IP碎片会被XP PFW默默丢弃,用户态程序得不到任何提
示,伪造源IP的报文也会被PFW默默丢弃。关闭PFW后这些问题都得到解决。PFW的限
制与tcpip.sys本身的限制是两回事,是两层不同的限制。PFW的限制可以热取消,
tcpip.sys本身的限制是固化的,无法正常取消。总之,关闭PFW再测试raw socket。