以前使用windbg调试样本时不时会遇到异常并提示(!!! second chance !!!),之前也尝试查找过原因但是并没有找到,一直十分郁闷。这次又出现了异常,有时间查找原因并发现了问题所在,于是记录下分析过程。
在调试一个样本,每次用windbg调试都会出现:
但是使用x64dbg调试或者直接运行在无调试器参与时均不会出现异常,之前也遇到过,但一直没有解决。
思路是使用windbg一步一步的运行,发现在代码运行到fseek( )函数时,传入的文件指针为0,调试截图如下:
其中的rcx为0,就是文件指针没有值,后续肯定会出现异常。于是查看被调试样本中的一段读取文件的代码,读取的是一个相对位置非绝对位置,代码如下图所示:
大概率可能是相对路径的的问题,我们依旧使用windbg调试,这是我们把要读取的文件复制一份到windbg所在目录,运行结果如下图: