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

残错 发表于 2020-5-13 12:28:47

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

之前发过一个堆内存释放无效指针导致崩溃的帖子 这个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://www.eyuyan.la/data/attachment/forum/201908/22/090602zwfa8a5ww9oa6fuo.gif测试动图https://www.eyuyan.la/data/attachment/forum/201908/22/090602z0uzg6vczn66yogs.gif


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

页: [1]
查看完整版本: 堆内存释放bug修复2.0 重写兼容数据执行保护