EXE程式的自刪除實現

2022-04-04 10:27:45 字數 1088 閱讀 2754

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

自刪除(self deleting)最早的方法是由 gary nebbett 大蝦寫的,太經典了,不能不提。程式如下:

試試編譯它,執行。怎麼樣?從你的眼皮底下消失了吧?是不是很神奇?

gary nebbett 鑽了系統的乙個漏洞,他的程式是關閉了 exe 檔案的 image(硬編碼為4),然後用 unmapviewoffile 解除了 exe 檔案在記憶體中的映象,接著通過堆疊傳遞當前程式的 handle 給 deletefile() ,實現了程式的自刪除。

gary nebbett 果然不愧為 win 系統下頂尖的底層高手。那麼是否還有其他的方法實現程式的自刪除呢?答案是肯定的。

在 win9x/me 下,還可以利用 wininit.ini 的一些特性。在 wininit.ini 檔案裡面有乙個節 [rename] ,只要在裡面寫入要 「nul=要刪除的檔案」,那麼下次系統重新啟動的時候,該檔案就會被自動刪除了。以下是乙個例子:

利 用這個特性,我們就可以在程式中對這個 ini 檔案進行操作。值得注意的是,當需要自刪除的檔案多於乙個的時候,就不能使 用 writeprivateprofilestring 來實現,因為這個 api 會阻止多於乙個「nul=」這樣的入口在同乙個節裡面出現,所以最 好還是自己手動實現。

第三種方法是利用批處理檔案。先讓我們做乙個試驗:

建立乙個 a.bat ,給它寫入以下內容:

這說明,批處理檔案是可以刪除自己的,於是我們可以把這個小技巧運用在自己的程式當中:

它會重複不斷地搜尋是否有 selfdelete.exe 這個檔案,直到刪除了它為止;當刪除完畢後,這個批處理檔案就會把自己刪除。

(注:本方法可以支援所有的 windows 版本,即 win9x/me/nt/2000/xp)

用批處理檔案的方法有乙個缺陷,就是會突然彈出乙個 dos 窗,冷不防的嚇人一跳,不過據我所知這是目前唯一可以在 winxp 下起作用的方法。當然,最理想的方法是用 gary nebbett 的那種,不過它的缺陷是沒法在 winxp 下起作用。

EXE程式的自刪除實現

程式的自刪除已經不是什麼新鮮的話題了,它廣泛運用於木馬 病毒中。試想想,當你的程式還在執行中 通常是完成了駐留 感染模組 它就自動地把自己從磁碟中刪掉,這樣一來,就做到了神不知鬼不覺,呵呵,是不是很cool呢?自刪除 self deleting 最早的方法是由 gary nebbett 大蝦寫的,太...

程式自刪除

之所以可以使用批處理來實現檔案自刪除,是因為批處理有乙個特別的地方就是 批處理提供了自己刪除自己的命令 del 0這個命令,批處理執行完後,就會把自身檔案刪除了,而且不放進 站。所以,有了這個關鍵技術作為前提,使用批處理方式實現程式的自刪除,就好理解了。這樣,程序建立起來,執行批處理檔案。等批處理檔...

Winform單個exe實現自更新的技巧

winform實現軟體公升級的方法很多,比如採用clickonce發布 update.exe 主程式.exe。而本文講的是只有乙個exe的情況下巧用vbs指令碼執行命令實現自殺並更新的方式,網上關於這種方式的資料較少。實現步驟 服務端 我使用的是webapi 提供兩個方法 1.getversion....