www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]程序運行之后把自己刪除的方法

  近日看到網(wǎng)友詢問如何實現(xiàn)程序運行之后把自己刪除的方法,不知大家對木馬甚么的興趣實在太濃,還是想要這樣的效果:用戶只要一運行程序,可執(zhí)行文件就沒有了,可是程序還是在跑,膽小的只怕要喊"鬼呀!","老婆,快出來看上帝"甚么的

  。其實最典型的用法是寫反安裝程序. 閑來無事,Bear掰到一種還算巧妙的“刪除自己”的方法。

  大家都知道,一般的程序運行的時候,可執(zhí)行文件本身是被操作系統(tǒng)保護的,不能用改寫的方式訪問,更別提在本身還在運行的時侯刪除自己了。在Lu0的主頁上看到一種UNDOCUMENT的方法,通過改變系統(tǒng)底層的文件訪問模式實現(xiàn)刪除自己,那是實在功夫。我看了很是佩服。但是有沒有一種用在MSDN上就能查到的函數(shù)實現(xiàn)呢?有!Jeffrey Richter給我們做了一個范例:

  DeleteMe.CPP

  Module name: DeleteMe.cpp

  Written by: Jeffrey Richter

  Description: Allows an EXEcutable file to delete itself

  **************************************************/

  #include

  #include

  #include

  /////////////////////////////////////////////////

  int WINAPI WinMain(HINSTANCE h, HINSTANCE b, LPSTR psz, int n) {

  // Is this the Original EXE or the clone EXE?

  // If the command-line 1 argument, this is the Original EXE

  // If the command-line >1 argument, this is the clone EXE

  if (__argc == 1) {

  // Original EXE: Spawn clone EXE to delete this EXE

  // Copy this EXEcutable image into the user's temp directory

  TCHAR szPathOrig[_MAX_PATH], szPathClone[_MAX_PATH];

  GetModuleFileName(NULL, szPathOrig, _MAX_PATH);

  GetTempPath(_MAX_PATH, szPathClone);

  GetTempFileName(szPathClone, __TEXT("Del"), 0, szPathClone);

  CopyFile(szPathOrig, szPathClone, FALSE);

  //***注意了***:

  // Open the clone EXE using FILE_FLAG_DELETE_ON_CLOSE

  HANDLE hfile = CreateFile(szPathClone, 0, FILE_SHARE_READ, NULL, OPEN_EXISTI

  NG, FILE_FLAG_DELETE_ON_CLOSE, NULL);

  // Spawn the clone EXE passing it our EXE's process handle

  // and the full path name to the Original EXE file.

  TCHAR szCmdLine[512];

  HANDLE hProcessOrig = OpenProcess(SYNCHRONIZE, TRUE, GetCurrentProcessId());[!--empirenews.page--]

  wsprintf(szCmdLine, __TEXT("%s %d "%s""), szPathClone, hProcessOrig, szPat

  hOrig);

  STARTUPINFO si;

  ZeroMemory(&si, sizeof(si));

  si.cb = sizeof(si);

  PROCESS_INFORMATION pi;

  CreateProcess(NULL, szCmdLine, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);

  CloseHandle(hProcessOrig);

  CloseHandle(hfile);

  // This original process can now terminate.

  } else {

  // Clone EXE: When original EXE terminates, delete it

  HANDLE hProcessOrig = (HANDLE) _ttoi(__targv[1]);

  WaitForSingleObject(hProcessOrig, INFINITE);

  CloseHandle(hProcessOrig);

  DeleteFile(__targv[2]);

  // Insert code here to remove the subdirectory too (if desired).

  // The system will delete the clone EXE automatically

  // because it was opened with FILE_FLAG_DELETE_ON_CLOSE

  }

  return(0);

  }

  看懂了嗎?

  這一段程序思路很簡單:不是不能在運行時直接刪除本身嗎?好,那么程序先復制(CLONE)一個自己,用復制品起動另一個進程,然后自己結(jié)束運行,則原來的EXE文件不被系統(tǒng)保護.這時由新進程作為殺手刪除原來的EXE文件,并且繼續(xù)完成程序其他的功能。

  新進程在運行結(jié)束后,復制品被自動刪除。這又是值得介紹的一個把戲了,注意:

  // Open the clone EXE using FILE_FLAG_DELETE_ON_CLOSE

  HANDLE hfile = CreateFile(szPathClone, 0, FILE_SHARE_READ, NULL,OPEN_EXISTIN

  G, FILE_FLAG_DELETE_ON_CLOSE, NULL);

  這里面的FILE_FLAG_DELETE_ON_CLOSE標志,這個標志是告訴操作系統(tǒng),當和這個文件相關(guān)的所有句柄都被關(guān)閉之后(包括上面這個CREATEFILE創(chuàng)建的句炳),就把這個文件刪除。幾乎所有的臨時文件在創(chuàng)建時,都指明了這個標志。

  另外要注意的是:在復制品進程對原始程序操刀之前,應(yīng)該等待原進程退出.在這里用的是進程同步技術(shù).用HANDLE hProcessOrig = OpenProcess(SYNCHRONIZE, TRUE,GetCurrentProcessId());得到原進程句柄.SYNCHRONICE標志在NT下有效,作用是使OpenProcess得到的句柄可以做為同步對象.復制品進程用WaitForSingleObject函數(shù)進行同步,然后一個DeleteFile,以及進行其它銷毀證據(jù)(Jeffrey說:比如刪目錄)的工作,打完收工!

  程序是基于CONSOLE的,通過傳入的參數(shù)確定是原始的進程還是復制品新進程,并且得到需要操作的目標文件的信息(主要是路徑),復制品放在系統(tǒng)的TEMP目錄(GetTempPath得到),你也可以隨便找個你認為安全的地方(比如:WINDOWSSYSTEM32等等)。

  這里面沒有甚么深的技術(shù).再看其他的一些實現(xiàn)刪除自己的例子,比如說在進程退出前,用fwrite等方法輸出一個.BAT文件,在里面寫幾句DEL,然后WINEXEC一下這個BAT文件即可.

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

Wefi的WeConnect和OpenRoaming提供自動、無縫和安全的連接,為網(wǎng)絡(luò)運營商和用戶提供價值驅(qū)動的網(wǎng)絡(luò)體驗 洛杉磯2022年10月19日 /美通社/ -- W...

關(guān)鍵字: PEN Wi-Fi NEC STORE

南京2022年10月19日 /美通社/ -- 10月16日是第42個世界糧食日,今年世界糧食日的主題是"不讓任何人掉隊,更好生產(chǎn)、更好營養(yǎng)、更好環(huán)境、更好生活",向全社會倡導愛惜糧食,拒絕浪...

關(guān)鍵字: 西門子 SE OS 可持續(xù)發(fā)展

蘇州2022年10月19日 /美通社/ -- 2022年10月18日,全球光學及光電技術(shù)領(lǐng)軍者蔡司在蘇州工業(yè)園區(qū)奠基啟動"鳳棲"工程建設(shè),這是蔡司在國內(nèi)首次購地自建項目,標志著蔡司在中國本土化進程的進...

關(guān)鍵字: 光學 顯微鏡 進程 中國制造

強生公司(Johnson & Johnson)公布最近結(jié)束的季度銷售額和利潤實現(xiàn)增長,即使美元走強和勞動力成本上升削弱了業(yè)績。這家保健用品公司周二下調(diào)了全年銷售指引,因美元相對于全球其他貨幣的上漲帶來的持續(xù)影響。...

關(guān)鍵字: JOHNSON SE OS

蔡司在蘇州工業(yè)園區(qū)奠基啟動"鳳棲"工程建設(shè),這是蔡司在國內(nèi)首次購地自建項目,標志著蔡司在中國本土化進程的進一步深化與擴展。 "鳳棲"工程建成后,蔡司蘇州將成為蔡司在中國更高規(guī)格的研發(fā)與制造的重要據(jù)點,為其工業(yè)質(zhì)量、研究顯...

關(guān)鍵字: 顯微鏡 進程

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎(chǔ)單元,承載著生存與活動的最基本功能。而對于理想空間的解構(gòu)意義卻在物理性容器之外,體現(xiàn)出人們對于空間和生活深層關(guān)系的思考,同時也塑造著人與空間的新型連接...

關(guān)鍵字: 溫度 BSP 智能化 進程

2019年上映的《復仇者聯(lián)盟4:終局之戰(zhàn)》無疑是漫威和超級英雄粉絲心中的劇痛,該片中最受觀眾喜愛的鋼鐵俠為了打敗滅霸,一個響指也奪走了自己的生命。影片最后,復聯(lián)成員們還為鋼鐵俠舉辦了一個葬禮,一眾英雄出席讓人淚奔。鋼鐵俠...

關(guān)鍵字: 漫威 HELLO TI OS

通過第二項3nm設(shè)計選用擴展技術(shù)領(lǐng)先地位 第三季度強勁的貿(mào)易和設(shè)計選用反映出我們結(jié)合了IP和定制硅的混合業(yè)務(wù)模式 自2022年9月1日起,OpenFive首次并入集團 盡管宏觀環(huán)境困難,但管理層仍對業(yè)務(wù)...

關(guān)鍵字: BSP ALPHA PEN Silicon

上海2022年10月17日 /美通社/ -- 近日,第17屆中國研究生電子設(shè)計競賽(下簡稱:研電賽)全國總決賽評審工作圓滿完成。今年,來自全國63個高校的114支參賽隊伍報名了TI企業(yè)命題,創(chuàng)下歷史新高。并且,...

關(guān)鍵字: TI 德州儀器 OS 模擬

(全球TMT2022年10月13日訊)Bossard柏中推出的亮燈揀選系統(tǒng)(Pick by Light and Put to Light)幫助客戶減少尋料和補貨時間。這種“摘果式”燈光揀選系統(tǒng)采用LED信號燈引導物料員...

關(guān)鍵字: SAR 亮燈揀選系統(tǒng) OS LIGHT

嵌入式教程

6897 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉