能力值:
( LV2,RANK:10 )
在线值:
|
-
-
2 楼
首先 我怀疑360 能粉粹 正在执行的程序的 源文件(没安360,无法测试)
文件执行被 载入 内存,也只是部分数据,不是全部数据载入内存,所以无法全部还原,
如果想还原,可以去研究哈 进程内核对象
|
能力值:
( LV2,RANK:10 )
在线值:

|
-
-
3 楼
正在执行的程序不可以被删改移动的吧??
执行程序确实是把硬盘上的程序完全加载到内存(EXE)
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
4 楼
哈哈,先放内存,然后删除硬盘文件,然后你重启后,内存也释放了
|
能力值:
( LV12,RANK:1000 )
|
-
-
5 楼
研究下360粉碎机
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
习惯用XueTr
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
你从移动介质中运行一个应用程序,然后直接拔出移动介质,程序仍然是运行的
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
是啊,运行中的程序应该是删不掉的,在优盘的运行的程序,然后又把优盘拔掉,也确实可以,那是属于被硬件被物理移除了,和删除不一样
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
9 楼
重启之后进程应该就没了
|
能力值:
( LV2,RANK:10 )
在线值:

|
-
-
10 楼
这个是强制拔插,和删除不同
程序要运行肯定会加载到内存,拔掉移动介质后,加载到内存的部分可以正常运行,但是没有加载的DLL就无法运行
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
11 楼
你先把进程结束了 在粉碎试试
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
应该是把进程需求的数据和资源放入内存,然后清除,重启系统或注销后,彻底清除。
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
13 楼
是释放在内存中的 硬盘中的其实已经删除
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
可以看看文件自删除的东西
下面的这个
http://www.pediy.com/bbshtml/BBS4/kanxue381.htm
标 题:一篇在程序还未结束运行时就能把自身删除的文章(2千字)
发信人:WinDos2K
时 间:2002-2-7 16:02:05
详细信息:
下面的代码由Gary Nebbett写就.Gary Nebbett乃是WINDOWS NT/2000 NATIVE API REFERENCE的作者.乃NT系统一等一的高手.下面就分析一些他的这段代码.
这段代码在PROCESS没有结束前就将启动PROCESS的EXE文件删除了.
int main(int argc, char *argv[])
{
HMODULE module = GetModuleHandle(0);
CHAR buf[MAX_PATH];
GetModuleFileName(module, buf, sizeof buf);
CloseHandle(HANDLE(4));
__asm {
lea eax, buf
push 0
push 0
push eax
push ExitProcess
push module
push DeleteFile
push UnmapViewOfFile
ret
}
return 0;
}
现在,我们先看一下堆栈中的东西
偏移 内容
24 0
20 0
16 offset buf
12 address of ExitProcess
8 module
4 address of DeleteFile
0 address of UnmapViewOfFile
调用RET返回到了UnmapViewOfFile,也就是栈里的偏移0所指的地方.当进入UnmapViewOfFile的流程时,栈里见到的是返回地址DeleteFile和HMODUL module.也就是说调用完毕后返回到了DeleteFile的入口地址.当返回到DeleteFile时,看到了ExitProcess的地址,也就是返回地址.和参数EAX,而EAX则是buffer.buffer存的是EXE的文件名.由GetModuleFileName(module, buf, sizeof buf)返回得到.执行了DeleteFile后,就返回到了ExitProcess的函数入口.并且参数为0而返回地址也是0.0是个非法地址.如果返回到地址0则会出错.而调用ExitProcess则应该不会返回.
这段代码的精妙之处在于:
1.如果有文件的HANDLE打开,文件删除就会失败,所以,CloseHandle(HANDLE(4));是十分巧妙的一手.HANDLE4是OS的硬编码,对应于EXE的IMAGE.在缺省情况下,OS假定没有任何调用会关闭IMAGE SECTION的HANDLE,而现在,该HANDLE被关闭了.删除文件就解除了文件对应的一个句柄.
2.由于UnmapViewOfFile解除了另外一个对应IMAGE的HANDLE,而且解除了IMAGE在内存的映射.所以,后面的任何代码都不可以引用IMAGE映射地址内的任何代码.否则就OS会报错.而现在的代码在UnmapViewOfFile后则刚好没有引用到任何IMAGE内的代码.
3.在ExitProcess之前,EXE文件就被删除了.也就是说,进程尚在,而主线程所在的EXE文件已经没了.(WINNT/9X都保护这些被映射到内存的WIN32 IMAGE不被删除.)
Gary Nebbett果然是WIN系列平台的顶尖高手之一.能写出如此代码.独辟蹊径啊:)
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
是因为程序运行时需要页面文件吧,被映射到了C盘页面文件?建议看看操作系统相关的资料,也许有用。
http://baike.baidu.com/view/743445.htm
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
这程序神奇啊。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
用xuetr,比360的好得多
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
19 楼
我觉得360粉碎文件,只是一个噱头,他的真实功能其实可能也就是永久性删除,而你在运行的文件是无法删除的,所以,才会有此疑惑.
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
20 楼
360其实真的很局限,只是大家用的好像还真挺多的。
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
在重启系统释放内存即可删除了....
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
360的无法删除我在CMD中创建的带.文件夹,习惯用IceWord
|
能力值:
( LV5,RANK:60 )
|
-
-
23 楼
确实是好文!
|