国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

EXE程序的自刪除實現
2006-06-06   

程序的自刪除已經不是什么新鮮的話題了,它廣泛運用于木馬、病毒中。試想想,當你的程序還在運行中(通常是完成了駐留、感染模塊),它就自動地把自己從磁盤中刪掉,這樣一來,就做到了神不知鬼不覺,呵呵,是不是很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:MYDIRSelfDelete.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 下起作用。

(注:Gary Nebbett 的方法,hume已經給出了例子,所以我就不重復了,請到他的網站 http://humeasm.yeah.net 下載。)

以上的方法都是前輩高人的研究總結,可不是我原創的,不過最后我給出一個 Win32ASM 例子,演示一下用批處理文件刪除程序自身的方法。

;******************************************************
;程序名稱:程序自刪除示例,適用于Win9x/WinMe/Win2000/WinXP
;作者:羅聰
;日期:2002-10-23
;出處:http://www.luocong.com(老羅的繽紛天地)
;注意事項:如欲轉載,請保持本程序的完整,并注明:
;轉載自“老羅的繽紛天地”(http://www.luocong.com
;******************************************************

.386
.model flat, stdcall
option casemap:none

include masm32includewindows.inc
include masm32includekernel32.inc
include masm32includeshell32.inc
include masm32includeuser32.inc
includelib masm32libuser32.lib
includelib masm32libkernel32.lib
includelib masm32libshell32.lib

DeleteExecutableBF PROTO

.code
main:
invoke DeleteExecutableBF
invoke ExitProcess, NULL

;********************************************
; 模塊功能:用批處理文件刪除自身
; 入口參數:無
; 出口參數:無
;********************************************
DeleteExecutableBF proc
LOCAL hFile WORD
LOCAL len WORD
LOCAL hHeap WORD
LOCAL pszUnsetupPathname :DWORD
LOCAL pszUnsetupPath :DWORD
LOCAL pszBatFilePathname :DWORD
LOCAL pBatFile :DWORD

jmp nextcode

szBatFileName BYTE "DelUS.bat", 0
szOpen BYTE "open", 0
szBKSlash BYTE "", 0
L1 BYTE ":Repeat", 13, 10, 0
L2A BYTE "del """, 0
L2B BYTE """", 0
L3A BYTE 13, 10, "if exist """, 0
L3B BYTE """ goto Repeat", 13, 10, 0
L4 BYTE "rmdir """, 0
L5 BYTE """",13, 10, "del """, 0
L6 BYTE """",13, 10, 0

nextcode:
; 為字符串分配堆:
invoke GetProcessHeap
mov hHeap, eax
invoke HeapAlloc, hHeap, NULL, 4 * MAX_PATH + 1000
mov pszUnsetupPath, eax
add eax, MAX_PATH
mov pszUnsetupPath, eax
add eax, MAX_PATH
mov pszUnsetupPathname, eax
add eax, MAX_PATH
mov pszBatFilePathname, eax
add eax, MAX_PATH
mov pBatFile, eax

; 創建一個批處理文件,用于刪除我們的exe文件。當exe文件被刪除后,這個批處理文件會自動刪除自己,以及它所在的目錄。

; 得到 temp 目錄的路徑:
invoke GetTempPath, MAX_PATH, pszBatFilePathname

invoke lstrcat, pszBatFilePathname, addr szBatFileName
invoke CreateFile, pszBatFilePathname, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL or FILE_FLAG_SEQUENTIAL_SCAN, NULL
mov hFile, eax
.if (hFile != INVALID_HANDLE_VALUE)

; 得到我們的 exe 文件的全路徑(包括文件名):
invoke GetModuleFileName, NULL, pszUnsetupPathname, MAX_PATH

; 得到我們的 exe 文件的路徑(不包括文件名):
invoke lstrcpy, pszUnsetupPath, pszUnsetupPathname

; 找到路徑最后的 ’’ 并把它改成0
mov edx, pszUnsetupPath
mov ecx, edx
.repeat
mov al, byte ptr [edx]
.if al == 92 ; ""
mov ecx, edx
.endif
inc edx
.until al == 0
mov byte ptr [ecx+1], 0

; Bat 文件的內容:
; :Repeat
; del "C:Win95ADGDelSelf.exe"
; if exist "DelSelf.exe" goto Repeat
; rmdir "C:Win95ADG"
; del "c:\%temppath%DelUS.bat"
invoke lstrcat, pBatFile, addr L1
invoke lstrcat, pBatFile, addr L2A
invoke lstrcat, pBatFile, pszUnsetupPathname
invoke lstrcat, pBatFile, addr L2B
invoke lstrcat, pBatFile, addr L3A
invoke lstrcat, pBatFile, pszUnsetupPathname
invoke lstrcat, pBatFile, addr L3B
invoke lstrcat, pBatFile, addr L4
invoke lstrcat, pBatFile, pszUnsetupPath
invoke lstrcat, pBatFile, addr L5
invoke lstrcat, pBatFile, pszBatFilePathname
invoke lstrcat, pBatFile, addr L6

; 創建 bat 文件:
invoke lstrlen, pBatFile
mov len, eax
invoke WriteFile, hFile, pBatFile, len, addr len, NULL
invoke CloseHandle, hFile

; 現在在后臺執行我們的 bat 文件:
invoke ShellExecute, NULL, addr szOpen, pszBatFilePathname, NULL, NULL, SW_HIDE

.endif

; 釋放堆:
invoke HeapFree, hHeap, NULL, pszUnsetupPath
return:
; 結束啦!
ret

DeleteExecutableBF endp

end main
;******************** over ********************
;by LC

熱詞搜索:

上一篇:跨站腳本執行漏洞詳解
下一篇:Windows操作系統完美維護技巧(1)

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
国产亚洲精品aa午夜观看| 91国产免费观看| 天天操天天干天天综合网| 一区二区三区中文在线观看| 亚洲欧洲日韩女同| 亚洲欧美日韩在线| 亚洲欧美日本韩国| 一区二区国产视频| 丝袜美腿成人在线| 另类欧美日韩国产在线| 国产在线看一区| 成人精品视频一区二区三区| jvid福利写真一区二区三区| 不卡av在线免费观看| 97久久精品人人澡人人爽| 91免费精品国自产拍在线不卡| 91在线播放网址| 精品视频123区在线观看| 国产精品久久久久久户外露出| 精品卡一卡二卡三卡四在线| 日韩写真欧美这视频| 一本一道久久a久久精品综合蜜臀| 色偷偷久久人人79超碰人人澡| 欧美亚洲精品一区| 亚洲综合色成人| 亚洲国产精品激情在线观看| 亚洲成人一区二区| 欧美片网站yy| 成人av午夜电影| 色老汉一区二区三区| 6080午夜不卡| 国产精品毛片久久久久久| 亚洲国产aⅴ成人精品无吗| 激情丁香综合五月| 色妞www精品视频| 精品国产一区二区三区久久影院| 欧美国产精品专区| 日日夜夜精品视频免费| 国产美女精品在线| 欧美日韩一级片在线观看| 欧美一区二区三区四区在线观看| 久久久久久9999| 日本伊人午夜精品| 色综合久久中文字幕综合网 | 国产精品不卡一区二区三区| 亚洲成人一区二区在线观看| 从欧美一区二区三区| 日韩一区二区在线免费观看| 亚洲美女视频在线| 国产精品一区二区果冻传媒| 在线亚洲精品福利网址导航| 久久亚洲免费视频| 美国十次综合导航| 欧美精品丝袜久久久中文字幕| 日本一区二区三级电影在线观看| 五月婷婷色综合| 在线免费av一区| 国产精品国产三级国产普通话99 | 最新国产の精品合集bt伙计| 天天综合网 天天综合色| voyeur盗摄精品| 欧美国产成人在线| 国产九九视频一区二区三区| 4438x成人网最大色成网站| 亚洲摸摸操操av| 95精品视频在线| 国产精品福利一区| 国产aⅴ综合色| 国产日韩av一区| 国产一区二区三区在线观看免费视频 | 午夜视频一区二区三区| 国产白丝精品91爽爽久久| 日韩欧美黄色影院| 麻豆成人91精品二区三区| 欧美精品黑人性xxxx| 午夜日韩在线电影| 欧美区一区二区三区| 亚洲成人一区在线| 欧美一区二区三区视频在线| 日韩不卡免费视频| 日韩一区二区三区四区| 日韩经典中文字幕一区| 9191成人精品久久| 青青草97国产精品免费观看| 欧美一区二区网站| 国产综合色产在线精品| 久久久久久久精| www.久久久久久久久| 亚洲欧美区自拍先锋| 欧美日韩日日骚| 美女国产一区二区三区| www亚洲一区| 国产91高潮流白浆在线麻豆 | 日韩精品国产精品| 欧美精三区欧美精三区| 蜜臀精品一区二区三区在线观看| 91精品国产色综合久久不卡电影 | av在线不卡免费看| 亚洲色图欧洲色图| 91.com视频| 国产成人免费av在线| 亚洲欧美激情小说另类| 91精品婷婷国产综合久久性色 | 精品捆绑美女sm三区| 粉嫩绯色av一区二区在线观看| **网站欧美大片在线观看| 欧美性猛交xxxx黑人交| 蜜臀久久久99精品久久久久久| 国产色婷婷亚洲99精品小说| 色哟哟国产精品| 久久99精品国产麻豆婷婷| 国产精品美女久久久久av爽李琼| 色系网站成人免费| 激情综合色综合久久| 亚洲精品视频在线看| 26uuu国产日韩综合| 欧美视频精品在线观看| 国产91在线观看丝袜| 婷婷久久综合九色综合绿巨人| 精品日韩一区二区| 精品视频全国免费看| 成人免费电影视频| 久久机这里只有精品| 亚洲图片欧美色图| 国产精品欧美久久久久一区二区| 欧美日韩国产高清一区二区| 成人自拍视频在线观看| 日本aⅴ精品一区二区三区| 亚洲欧美在线观看| 久久精品一区二区| 日韩一级完整毛片| 一本高清dvd不卡在线观看| 麻豆国产91在线播放| 一区二区三区波多野结衣在线观看| 亚洲精品在线观看视频| 91精品视频网| 欧美精品一级二级| 日本二三区不卡| 成+人+亚洲+综合天堂| 国产剧情一区在线| 久久不见久久见免费视频1| 五月综合激情网| 一区二区三区在线免费视频| 国产精品毛片久久久久久久| 国产亚洲精品久| 精品少妇一区二区三区| 日韩免费看的电影| 欧美一区二区三区电影| 欧美一区二区视频在线观看2020| 在线中文字幕一区二区| 一本色道久久综合狠狠躁的推荐 | 97久久久精品综合88久久| 国产精品白丝av| 激情丁香综合五月| 国产露脸91国语对白| 国产激情一区二区三区四区| 国产一二精品视频| 岛国精品一区二区| 成人精品电影在线观看| 成人精品免费看| 91蝌蚪国产九色| 欧美性受xxxx| 91精品国产91久久久久久最新毛片 | 麻豆精品在线观看| 另类小说综合欧美亚洲| 国内精品国产三级国产a久久| 国内精品伊人久久久久影院对白| 国产综合色精品一区二区三区| 国产丶欧美丶日本不卡视频| 粉嫩aⅴ一区二区三区四区| 大尺度一区二区| 欧美无乱码久久久免费午夜一区| 欧美午夜精品理论片a级按摩| 欧美区在线观看| 久久久久久影视| 亚洲美女免费视频| 久久精品国产亚洲高清剧情介绍 | 精品奇米国产一区二区三区| 日韩欧美中文字幕公布| 久久久精品国产免费观看同学| 国产精品久久综合| 日韩高清一级片| 粉嫩绯色av一区二区在线观看| 色婷婷亚洲综合| 日韩欧美的一区二区| 中文字幕在线观看一区| 亚洲国产成人av网| 黄页网站大全一区二区| 色香蕉久久蜜桃| 精品国产自在久精品国产| 亚洲女同女同女同女同女同69| 亚洲超碰97人人做人人爱| 国产九色sp调教91| 欧美日韩亚洲综合在线| 久久九九99视频| 亚洲成av人片在线观看无码| 国产成人免费9x9x人网站视频| 欧美日韩小视频| 中文字幕一区二区三区视频| 蜜桃一区二区三区在线观看|