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

易语言 2020-03-19 19:12:41

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

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

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

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

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

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

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

更新内容:
1.不再使用内存执行
2.不再使用HeapSize进行指针检测(因为HeapSize api也有bug的 检测不对劲的指针也会崩溃,不知道是特权指针还是什么指针的问题。。反正我没弄明白,指针是正常的就是崩了,可能是缺少了点什么东西。)
3.使用自定义指针检测(虽然无法保证这个指针是堆内存的指针,但是问题不大)