zoukankan      html  css  js  c++  java
  • 【WindowsDDK】内核字符串操作蓝屏的一个解决办法

      前一段时间参加了学校的网络安全竞赛。其中有一道题目是“拦截注册表”,使用SSDT HOOK ZwSetKeyValue函数。在自己的ZwSetKeyValue函数中,需要对传递进来的注册表路径与设定好的注册表路径进行匹配(ANSII 比较),如果一样,则被拦截。否则,则放行。

      虽然在Windows内核中并不推荐使用C语言的字符串操作的库函数,但又没有其他好的办法的时候仍然需要使用。我在程序中使用了strcpy()与strcmp()函数。可以成功生成驱动,但加载之后,系统会蓝屏。开始始终搞不清楚,多次尝试之后,发现取消DriverEntry开头的#define INITCODE code_seg("INIT")即可。具体的原因到现在依然不太清楚,后来百度了一下,在pediy论坛上发现了别人也在进行这个问题的讨论。链接是:

      http://bbs.pediy.com/showthread.php?p=808708

      两条可能有用的回复摘下来:

      2.呵呵,我早就遇到过了,原因好像是字符串放在INIT节中,卸载时却被换出内存了。不过现在好像无法重现了。

      4.的确是这样,要把CreateDevice函数的#pragma INITCODE改为#pragma PAGEDCODE,我问过作者,也没有给明确的答复。

      如果有遇到类似情况的并且知道原因的,希望可以告诉我。谢谢。

  • 相关阅读:
    JavaScript高级-----8.函数进阶(2)
    JavaScript高级-----7.函数进阶(1)
    2014-10-18 来美半个月
    修手机记
    圆梦美利坚之三:租房记
    圆梦美利坚之二:买机票记
    Hadoop 停止Job
    IIS应用程序池数目
    HTML5 microdata
    Java sql helper[转]
  • 原文地址:https://www.cnblogs.com/XjChenny/p/2244243.html
Copyright © 2011-2022 走看看