亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關(guān)注微信公眾號

黑客技巧談之EXE程序的自刪除實現(xiàn)
2007-01-29   賽迪網(wǎng)

程序的自刪除已經(jīng)不是什么新鮮的話題了,它廣泛運用于木馬、病毒中。試想想,當你的程序還在運行中(通常是完成了駐留、感染模塊),它就自動地把自己從磁盤中刪掉,這樣一來,就做到了神不知鬼不覺,呵呵,是不是很cool呢?

自刪除(Self Deleting)最早的方法是由 Gary Nebbett 大蝦寫的,太經(jīng)典了,不能不提。程序如下:

#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 鉆了系統(tǒng)的一個漏洞,他的程序是關(guān)閉了 exe 文件的 IMAGE(硬編碼為4),然后用 UnmapViewOfFile 解除了 exe 文件在內(nèi)存中的映象,接著通過堆棧傳遞當前程序的 Handle 給 DeleteFile() ,實現(xiàn)了程序的自刪除。

Gary Nebbett 果然不愧為 WIN 系統(tǒng)下頂尖的底層高手。那么是否還有其他的方法實現(xiàn)程序的自刪除呢?答案是肯定的。

在 Win9x/ME 下,還可以利用 WININIT.INI 的一些特性。在 WININIT.INI 文件里面有一個節(jié) [Rename] ,只要在里面寫入要 “Nul=要刪除的文件”,那么下次系統(tǒng)重新啟動的時候,該文件就會被自動刪除了。以下是一個例子:

[Rename]
NUL=c:\SelfDelete.exe

利用這個特性,我們就可以在程序中對這個 ini 文件進行操作。值得注意的是,當需要自刪除的文件多于一個的時候,就不能使用 WritePrivateProfileString 來實現(xiàn),因為這個 API 會阻止多于一個“NUL=”這樣的入口在同一個節(jié)里面出現(xiàn),所以最好還是自己手動實現(xiàn)。

第三種方法是利用批處理文件。先讓我們做一個試驗:

創(chuàng)建一個 a.bat ,給它寫入以下內(nèi)容:

del %0.bat

現(xiàn)在運行它吧,屏幕一閃而過,最后留下一串字符:“The batch file cannot be found”。這時候它已經(jīng)從你的硬盤中消失了。

這說明,批處理文件是可以刪除自己的,于是我們可以把這個小技巧運用在自己的程序當中:

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

它會重復(fù)不斷地搜索是否有 SelfDelete.exe 這個文件,直到刪除了它為止;當刪除完畢后,這個批處理文件就會把自己刪除。

(注:本方法可以支持所有的 Windows 版本,即 Win9x/Me/NT/2000/XP)

用批處理文件的方法有一個缺陷,就是會突然彈出一個 DOS 窗,冷不防的嚇人一跳,不過據(jù)我所知這是目前唯一可以在 WinXP 下起作用的方法。當然,最理想的方法是用 Gary Nebbett 的那種,不過它的缺陷是沒法在 WinXP 下起作用。

熱詞搜索:

上一篇:提供幾個有用的Javascript驗證腳本
下一篇:不同寬帶接入下的路由器如何進行設(shè)置

分享到: 收藏