概述
以前看书的时候摘录的笔记,经典的自删除方法,可以当历史故事看看 :)
Gary Nebbett1曾提出一种方法,利用系统的一个特点来达到目的。
#include<windows.h>
int main(int argc,char *argv[])
{
char buf[MAX_PATH];
HMODULE module;
module=GetModuleHandle(0);
GetModuleFileName(module,buf,MAX_PATH);
CloseHandle((HANDLE)4);
_asm
{
lea eax,buf
push 0
push 0
push eax
push ExitProcess
push module
push DeleteFile
push UnmapViewOfFile
ret
}
return 0;
}
经典的自删除方法之一,不够通用,比如不支持Windows XP系统。
注释
程序的自删除已经不是什么新鲜的话题了,它广泛运用于木马、病毒中。当程序还在运行中(通常是完成了驻留、感染模块),它就自动地把自己从磁盘中删掉。
自删除(Self Deleting)最早的方法是由 Gary Nebbett 写的。
编译,运行,消失。
Gary Nebbett 钻了系统的一个漏洞,他的程序是关闭了 exe 文件的 IMAGE(硬编码为4),然后用 UnmapViewOfFile 解除了 exe 文件在内存中的映象,接着通过堆栈传递当前程序的路径名缓冲区指针给 DeleteFile() ,实现了程序的自删除。
Gary Nebbett著有“Windows NT/2000 Native API Reference”,这里所说的“Native API”,实际上就是系统调用。显然,这是一本关于WinNT系统调用的参考手册。既然微软把系统调用界面藏在黑盒子里面,或者说藏在Win32 API后面,从来都不公开,那么这本参考手册的价值也就不言而喻了。看一下这本书,就可以知道实现Windows系统调用界面的工作量该有多大。
http://download.eeworld.com.cn/detail/solarelec/455783 ↩︎
最后
以上就是优雅仙人掌为你收集整理的自删除技术小记:Gary Nebbett的全部内容,希望文章能够帮你解决自删除技术小记:Gary Nebbett所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复