1. 最近做一些hook的东西,对某些内存做操作时引发访问违规,于是利用内核函数更改了页面属性,在winxp下没有问题,但在win7下程序运行异常,只是简单的一句push ebp,检查esp、ebp都没发现什么问题,后!address eip发现代码页为PAGE_WRITE*属性,而正常的代码段属性为PAGE_EXECUTE_READONLY,于是推测之前的操作将代码段的属性修改后未复原,后经将代码段属性恢复,程序在win7上运行正常。
2. windbg内核调试时,就算页面属性为ReadOnly,也可以修改此页面的内存,但是用户模式调试器缺不能,不解,有高手解答下?
3. 在远程注入相关代码中,使用 Wr i t e P r o c e s s M e m o r y函数,而不是
I n t e r l o c k e d E x c h a n g e P o i n t e r函数是因为Wr i t e P r o c e s s M e m o r y能够改变字节,而不管这些字节拥
有什么页面保护属性。例如,如果页面拥有 PA G E _ R E A D O N LY保护属性,那么 I n t e r l o c k e d
E x c h a n g e P o i n t e r函数将会引发访问违规,而 Wr i t e P r o c e s s M e m o r y函数则能够处理页面保护属性
的所有变更,并且仍然能够正常运行。