首页
社区
课程
招聘
[原创][分享]如何使用gflags分析堆破坏
发表于: 2022-3-4 22:15 5811

[原创][分享]如何使用gflags分析堆破坏

2022-3-4 22:15
5811

未使用gflags

 

使用gflags之后

 

IDA反汇编查找原因

 

在使用gflags之前,根据模块+Offsest信息是无法定位实际崩溃位置的,这是典型的对破坏表现。

 

明显在使用gflags之后,可以准确定位到模块: BugKing+0x1888
如果有pdb,就可以准确定位到产生堆破坏的代码位置。

 

根据强大的IDA反汇编可以找到问题代码。使用了悬空指针,并赋值0X123456。


 

gflgas用来跟踪程序的执行,可以设置每一次new分配的堆空间都单独的占有一块空间,并且这个空间相邻的位置被设置为不可访问的,一旦访问越界立即触发访问无效错误,尽早的触发崩溃。

 

建议在虚拟机上测试,这种方法可能会影响电脑的系统性能。

 

什么是Heap Corruption
堆破坏是内存破坏的一种,简单来说就是由于程序的错误导致堆内存被意外改写,典型的情况包括:

 

申请了N个Bytes的内存,却试图写入> N个Bytes的内容;
向已经释放的内存位置写入内容;


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2022-3-5 08:37 被_THINCT编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//