閑來無事,想做個wireshark的協議解析外掛程式,可以解決一下自己工作中的自訂協議解析問題。
好了,廢話少說,開始幹活。
首先在網上查下資料。想在windows下開發外掛程式環境需求如下:
1 需要windows下的C/C++編譯環境。 嗯,我裝了VS2008,可以用。
2 安裝cygwin。
去http://www.cygwin.cn/下載一個吧。下載下來的只是一個setup.exe。
運行之後介面
我先選的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 =.=!
Wireshark Bug Database – Bug 4359 https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4359
是因為這個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,哈哈,成功了。