我是靠谱客的博主 优雅仙人掌,最近开发中收集的这篇文章主要介绍自删除技术小记:Gary Nebbett,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

以前看书的时候摘录的笔记,经典的自删除方法,可以当历史故事看看 :)

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() ,实现了程序的自删除。


  1. 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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部