EXE程序的自删除实现

所属分类: 软件教程 / 其他工具 阅读数: 1072
收藏 0 赞 0 分享

程序的自删除已经不是什么新鲜的话题了,它广泛运用于木马、病毒中。试想想,当你的程序还在运行中(通常是完成了驻留、感染模块),它就自动地把自己从磁盘中删掉,这样一来,就做到了神不知鬼不觉,呵呵,是不是很cool呢?

自删除(Self Deleting)最早的方法是由 Gary Nebbett 大虾写的,太经典了,不能不提。程序如下:

#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;
}

试试编译它,运行。怎么样?从你的眼皮底下消失了吧?是不是很神奇?

Gary Nebbett 钻了系统的一个漏洞,他的程序是关闭了 exe 文件的 IMAGE(硬编码为4),然后用 UnmapViewOfFile 解除了 exe 文件在内存中的映象,接着通过堆栈传递当前程序的 Handle 给 DeleteFile() ,实现了程序的自删除。

Gary Nebbett 果然不愧为 WIN 系统下顶尖的底层高手。那么是否还有其他的方法实现程序的自删除呢?答案是肯定的。

在 Win9x/ME 下,还可以利用 WININIT.INI 的一些特性。在 WININIT.INI 文件里面有一个节 [Rename] ,只要在里面写入要 “Nul=要删除的文件”,那么下次系统重新启动的时候,该文件就会被自动删除了。以下是一个例子:

[Rename]
NUL=c:\SelfDelete.exe

利用这个特性,我们就可以在程序中对这个 ini 文件进行操作。值得注意的是,当需要自删除的文件多于一个的时候,就不能使用 WritePrivateProfileString 来实现,因为这个 API 会阻止多于一个“NUL=”这样的入口在同一个节里面出现,所以最好还是自己手动实现。

第三种方法是利用批处理文件。先让我们做一个试验:

创建一个 a.bat ,给它写入以下内容:

del %0.bat

现在运行它吧,屏幕一闪而过,最后留下一串字符:“The batch file cannot be found”。这时候它已经从你的硬盘中消失了。

这说明,批处理文件是可以删除自己的,于是我们可以把这个小技巧运用在自己的程序当中:

:Repeat
del "C:\MYDIR\SelfDelete.exe"
if exist "SelfDelete.exe" goto Repeat
rmdir "C:\MYDIR"
del "\DelUS.bat"

它会重复不断地搜索是否有 SelfDelete.exe 这个文件,直到删除了它为止;当删除完毕后,这个批处理文件就会把自己删除。
(注:本方法可以支持所有的 Windows 版本,即 Win9x/Me/NT/2000/XP)

用批处理文件的方法有一个缺陷,就是会突然弹出一个 DOS 窗,冷不防的吓人一跳,不过据我所知这是目前唯一可以在 WinXP 下起作用的方法。当然,最理想的方法是用 Gary Nebbett 的那种,不过它的缺陷是没法在 WinXP 下起作用。

更多精彩内容其他人还在看

百度女神卡怎么申请 百度女神卡申请教程

很多朋友不清楚百度女神卡怎么申请?下面小编给大家带来百度女神卡申请教程,需要的朋友可以参考下
收藏 0 赞 0 分享

CST Studio Suite2015安装及破解详细图文教程

近日,有网友咨询小编CST2015如何安装?今天脚本之家小编就给大家带来CST Studio Suite2015安装及破解图文教程,非常详细,需要的赶紧去看看吧
收藏 0 赞 0 分享

乐视视频小乐卡资费划算吗?中国电信携手乐视推视频免流卡套餐详情介绍

中国电信联合乐视视频推出了全新的免流卡套餐——乐视视频小乐卡。那究竟小乐卡套餐可以为我们带来怎样的优惠呢?电信小乐卡怎么收费的?乐视视频小乐卡套餐划算吗?下面我们就一起来了解
收藏 0 赞 0 分享

BarTender条码设计怎么移动对象?

BarTender条码设计怎么移动对象?BarTender设计条码的时候,发现条码的位置不对,想要移动一下,该怎么移动呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

BarTender条码制作软件怎么使用对象分组功能?

BarTender条码制作软件怎么使用对象分组功能?BarTender设计条码的时候需要使用很多命令,今天我们就来看看分组命令的使用方法,需要的朋友可以参考下
收藏 0 赞 0 分享

聚力卡划算吗?电信推出聚力视频免流卡套餐资费详情介绍

中国联通推出了不少套餐优惠的手机卡,腾讯王卡,蚂蚁宝卡、微博微卡等,让用户获得了实惠。而昨日电信一下子联合不少视频网站也推出了五款专属优惠卡,其中电信就和PPTV视频联合合作推出了一款聚力卡,聚力卡划算吗?本文带来电信推出聚力视频免流卡套餐资费详情介绍
收藏 0 赞 0 分享

爱奇艺爱享卡多少钱?电信牵手爱奇艺视频推出爱享卡套餐资费详情介绍

中国联通推出了不少套餐优惠的手机卡,比如,腾讯王卡,蚂蚁宝卡、微博微卡等,让用户获得了实惠。而就在昨日电信一下子联合不少视频网站也推出了五款专属优惠卡,其中电信就和爱奇艺视频联合合作推出了一款爱享卡,爱奇艺爱享卡多少钱?本文带来爱享卡套餐资费详情介绍
收藏 0 赞 0 分享

天翼视讯看看卡怎么样?中国电信天翼视讯免流手机卡套餐资费详情

日前,中国电信推出了一款号称“资深剧迷必备”的天翼视讯看看卡,那么天翼视讯看看卡多少钱?天翼视讯看看卡怎么样?天翼视讯看看卡划算吗?下面带来中国电信天翼视讯免流手机卡套餐资费详情,一起来了解下
收藏 0 赞 0 分享

今日头条关心卡划算吗?电信头条关心卡套餐资费介绍

中国电信今天更是联合乐视视频、PPTV聚力视频、爱奇艺、天翼视讯、今日头条,一口气推出了五张不同的免流卡,那么今日头条关心卡多少钱?今日头条关心卡划算吗?本文带来电信头条关心卡套餐资费介绍
收藏 0 赞 0 分享

steam怎么使用银联支付 steam银联支付教程

很多朋友不清楚steam怎么使用银联支付?下面小编给大家带来steam银联支付教程,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多