怎么删除掉正在运行的程序?

KeSummer 2007-03-13 12:47:11
现在我只做到了修改正在运行的程序,我是用驱动去实现的,修改可以,也可以把正在执行的程序的大小截短到0,删除却不可以,郁闷吖~我参考了很多内核函数,最接近的ZwDeleteFile也不行。向FASTFAT或者NTFS 发送IRP进行文件删除可以吗?我没这方面的资料。。请那位高人请指点一下~~小弟感激不尽~
...全文
1013 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lexsword 2008-04-10
  • 打赏
  • 举报
回复
mydo(侯佩|hopy|10个月)

我也想过,我修改正在执行程序是修改HANDLE的MASK实现的,在ring3层次删除文件是通过ZwSetSystemInformation实现的,我跟过ZwDeleteFile,到KiSystemService就没跟进去了,我刚好有XP和2003的内核代码,也懒得去分析。

说有xp和2003的内核代码,是wrk1.2吗?如果不是发一份给我fresharplite@163.com,我很想分析
jingzhongrong 2007-03-15
  • 打赏
  • 举报
回复
我搜索了一下

IRP的方法
向FSD发送IRP_MJ_SET_INFORMATION
设置Irp
->Parameters.SetFile.FileInformationClass为FileDispositionInformation
不知道是否可行
palmax 2007-03-14
  • 打赏
  • 举报
回复
要知道DeleteFile最终调用的也是ZwDeleteFile,并不是你直接调用ZwDeleteFile就可以了

程序运行后是被加载到内存的地址空间中,这时磁盘上的文件只是映像了,用UnmapViewOfFile解除映射,从理论上是可以删除磁盘上的文件的,网上不是有段经典的删除正在运行的exe的汇编码么?

发送irp没试过,但是io控制码你没有啊
KeSummer 2007-03-13
  • 打赏
  • 举报
回复
先谢谢palmax(南宫煌) ,我也这样想过,因为我在执行ZwDeleteFile返回的ERROR CODE说是什么映射的,不过没写代码,你实现过没?它要传递一个内存地址,传exe的基址?
palmax 2007-03-13
  • 打赏
  • 举报
回复
总之要解除文件/程序在内存中的映像
reference to UnmapViewOfFle ZwUnmapViewOfSection
大熊猫侯佩 2007-03-13
  • 打赏
  • 举报
回复
我也做到了。将HANDLE的MASK改成0XFFFFFFFF就行了。
我的方法和你的不同,可以进一步探讨下,呵呵

可是写和删除是两个动作,删除不能使用HANDLE吧。
没错,处理办法有些不同
KeSummer 2007-03-13
  • 打赏
  • 举报
回复
0_0

mydo(侯佩|hopy|10个月)

你做到了?

文件不能再以写入目而打开,那么如何绕过windows的这种保护呢?敬请期待。

我也做到了。将HANDLE的MASK改成0XFFFFFFFF就行了。
可是写和删除是两个动作,删除不能使用HANDLE吧。
大熊猫侯佩 2007-03-13
  • 打赏
  • 举报
回复
我跟进去了,并且做了跳转也达到了目的,呵呵

in http://blog.csdn.net/mydo/archive/2006/12/19/1449536.aspx :

最后“预告”一下我的第3篇文章:

<<Windows核心编程研究系列之三:突破windows共享文件打开限制>>

主要内容:

很多用No_Share打开的文件,正常情况下不能在其他进程用

CreateFile打开,或者是仅仅用FILE_SHARE_READ打开的

文件不能再以写入目而打开,那么如何绕过windows的这种保护呢?敬请期待。J

KeSummer 2007-03-13
  • 打赏
  • 举报
回复
mydo(侯佩|hopy|10个月)
---------------
第三篇文章?
我的另一个博客地址
还是
[调查]:我心目中的影星-喜欢电影的兄弟姐妹进[原创]
分别是顺数和逆数哦。。

我也想过,我修改正在执行程序是修改HANDLE的MASK实现的,在ring3层次删除文件是通过ZwSetSystemInformation实现的,我跟过ZwDeleteFile,到KiSystemService就没跟进去了,我刚好有XP和2003的内核代码,也懒得去分析。
大熊猫侯佩 2007-03-13
  • 打赏
  • 举报
回复
内核中的delete核心api在删除文件时会作一些判断,其中包括该文件是否作为一个可执行
文件正在被执行,只要找到判断点然后改变跳转即可,可以到我的blog关注我的第3篇文章,
现在太懒了,没劲写了,呵呵
KeSummer 2007-03-13
  • 打赏
  • 举报
回复
sz_04022(帮别人开启一扇窗,也就是让自己看到更完整的天空)
----------------

其实我的意思是在不结束进程的情况下,删除掉程序。。

谢谢各位参与。
东文-桑晨 2007-03-13
  • 打赏
  • 举报
回复
看看Windows的任务管理器结束进程的原理。

如果像一些木马病毒之类的不接受窗口消息,
看看杀毒软件是怎么做到的。

利用文件过滤驱动?
KeSummer 2007-03-13
  • 打赏
  • 举报
回复
jingzhongrong(想大笨猪了)
-------------------------
我回去安装IFS DDK看看。估计不成。
李马 2007-03-13
  • 打赏
  • 举报
回复
mark
jingzhongrong 2007-03-13
  • 打赏
  • 举报
回复
直接向文件系统发送IRP应该可以实现的

我也想了解一下...
KeSummer 2007-03-13
  • 打赏
  • 举报
回复
先感谢ugg(逸学堂(exuetang.net)) 参与回答。首先如果一个进程不接受窗口消息就没办法,或者是木马病毒之类的也没办法结束的。或者说很难结束。
逸学堂 2007-03-13
  • 打赏
  • 举报
回复
获得正在运行的程序句柄,发送exit消息,结束进程之后再删除,不行嘛?
for free~~~ 内附srvany.exe,instsrv.exe,让程序作为服务运行.txt 介绍如下: 让程序作为服务运行 想让一个程序在启动系统的时候自动运行,你有什么好办法?添加到启动组?那如果别人删除就不管用了。如果你使用了Windows NT/2000/XP,就可以试试把这个程序添加为一个服务,这样只有拥有权限的人才可以更改服务,只要你设置好权限,就不用担心会被别人删除了。 要把应用程序添加为服务,你需要两个小软件:Instsrv.exe和Srvany.exe。Instsrv.exe可以给系统安装和删除服务,Srvany.exe可以让程序以服务的方式运行。这两个软件都包含在Windows NT Resource Kit里,如果你没有,也可以点击这里下载。 把这两个程序保存在一个方便的位置,例如C盘根目录下。我们举例来说明,把OE作为一个服务添加进Windows XP Professional操作系统中,并把这个服务命名为“Mail”。在运行中输入“CMD”,回车,打开命令行窗口,在提示符后面直接输入:“c:\instsrv.exe Mail c:\srvany.exe”然后回车,其中的“c:\instsrv.exe”和“c:\srvany.exe”表示这两个程序保存的位置,而Mail则是你想添加的服务名称。 运行Regedit打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,找到刚才添加的Mail,点击右键,新建一个键,命名为“Parameters”,点击新建的Parameters,并再次新建一个名称为“Application”的子键,数据类型为“REG_SZ”,数值为希望作为服务运行程序的所在位置,如果你的Windows系统安装在C盘下,那么OE的程序位置就是C:\Program Files\Outlook Express\msimn.exe ,把这个路径添入数值中。到现在,这个服务已经成功的添加并且设置好了。如果你希望做的更加专业,可以在Mail服务下建立一个名为Description的子键,数据类型同样为REG_SZ,数值可以写一些你对这个服务的描述,这个我们在后面可以看到。 接下来需要对服务做一些额外的设置,在运行中输入“Services.msc”并回车,在列表中找到我们刚添加的Mail服务,双击打开,来做详细的设置。在“General”选项卡上,我们需要设置这个服务的运行方式,在图二中可以看见,作为一个服务,有“自动(Automatic)”,“手动(Manual)”和“禁止(Disabled)”三种启动类型,按照需要,我们一般设置成自动就可以了。而在“Logon”选项卡下可以设置以什么身份运行这个服务,一般可以不用理会,按照默认的设置。“Recovery”选项卡下则是进行恢复设置的,你可以指定,在服务第一次,第二次和第三次出错之后分别采取什么措施。“Dependencies”则显示了服务之间的依存关系,可以让你察看这个服务的运行依赖哪些其它服务,以及还有什么服务依赖于这个服务。这后面几个对我们一般用户没有什么意义。经过这些设置,你的服务已经完全可以正常工作了。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧