系统环境: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.h这种明显是linux下面的头文件但是没有包含在#ifndef WIN32里面,譬如编译选项冲突,譬如文件缺失找不到等等

本文介绍了在Windows7 SP1 x64上使用Visual Studio 2015 SP1编译Snort 2.9.12及其依赖DAQ 2.0.6的过程。编译过程中遇到的挑战包括解决VS2015的兼容性问题、头文件冲突、预处理宏冲突等。通过修改公共头文件、宏定义和添加特定库解决了这些问题。
&spm=1001.2101.3001.5002&articleId=85079918&d=1&t=3&u=f8a89bfd15194044ba2977716be8b09c)
232

被折叠的 条评论
为什么被折叠?



