-
-
[原创]无PDB也能定位源码出错位置
-
发表于:
2023-12-2 16:31
4295
-
分析dump文件,能查到的堆栈信息如下:
本来是有pdb文件的,也加载了,但是没有对应的堆栈上的Canvas模块,只有偏移信息,可能pdb文件的版本出问题了。
根据这个偏移,使用 bp Canvas+0x271497 下断点,再次运行,触发断点。发现对应的代码并不是对应的硬编码:833905,即 cmp dword ptr [ecx],5
于是将Canvas.dll模块使用IDA打开,搜索硬编码 833905
得到
只有三个,结合下一指令,进一步确认得到,崩溃点代码在
基本上直接确定了代码的函数和行数。
找到源码,根据函数和偏移,找到崩溃的汇编语句
结合最开始dump的信息,知道ecx=1,从而知道pShape指针对象出现了问题。
其实通过这种方法,就算编译器启用了优化选项,也能准确定位到程序的崩溃点对应的源代码位置的。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2023-12-2 16:51
被_THINCT编辑
,原因: