zoukankan      html  css  js  c++  java
  • 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()函数,这就是程序的入口,这时就可以下断点跟踪调试了。

        今天先写到此,明天再附上详细的分析报告。

  • 相关阅读:
    Javascript 公共代码(可重用)
    ExtJs之Ext.data.Store
    delete exists
    c++ builder adoquery sql语句的动态增加
    C++ XML解析之TinyXML篇
    oracle数据类型varchar2和varchar的区别
    adoquery查询结果如何赋给一个变量(delphi和c++ builder)
    没有安装 BCB 的机器上运行会提示 找不到 库之类
    select union 查询出来的结果,如何按指定顺序输出
    oracle 已有 表 增加 列
  • 原文地址:https://www.cnblogs.com/littleKing163/p/5003840.html
Copyright © 2011-2022 走看看