首发于

Prowes5偶尔更新的tips

signal程序调试技巧

Prowes5

re菜狗

前言

之前碰到很多逆向题目是和signal相关的,这里总结一下使用gdb调试时需要的一些命令。

signal介绍

signal是一种软中断。举个例子来说,我们都知道在Linux下使用Ctrl+c可以停止程序,Ctrl+C就会产生一个程序结束的中断信号,当终端接收到,就会终止当前进程。

在CTF中

我们都知道,在调试过程中,如果程序产生中断,默认情况下是会交给调试器来进行处理,对于开发过程中这是我们想看到的,这样可以准确的定位到问题处。而在我们逆向过程中,这是我们不愿意看到的。首先有可能由于流程交给调试器可能会影响我们之后调试的结果。还有一种可能就是开发者可以通过这种方式来进行反调试。所以灵活的控制signal发生时流程具体是在程序手中还是调试器是比较重要的。

查看signal详情

info signals info handler

QQ截图20211009164941.png

可以看到这里有五个表头,分别是Signal、Stop、Print、Pass、De-script-ion,分别代表了,信号、信号发生程序是否停止、信号发生是否输出提示、信号发生是否被gdb忽略、信号的具体描述。

信号处理

就用段错误来举例,段错误产生的信号是SIGSEGV,这时候会停止程序让调试器处理,并且会打印段错误相关的输出,且不会让调试器进行忽略。

handle SIGSEGV nostop noprint pass

QQ截图20211009175701.png 这时候就可以在handler下断点进行跟进调试。

信号总结

算了,懒得总结了,贴一个链接https://www.cnblogs.com/frisk/p/11602973.html,除非这个师傅删了,不过不重要在siganl.h里边也有定义,就是懒得翻源码。

发布于2021-10-09 18:01:08
+132赞
0条评论
收藏
内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66