• <button id="c6aq4"></button>
    教程:如何刪除正在運行的EXE文件本身

    教程:如何刪除正在運行的EXE文件本身

    學習資料巨鯊網2023-06-21 15:03:3019A+A-

    這里我們不會介紹利用系統漏洞或注入外部進程等技巧。 這些方法通常不可靠。 我們使用常規、簡潔、實用的方法來實現我們的目標。

    最簡單的方法之一是這樣的: ::.( io.,null,0x4/**/) 讓系統下次重啟時刪除自己。 這種方法存在一些問題。 例如,更新操作需要立即刪除自身。 如果是,如果用戶卸載后重新安裝,重啟后就會不幸發現EXE被刪除了。

    網上經常提到的另一種方法是使用批處理來刪除自身。 我們先看看怎么寫進去,首先我們希望在我們的程序退出的時候執行這段代碼。 這樣就很方便了,只要你訂閱了這個事件,就一直調用(""); 在退出進程之前觸發所有事件。 我們看下面的代碼:

    ;

    ("",(){

    如果();

    =..io.();

    =/*

    @

    :環形

    刪除“%s”

    “%s”

    讀/秒/q“%s”

    bat 啟動exe程序帶參數_bat批處理調用exe程序_php調用exe程序

    */

    .save(path+"\del.bat",.(.(bat,io.,io.,path),65001,0))

    .(路徑+"\del.bat",,,0x0/**/);

    });

    用戶界面;

    =win.form(文本=””;右=759;=469)

    。展示()

    贏。();

    如果你不想刪除IDE(當然上面的代碼通過判斷已經避免了這樣悲慘的后果),請先生成一個EXE文件進行測試。 運行后,會顯示一個正常的窗口。 當我們關閉窗口時,EXE文件會自動消失。 向上。 上面的原理是通過.運行一個臨時創建的bat文件,并指定參數隱藏運行批處理的黑窗(當然也可以用.popen創建管道)。

    這種方法看起來寫文章不錯,但是用在軟件產品上還是不夠。 首先,這段自刪除代碼需要EXE進程先退出,而我們在做更新、卸載這些操作時,退出后仍然可以進行。 什么? !

    如果我們需要一個EXE能夠在啟動后刪除自身bat批處理調用exe程序,并且去掉EXE文件本身的占用狀態以及EXE文件所在目錄的占用狀態,這時候我們還有一個辦法,先復制EXE到臨時目錄,然后啟動 對于臨時創建的EXE文件,為了方便對原應用程序目錄的操作,我們還需要將原來的命令行參數原封不動的傳遞給這個臨時進程,同時我們還需要點當前目錄和應用程序目錄到原來的啟動目錄。 EXE文件所在目錄,即io.("./")io.("/")_ARGV的值不會改變。

    此外,我們還需要在所有操作完成后清理臨時創建的EXE文件。 當然,你不必這樣做,但整潔是一個好習慣。 通過刪除這個臨時 EXE 文件,我們可以使用前面介紹的兩種方法(::.bat批處理調用exe程序,或運行批處理),對于臨時 EXE 文件 - 我們之前提到的幾個缺點都不是問題。

    當然說起來簡單,但是這個過程還是有些復雜的。 為了共享相同的內存和事件對象,兩個EXE進程需要同步,臨時進程需要等待父進程完全退出后才能執行下面的代碼,這樣可以保證我們可以刪除原來的EXE文件任何時候,而不是發現我們的代碼有奇怪的錯誤。

    bat批處理調用exe程序_bat 啟動exe程序帶參數_php調用exe程序

    我把這些操作全部封裝成一個庫模塊,它的用法很簡單,示例如下:

    溫度;

    .temp.run(

    (, 參數) {

    io.();

    用戶界面;

    =win.form(text="EXE文件刪除自演示";right=759;=469)

    。展示()

    贏。();

    }

    生成一個EXE文件,運行EXE文件,你會發現程序運行了,EXE文件消失了。

    請注意,您需要升級到更新的版本才能運行上面的示例,我改進了庫以使其更易于使用。

    點擊這里復制本文地址 以上內容由巨鯊網整理呈現,請務必在轉載分享時注明本文地址!如對內容有疑問,請聯系我們,謝謝! 一米陽光
    qrcode

    巨鯊網 © All Rights Reserved.  巨鯊網 www.buyxanaxonline.net 微信:網站地圖 VBXR
    Powered by Z-BlogPHP Themes by jvsha.com
    聯系我們| 關于我們| 留言建議| 網站管理| |

    日本久久久
  • <button id="c6aq4"></button>