windows下wireshark插件开发之源码编译

来源:互联网 发布:聊天表情制作软件 编辑:程序博客网 时间:2024/05/01 10:22

闲来无事,想做个wireshark的协议解析插件,可以解决一下自己工作中的自定义协议解析问题。

好了,废话少说,开始干活。

 

首先在网上查下资料。想在windows下开发插件环境需求如下:

1  需要windows下的C/C++编译环境。 嗯,我装了VS2008,可以用。

2 安装cygwin。

   去http://www.cygwin.cn/下载一个吧。下载下来的只是一个setup.exe。

   运行之后界面

   cygwin安装

   我先选的Download Without installing,先下载到本地,以备日后使用。^_^下载的时候,我是选择了全部组件,下完之后有 1.25G。。。 下了一晚上啊(=.=!)

   第二次运行setup.exe选在Install From local directory.安装时就不要全选了哈。

   安装时有些组件是wireshark必须的,但是默认是不安装的,注意更改安装选项。

3 需要安装python,cygwin自带也有,不过人家wireshark也说了, not recommend.

   我先装了个3.1的,编译时总是提示找不到,最后还是装了个2.6的python。

   配套的版本wireshark源码的根目录下 Makefile.nmake 中有写。还是要按照配套的版本来啊。

环境准备完成后修改下Makefile.nmake文件中的几个参数,注意修改前备份~

具体过程可以参考:http://blog.csdn.net/hcj2002/archive/2008/04/06/2255637.aspx

 

我的环境:

cygwin安装路径:D:/cygwin  版本:cygwin1.7.1

wireshark源码: D:/wireshark-1.3.2

VS2008安装路径:D:/Program Files/Microsoft Visual Studio 9.0

python2.6安装路径:D:/Python26

 

wirshark 编译时遇到如下问题。

 问题1:win-setup.sh 找不到。

d:/wireshark-1.3.2>nmake -f makefile.nmake verify_tools

Microsoft (R) 程序维护实用工具 9.00.21022.08 版
版权所有 (C) Microsoft Corporation。保留所有权利。

cygwin warning:
  MS-DOS style path detected: tools/win32-setup.sh
  Preferred POSIX equivalent is: tools/win32-setup.sh
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
tools/win32-setup.sh: line 12: exec: tools/win-setup.sh: not found
tools/win32-setup.sh: line 12: exec: tools/win-setup.sh: not found
NMAKE : fatal error U1077: “D:/cygwin/bin/bash.EXE”: 返回代码“0x7f”
Stop.

d:/wireshark-1.3.2>

 

这个问题折腾了好久,后来发现是wireshark的bug =.=!

是因为这个1.3.x版本在使用cygwin 1.5.x 到 1.7.x的版本,处理ms-dos风格的路径有问题,囧。

规避方法是:

Changing the WIN_SETUP= line in the main Makefile.nmake file to use a POSIX
style forward slash path delimiter instead of using a Win32 style backslash
delimiter resolves the nmake problem:

e.g.

> -WIN_SETUP=tools/$(WIRESHARK_TARGET_PLATFORM)-setup.sh
> +WIN_SETUP=tools/$(WIRESHARK_TARGET_PLATFORM)-setup.sh

不过我在Makefile.nmake文件中没有找到WIN_SETUP=

我直接修改了源代码tools/win32-setup.sh文件中的WIN_SETUP=`echo $0 | sed -e s/win32/win/`改成WIN_SETUP=tools/win-setup.sh

问题2:提示/Microsoft.VC90.CRT/*.*的几个文件找不到。

编译文件到最后提示xcopy C:/Program files/Microsoft Visual Studio 9.0/VC/redist/$(VCREDIST_DLL)/Microsoft.VC90.CRT/*.*  失败,找不到文件。

我的VS2008是装在D盘的。

在Makefile.nmake搜了一下,找到这么一行

MSVCR_DLL=$(PROGRAM_FILES)/Microsoft Visual Studio 9.0/VC/redist/$(VCREDIST_DLL)/Microsoft.VC90.CRT/*.*

PROGRAM_FILES在Makefile.nmake中的定义是PROGRAM_FILES=$(PROGRAMFILES)

在cmd命令行中执行SET PRO发现结果如下:

d:/wireshark-1.3.2>SET PRO
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 10, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=170a
ProgramData=C:/ProgramData
ProgramFiles=C:/Program Files
PROMPT=$P$G

d:/wireshark-1.3.2>

 呃~ 这个一定是哪里出错了。。。

不管了,将Makefile.nmake文件中的

MSVCR_DLL=$(PROGRAM_FILES)/Microsoft Visual Studio 9.0/VC/redist/$(VCREDIST_DLL)/Microsoft.VC90.CRT/*.*

修改为

MSVCR_DLL=D:/Program files/Microsoft Visual Studio 9.0/VC/redist/$(VCREDIST_DLL)/Microsoft.VC90.CRT/*.*

 

再执行 nmake -f makefile.nmake verify_tools,哈哈,成功了。

原创粉丝点击