脚本开发,脚本学习,辅助软件,各种工具软件

访问密码统一为:3158

查看: 1920|回复: 0

堆内存释放bug修复2.0 重写兼容数据执行保护

[复制链接]

73

主题

73

帖子

388

积分

孩提

Rank: 2

积分
388
发表于 2020-5-13 12:28:47 | 显示全部楼层 |阅读模式

之前发过一个堆内存释放无效指针导致崩溃的帖子

这个bug   win的dll也是存在的    貌似17年也有人发过帖子  利用这个bug可以进行页覆盖执行shellcode  前不久看到的攻击漏洞

但是这个bug正常使用中触发几率非常非常小,可能被window忽略了

但是这些bug一旦触发却会影响我们的程序,比如一些莫名其妙的崩溃,也许时它造成的。

距离发那个帖子也有很长时间了,不知道新版易语言有没有添加检测了 或者 微软有没有修复了

但是用低版本的还是有的,比如我

由于原帖的修复补丁采用的时shellcode方式,在系统开启了数据执行保护就直接崩溃了

因为一直懒得写,就没有再发,因为这个修复确实有点简单了  就hook一下。

好吧,多人反馈崩溃,今天就重写了个,编译性的静态hook,不再使用内存执行,兼容数据执行保护的

其实也是很简单的,虽然我这里只写了只能安装MOV edi,edi  栈帧头   开头的,

(静态无冲突hook的实现): 原理是很简单的,无非就是利用编译所生成的程序内存,因为在这块内存执行EDP是不会冲突的,完全可以预留一块内存并直接修改使用,但是要实现高速执行需要考虑到对齐的方式,这里就不再详细说了。

当然,我这里写的hook仅针对于这个堆内存释放api了  所以里面是没有静态且无冲突hook安装的动态实现的。这里面是静态实现了。

更新内容:

1、不再使用内存执行

2、不再使用HeapSize进行指针检测(因为HeapSize api也有bug的 检测不对劲的指针也会崩溃,不知道是特权指针还是什么指针的问题。。反正我没弄明白,指针是正常的就是崩了,可能是缺少了点什么东西。)

3、使用自定义指针检测(虽然无法保证这个指针是堆内存的指针,但是问题不大),

测试动图




下载链接:https://t00y.com/file/20110282-443061081





上一篇:炫彩界面库_多彩进度条
下一篇:利用 RtlWalkFrameChain 回溯调用堆栈
3Q4T网,编程学习交流基地。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表