2013-07-19 20 views
0

我想在我的程序關閉後,在我的可執行文件中替換或添加一些字節,而不使用輔助寫入程序。 我知道,通常這是不可能的,但如果這是必要的?如何使程序能夠在運行時寫入自己的可執行文件?

我知道一個名爲Unlocker的程序,它可以刪除當前正在使用或甚至正在運行的文件。它以某種方式刪除阻止描述符。我認爲它會將自己的DLL注入到每個正在運行的進程中。

所以,如果它注入自己的DLL到一切,並以某種方式刪除阻塞描述符,也許我可以爲自己的可執行文件做同樣的事情?至少,我不需要爲程序注入任何東西,因爲我開發了它。

解決方案也可以在C/C++中,我只是從自己的DLL中導入DLL所需的函數。

+3

您是否打算在安裝了AntiVirus程序的PC上運行此應用程序? –

+0

是:O P.S.解鎖器以某種方式避免受到懲罰。 – Kosmos

+0

您可以使用FileStream輕鬆打開一個exe文件,然後使用BinaryWriter進行編輯。但是,即使您可以這樣做,您也需要知道exes存儲在其中的可移植可執行文件格式,以瞭解您正在執行的操作。至於在運行時編輯程序,可以通過獲取它們的進程,然後調用Windows核心函數來獲取進程代碼的入口點,但即使你管理它,你也必須知道該進程是如何佈置的以及你必須知道機器代碼才能進行適當的編輯。 – Pharap

回答

3

最簡單的做法通常不是這樣做,而是假裝你做了。

例如,聲稱刪除文件時,將其移動到同一磁盤上的另一個目錄通常要容易得多。這只是複製元數據(目錄條目)的問題。

使用該課程:「更改」您的可執行文件,將其重命名(允許運行時),將其複製回其原始名稱(正式爲新文件,未使用),然後使用舊名稱更改新文件。

+0

謝謝。這不是問題的答案,但是因爲沒有其他人可以使用,所以仍然可以使用:+1並被接受 – Kosmos

相關問題