现在我只做到了修改正在运行的程序,我是用驱动去实现的,修改可以,也可以把正在执行的程序的大小截短到0,删除却不可以,郁闷吖~我参考了很多内核函数,最接近的ZwDeleteFile也不行。向FASTFAT或者NTFS 发送IRP进行文件删除可以吗?我没这方面的资料。。请那位高人请指点一下~~小弟感激不尽~

解决方案 »

  1.   

    总之要解除文件/程序在内存中的映像
    reference to UnmapViewOfFle ZwUnmapViewOfSection
      

  2.   

    先谢谢palmax(南宫煌) ,我也这样想过,因为我在执行ZwDeleteFile返回的ERROR CODE说是什么映射的,不过没写代码,你实现过没?它要传递一个内存地址,传exe的基址?
      

  3.   

    获得正在运行的程序句柄,发送exit消息,结束进程之后再删除,不行嘛?
      

  4.   

    先感谢ugg(逸学堂(exuetang.net)) 参与回答。首先如果一个进程不接受窗口消息就没办法,或者是木马病毒之类的也没办法结束的。或者说很难结束。
      

  5.   

    直接向文件系统发送IRP应该可以实现的我也想了解一下...
      

  6.   

    jingzhongrong(想大笨猪了) 
    -------------------------
    我回去安装IFS DDK看看。估计不成。
      

  7.   

    看看Windows的任务管理器结束进程的原理。如果像一些木马病毒之类的不接受窗口消息,
    看看杀毒软件是怎么做到的。利用文件过滤驱动?
      

  8.   

    内核中的delete核心api在删除文件时会作一些判断,其中包括该文件是否作为一个可执行
    文件正在被执行,只要找到判断点然后改变跳转即可,可以到我的blog关注我的第3篇文章,
    现在太懒了,没劲写了,呵呵
      

  9.   

    mydo(侯佩|hopy|10个月)
    ---------------
    第三篇文章?
    我的另一个博客地址
    还是
    [调查]:我心目中的影星-喜欢电影的兄弟姐妹进[原创]
    分别是顺数和逆数哦。。我也想过,我修改正在执行程序是修改HANDLE的MASK实现的,在ring3层次删除文件是通过ZwSetSystemInformation实现的,我跟过ZwDeleteFile,到KiSystemService就没跟进去了,我刚好有XP和2003的内核代码,也懒得去分析。
      

  10.   

    我跟进去了,并且做了跳转也达到了目的,呵呵in http://blog.csdn.net/mydo/archive/2006/12/19/1449536.aspx :最后“预告”一下我的第3篇文章:<<Windows核心编程研究系列之三:突破windows共享文件打开限制>>主要内容:很多用No_Share打开的文件,正常情况下不能在其他进程用CreateFile打开,或者是仅仅用FILE_SHARE_READ打开的文件不能再以写入目而打开,那么如何绕过windows的这种保护呢?敬请期待。J
      

  11.   

    0_0mydo(侯佩|hopy|10个月) 你做到了?文件不能再以写入目而打开,那么如何绕过windows的这种保护呢?敬请期待。我也做到了。将HANDLE的MASK改成0XFFFFFFFF就行了。
    可是写和删除是两个动作,删除不能使用HANDLE吧。
      

  12.   

    我也做到了。将HANDLE的MASK改成0XFFFFFFFF就行了。
    我的方法和你的不同,可以进一步探讨下,呵呵可是写和删除是两个动作,删除不能使用HANDLE吧。
    没错,处理办法有些不同
      

  13.   

    要知道DeleteFile最终调用的也是ZwDeleteFile,并不是你直接调用ZwDeleteFile就可以了程序运行后是被加载到内存的地址空间中,这时磁盘上的文件只是映像了,用UnmapViewOfFile解除映射,从理论上是可以删除磁盘上的文件的,网上不是有段经典的删除正在运行的exe的汇编码么?发送irp没试过,但是io控制码你没有啊
      

  14.   

    我搜索了一下IRP的方法
    向FSD发送IRP_MJ_SET_INFORMATION
    设置Irp
    ->Parameters.SetFile.FileInformationClass为FileDispositionInformation
    不知道是否可行
      

  15.   

    mydo(侯佩|hopy|10个月) 我也想过,我修改正在执行程序是修改HANDLE的MASK实现的,在ring3层次删除文件是通过ZwSetSystemInformation实现的,我跟过ZwDeleteFile,到KiSystemService就没跟进去了,我刚好有XP和2003的内核代码,也懒得去分析。说有xp和2003的内核代码,是wrk1.2吗?如果不是发一份给我[email protected],我很想分析