系统环境:Windows7 sp1 x64
编译环境:VS2015 SP1
Snort版本:2.9.12
daq版本:2.0.6
Snort官网:https://www.snort.org/downloads#snort-downloads
背景
最近需要实现一个类似网络防火墙的产品,主要参考Snort源码,先花了点时间简单读了下网上比较流行的《snort源码分析》里面的资料,然后对着源码瞅了下,发现从snort2.9开始,snort应该是重构过了一轮,导致网上的资料都是偏老的,前人的一些源码分析都是基于2.9之前的版本的。我们的目标是先把源码在Windows平台上面编译通过,能调试!
注意事项
0、开始之前……
1、大家读源码的时候,如果发现网上的分析资料有些出入,应该就是重构导致的,最大的重构就是daq被当成一个静态lib剥离出来了,这块下层跟wibpcap/libpcap交互,上层跟snort交互的一个中间层的,之前这块的逻辑是跟snort本身糅合在一起的。
2、Snort的源码大量基于另外的第三方源码,需要安装cygwin(主要是头文件依赖和bison.exe等工具依赖)。cygwin固定安装到C:\cygwin,并且手动把bison、flex、sed这三个开源库安装上(为啥装这个三个开源库也是参考网上了说法,实际使用中,目前只看到使用了bison),另外就是安装cygwin的时候如果在下载阶段有问题,可以使用163的镜像http://mirrors.163.com/.help/cygwin.html。
3、网上流传最多的就是独孤九贱的源码分析,但是一般只有7章,我这里有个完整的版本(https://download.csdn.net/download/magictong/10859695),可以参考下,不过这个源码分析是基于2.2版本的。
编译采坑之旅
注意:
a、50%是解决与VS2015的兼容性问题
b、有些比较明显的问题,就不提了,譬如netinet/in