wireshark源碼分析 一


因為手頭的項目需要識別應用層協議,於是想到了wireshark,打算在項目中集成wireshark協議分析代碼。在官網上下了最新版的wireshark源代碼,我的天啊,200多M,這么多代碼文件怎么看?在網上了找了很久,希望能找到別人的分析報告,可惜的是,找了很久也沒有找到,比較多的還是怎么開發wireshark協議識別和分析插件,很少有人分析它的源代碼。於是,我找了個查看源代碼比較方便的工具——source insight,打算先瞧一瞧這些代碼文件,說不定運氣好,看着看着就知道它是怎么工作的。

    看過wireshark源代碼的人應該知道,它的代碼文件很多很多,而我也是第一次閱讀別人這么多的代碼,所以要把wireshark的協議分析代碼集成到我的項目中,對我來說還真不是一件容易的事。花了很多時間,搜了很多資料,也看了很多資料,最后決定從wireshark的命令行模式——tshark入手,分析tshark是如何識別網絡協議的。

    我決定利用斷點調試查看tshark是如何工作的,但是要調試,就需要編譯連接wireshark源代碼。於是又開始找資料摸索怎么編譯我wireshark代碼。這部分的資料倒是比較好找,但是當時找的資料都不能順利編譯,最后在別人的基礎上,加上自己的思考,終於編譯成功。於是就有了上一篇文章描述如何在visual studio2008上編譯wireshark源代碼。

    啰嗦了這么多,真正開始分析tshark代碼了。

    首先,成功編譯后的wireshark源代碼文件夾中出現了很多目標文件,還生成了一個wireshark-gtk2文件夾,里面有好幾個exe文件,比如wireshark.exe,tshark.exe,dumpcap.exe等。具體如下所示:

wireshark源代碼分析報告之一

   這個圖片就是wireshark-gtk2文件夾中的一部分。

   接下來,可以用visual studio2008(工具不限制,但最后是跟你編譯時選定的工具保持一致)打開wireshark-gtk2所在目錄下的工程文件,這樣的工程文件有好幾個,隨便打開一個,其他的幾個就會自動添加進來,因為所有的工程文件都在一個解決方案中,如下圖所示:

wireshark源代碼分析報告之一

    因為只分析tshark部分的代碼,所以可以把它之外的工程全部刪除,然后在tshark工程源文件中有一個tshark.c的文件,在里面找到main()函數,這就是程序的入口,這時就可以下斷點跟蹤調試了。

    今天先寫到此,明天再附上詳細的分析報告。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM