how to build and debug wireshark2.4.2 source code
来源:互联网 发布:excel对比两列数据异同 编辑:程序博客网 时间:2024/04/29 20:26
前言
现在开始玩抓包了。
对于一些已知协议,是wireshark已经分析好的,可以拿来借鉴。
如果再自己分析,划不来。自己分析的也不如wireshark分析的那么清晰和全面。
另外,wireshark工程的架构也是值得学些的。
要学习wireshark工程,第一步就是编译调试wireshark的源码。
wireshark如何编译,官方有帮助文档。
https://www.wireshark.org/docs/wsdg_html_chunked/ChSetupWin32.html
可惜,照这个文档,没编译通过,太多依赖的软件了。
后来找了一篇资料,那个同学是用vs2013编译的wireshark2.0, 很有参考价值。基本知道编译的路子了,又折腾了6个小时,终于可以编译通过,并调试了。
实验
实验环境
vmware12.5.5 + vs2015 + qt5.9.3 + cygwin
实验环境的选择
现在的开发系统都是x64的windows, 开发机是win10.
wireshark2.4.2要求是用vs2015编译。
但是win10上装vs2015要好长时间,而且vs这东西在一台计算机上不能装多个版本(e.g. 混装了vs2015,vs2010), 已经遇到混装后,vs2010编译出来的控件,不能在发布环境运行的前车之鉴。
如果只在win10真机上装vs2015, 也遇到win10重大升级后,vs2015新建出来的vc工程不能编译的问题。
最后,选择在vmware虚拟机中装一个win7x64, 在win7x64给8GB内存上装vs2015。在这个基础上安装wireshark需要的编译环境。
依赖软件的安装
wireshark文档上,对于新手有如下警告:
Unless you know exactly what you are doing, you should strictly follow the recommendations below. They are known to work and if the build breaks, please re-read this guide carefully.
其实对于新手,文档写的都远远不够详细。
每个人由于环境的不同,文档上不可能都写到的。都是不断的实验,不断的折腾。
选择自动安装依赖的软件
文档上说要用Chocolatey,我用的并不好,没安装成功依赖的软件。有漏掉的依赖软件,命令行对新手也不友好。
最后所有的依赖软件都用cygwin来装,装多点不怕,就怕装的不够全。
依次安装
vs2015
已经预先在vmware中的win7x64中装了一个完整版的。
默认安装路径
QT
wireshark文档中要求是QT5.9,去qt站点上注册账号,下载开源版本的qt5.9.3.
qt-opensource-windows-x86-5.9.3.exe
默认安装路径
python
wireshark文档中要求可以是python3或python2, 下载了一个python2最新版。
python-2.7.14.amd64.msi
默认安装路径
cmake
cygwin装的cmake不全,单独装了一个。
cmake-3.10.0-win64-x64.msi
默认安装路径
cygwin
官网下载了cygwin setup 2.882 x64, 在线安装。
setup-x86_64.exe
默认安装路径
先选只下载full模式,不安装,将所有cygwin软件都拖到本地C:\tools,总共18GB(只是为了省心,再运行cggwin setup 就从本地路径开始装)。
用cygwin装时,先装一遍full模式,default改成install, 将默认的依赖软件都装一遍(因为不熟,估计也不是必须)
在单独运行cygwin, 将文档上要求的依赖软件都装一次,因为不熟,每装一个依赖软件,都重新运行一次cygwin, 挫。
Devel/bison (or install Win flex-bison - see Chocolatey below)Devel/flex (or install Win flex-bison - see Chocolatey below)Devel/git (recommended - see discussion about using Git below)Interpreters/perlUtils/patch (only if needed) (may be Devel/patch instead)Web/wget (not needed if using CMake)Text/asciidocText/docbook-xml45Interpreters/m4
配置环境变量
编译源码时,需要一个环境变量,文档上没写,看出错信息知道要设置这个环境变量。
PLATFORM=win64
下载wireshark源码
最新的稳定版时2.4.2.
wireshark-2.4.2.tar.xz
编译wireshark
建立C:\Development目录,将wireshark-2.4.2.tar.xz用7zip解开2次,将wireshark-2.4.2目录改名为wireshark目录,拷贝到C:\Development\。
建立C:\Development\wsbuild32目录.
在C:\Development\目录中建立一个批处理文件env.bat,用来设置环境变量。
@echo offrem @file env.batrem Let CMake determine the library download directory name underrem WIRESHARK_BASE_DIR or set it explicitly by using WIRESHARK_LIB_DIR.rem Set *one* of these.set WIRESHARK_BASE_DIR=C:\Developmentrem set WIRESHARK_LIB_DIR=c:\wireshark-win64-libsrem Set the Qt installation directoryrem set QT5_BASE_DIR=C:\Qt\5.9.1\msvc2015_64set QT5_BASE_DIR=C:\Qt\Qt5.9.3\5.9.3\msvc2015_64rem Append a custom string to the package version. Optional.set WIRESHARK_VERSION_EXTRA=-LsBuildrem Chocolatey installs Cygwin in an odd locationrem set WIRESHARK_CYGWIN_INSTALL_PATH=C:\ProgramData\chocolatey\lib\Cygwin\tools\cygwinset WIRESHARK_CYGWIN_INSTALL_PATH=C:\cygwin64
用cmake制作.sln工程文件
打开vs2015命令行
进入到c:\Development目录
cd c:\Development
调用环境设置脚本
call env.bat
进入到build专用目录
cd wsbuild32
开始生成Wireshark.sln和其他子工程文件
cmake -DENABLE_CHM_GUIDES=on -G “Visual Studio 14 2015 Win64” ..\wireshark
这步要是显示错误,就看错误信息,将其他没找到的依赖软件用cygwin装上。
最后,显示如下信息就成功了。
-- Configuring done-- Generating done-- Build files have been written to: C:/Development/wsbuild32
build wireshark工程
文档上用msbuild的方法不好使,可能文档是写给最新版的,而不是wireshark2.4.2
我直接用vs2015打开生成好的Wireshark.sln,选择Debugx64模式编译成功。
在win10真机中先装一个官方发布的安装版wiresharkx64.
生成好的debug版wireshark,拷贝到非编译环境的win10中,不能运行,报错。
生成好的release带调试信息的wireshark版本目录拷贝到win10真机中,是可以运行的。
看版本号,已经是自己编译的wireshark版本。
调试wireshark
只能在编译环境下调试。
先下好断点(e.g. packet-pgsql.c的每个函数入口都下断点), 编译debug版后,单独运行debug版的wireshark.exe, 然后用vs2015附加进程wireshark.exe. 当拖入pgsql.cap到wireshark.exe时,就命中packet-pgsql.c中下好的断点了。剩下就是学习wireshark分析协议的事情了。
方便的调试方法
附加调试还是有点不方便。
可以用源码跑起来,直接调试,在main那,可以直接下断点。或在需要的代码处下断点。
首先将整个工程编译过了,然后将工程切到wireshark为激活的工程,F5跑起来,断点命中。
- how to build and debug wireshark2.4.2 source code
- How to build and debug android source code
- How to build NCL and NCAR Graphics from source code
- How to compile and debug VLC player source code in eclipse IDE on Ubuntu 10.04 (lucid)?
- How to compile and debug VLC player source code in eclipse IDE on Ubuntu 10.04 (lucid)
- How to debug ASP.NET MVC using source code
- How to Build Brillo Operating System from Source Code and Run Brillo Emulator Read more: http://www
- How to debug Dalvik and ARM code together
- How to debug asp.net mvc 4 source code?如何调试asp.net mvc4 源代码?
- download android source code and build
- [MSDN] How to Debug a Release Build
- How to: Debug a Release Build
- How To Build xfstools, xfsprogs And xfsdump From Source On Ubuntu
- [转贴]How To Organize Template Source Code
- How To Organize Template Source Code
- How To Organize Template Source Code
- How to get freeBSD/NetBSD Source Code
- how to read source code of angular?
- Uncaught RangeError:Maximun call stack size exeeded
- OpenGL的坐标变换
- numpy: np.argsort
- php 服务端集成支付宝APP支付
- 深入了解try-catch-finally
- how to build and debug wireshark2.4.2 source code
- C语言初学者可以做到的加密和解密
- NUIST OJ 1364 [2017 江苏科技大学 程序设计竞赛]D.重复成绩统计(改编) 【STL-map】
- 依赖注入
- 陌陌基于Kubernetes和Docker容器管理平台的架构实践
- 适配器模式
- Servlet生命周期与工作原理
- 智能指针share_ptr
- Android下载json(包括服务器代码)