4.1 引言
过去,不仅只有Linux操作系统可供选择,而且Linux几乎是黑客们使用的惟一操作系统。曾经有一段时间,几乎所有的exploit脚本都是在Linux平台上编写的,并且只能在Linux系统下编译。不过,Microsoft的Win32系统在企业环境应用上已经更加普遍了,并且在exploit脚本的市场上获得了和Linux同样的地位。要在Win32系统上防止exploit的脚本,必须对WinSock 1应用程序编程接口(Application Program Interface,API)有深入的了解,对WinSock 2 API更是如此。
WinSock 1与WinSock 2 API用于建立网络连接。WinSock 2使用ws2_32.dll与Winsock或服务提供者接口(Service Provider Interface,SPI)进行通信,SPI就是实际的硬件设备所使用的接口。因为程序员完全只与Winsock 2 API打交道,所以不需要关注硬件。Winsock API的设计目标就是在无须知道底层设备的情况下,使程序员对于发送与接收数据的控制最大化。设备供应商必须遵循Windows SPI,使得无论新程序还是老程序都可以使用所有的硬件。
绝大多数采用了套接字编程的Windows程序都使用了Winsock或Winsock 2 API。Winsock 2是一次很大的升级,与Winsock或Winsock 1.1相比,它提供了更多的功能。本章主要针对Winsock 2 API。
本章的代码都是在Windows 2000和XP上使用Visual Studio 6.0进行编写和测试的。






