-
-
[原创]无PDB也能定位源码出错位置
-
发表于:
2023-12-2 16:31
4294
-
分析dump文件,能查到的堆栈信息如下:
本来是有pdb文件的,也加载了,但是没有对应的堆栈上的Canvas模块,只有偏移信息,可能pdb文件的版本出问题了。
根据这个偏移,使用 bp Canvas+0x271497 下断点,再次运行,触发断点。发现对应的代码并不是对应的硬编码:833905,即 cmp dword ptr [ecx],5
于是将Canvas.dll模块使用IDA打开,搜索硬编码 833905
得到
只有三个,结合下一指令,进一步确认得到,崩溃点代码在
基本上直接确定了代码的函数和行数。
找到源码,根据函数和偏移,找到崩溃的汇编语句
结合最开始dump的信息,知道ecx=1,从而知道pShape指针对象出现了问题。
其实通过这种方法,就算编译器启用了优化选项,也能准确定位到程序的崩溃点对应的源代码位置的。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2023-12-2 16:51
被_THINCT编辑
,原因: