-
-
[原创][分享]如何使用gflags分析堆破坏
-
发表于: 2022-3-4 22:15 5811
-
在使用gflags之前,根据模块+Offsest信息是无法定位实际崩溃位置的,这是典型的对破坏表现。
明显在使用gflags之后,可以准确定位到模块: BugKing+0x1888
如果有pdb,就可以准确定位到产生堆破坏的代码位置。
根据强大的IDA反汇编可以找到问题代码。使用了悬空指针,并赋值0X123456。
gflgas用来跟踪程序的执行,可以设置每一次new分配的堆空间都单独的占有一块空间,并且这个空间相邻的位置被设置为不可访问的,一旦访问越界立即触发访问无效错误,尽早的触发崩溃。
建议在虚拟机上测试,这种方法可能会影响电脑的系统性能。
什么是Heap Corruption
堆破坏是内存破坏的一种,简单来说就是由于程序的错误导致堆内存被意外改写,典型的情况包括:
申请了N个Bytes的内存,却试图写入> N个Bytes的内容;
向已经释放的内存位置写入内容;
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2022-3-5 08:37
被_THINCT编辑
,原因:
赞赏
他的文章
- 重新认识线程sleep 998
- [原创]CPU爆高,程序卡顿分析 1733
- [原创]再战堆栈损坏:Critical error detected c0000374 1287
- [原创]在无用的堆栈中分析DLL版本错误 1336
- [原创]小白也能通过特征码定位源码 2801
看原图
赞赏
雪币:
留言: