首页
社区
课程
招聘
[原创]无PDB也能定位源码出错位置
发表于: 2023-12-2 16:31 4251

[原创]无PDB也能定位源码出错位置

2023-12-2 16:31
4251

分析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编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (2)
雪    币: 3004
活跃值: (30861)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2023-12-2 20:58
1
雪    币: 303
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
学习了
2024-7-7 17:03
0
游客
登录 | 注册 方可回帖
返回
//