Linux下用GDB对suricata进行源码调试心得

suricata是常见的用于网络攻击威胁引擎的开源项目,最近在学习相关知识,收获颇丰,做一下记录。
学习过程如下:
1.在Linux下安装suricata,安装的过程就很崎岖,由于电脑配置太低,删了下下了删,就是安装不成功。出现以下问题:*a)*依赖没有下载完整。*b)*由于重复下载,导致路径混乱,文件套文件,配置文件用的是第一层的,调用的时候和教程有很大出入,宝宝很生气,但是记性好,就没整理,接着用(就是害怕再出错,全靠嘴硬)。具体内容可以参考

https://blog.csdn.net/weixin_33910385/article/details/85927469

2.安装成功后,就开始自己编写suricata能够识别的规则。其实阅读规则也看了很久,并且对规则也进行了分类和总结,阅读了相关文档,因为这个方面的小众化和机密性,所以中文的学习资料都是很边角料(可能是我没有看懂的原因,也可能是我就只是在CSDN,百度和GitHub上看一些资料和文档),过程中出现的问题也是千奇百怪,在网上找相关问题有两成是找不到解决方案,要么看命,要么乱改,但是没敢删除,就是怕重头再来,但是一直再重来。规则的编写可以参考

https://blog.csdn.net/weixin_30924087/article/details/98287206
https://blog.csdn.net/weixin_39003567/article/details/104658632

3.阅读源码,源码真的是有点裹脚布的感觉,据说阅读源码是成长最快的,可是刚接触,上来就搞代码量这么大的内心还是很胆(e)怯(xin)的,随后,在GitHub上下载源码(https://github.com/OISF/suricata/blob/master/),在VS上先开始阅读,但是在VS上我并没有找到程序的启动项,并且出于本能,我又想去找main函数,但是并没有找到,原来他的主函数是SuricataMain,我直接裂开了,看的我眼睛都特别花,宝贝哭泣。这部分也是有相关博客可以进行参考的。

这里主函数运行流程:
运行模式注册,设置执行函数
所有模块注册,设置模块相关函数
所有模块初始化
从配置获取运行模式类型,执行函数
创建线程
根据模块名称从全局数组tmm_modules中得到模块指针
插入线程槽slot是引用

4.关于源码读着读着就看读不下去了,于是就画了个图,如图所示:Suricata运行模式
这个图是对三种运行模式的相应流程图,客官尽量看。
5.接下来就是想要用GDB对代码进行动态调试,因为之前没有用过,所以上手的速度比较慢,首先自己编写了一个小代码,就是数字交换,首先,建立一个.c文件将代码搞里头,起锅烧油,呸,串台了。然后用要将调试信息加入可执行文件,即

g++ -g -o swap swap.c
gdb swap //开始进行调试

之后就利用run(运行),step(单步跟踪),break(增加断点)等命令就可以看出来交换的过程,具体指令自行百度。(ps:这些简单的指令有缩写,肥宅本质,能偷懒就偷懒)
6.在.libs的路径下,开启调试之旅,记忆最深刻的bug就是在gdb条件下运行suricata是,输入run指令时在传入参数时,不需要在前面输入suricata,这个问题花了半天都没找到原因,真是脑残。开始动手源代码动态调试,由于沟通失误,开始对源代码疯狂操作,其实在原来安装好的suricata中就可以,又浪费了很久的时间,但是进入一个新的领域这样的时间成本还是难免会有损失。努力,我可以更强,鸡汤一上,谁有我浪。
7.环境调试成功了,具体虽说还没有搞懂,但是中间问问题还把别人问急眼了,看来还是要自主创新啊,革命尚未成功,宝宝仍需努力啊。
以上,欢迎批评指正。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值