我見過幾個網站在談論注入DLL的問題(比如http://www.codeproject.com/KB/DLL/DLL_Injection_tutorial.aspx),但我正在努力如何讓EXE工作。任何幫助/提示將不勝感激。你可以使用python將代碼/ exe注入到進程中嗎?
我知道如何解釋它的最好方法是在內存中執行exe的「RunPE」。這些幫助有用?
我見過幾個網站在談論注入DLL的問題(比如http://www.codeproject.com/KB/DLL/DLL_Injection_tutorial.aspx),但我正在努力如何讓EXE工作。任何幫助/提示將不勝感激。你可以使用python將代碼/ exe注入到進程中嗎?
我知道如何解釋它的最好方法是在內存中執行exe的「RunPE」。這些幫助有用?
您可以按照此處所述使用Reflective DLL Injector。 Metasploit項目使用它來加載其meterpreter插件。 AFAIK這是注入DLL的唯一方法,因爲MS官方不支持從內存「注入」,只能從文件系統加載。
在低層次上,沒有什麼東西禁止你分配內存區域,在那裏加載代碼,標記它是可執行的。
請注意,這些技術都不是Python特有的,甚至與Python相關 - 這是一個win32問題。
如果您問如何將代碼注入正在運行的Python進程中,您想要的是https://fedorahosted.org/pyrasite/。
我會推薦這本書http://www.amazon.com/Gray-Hat-Python-Programming-Engineers/dp/1593271921 - 特別是編寫自己的調試器的章節,但它涵蓋了上述的metasploit和其他工具。
你說的是在Python中用更多的東西重新實現UPX。 您需要執行的操作: 將所有VirtualAlloc調用更改爲VirtualAllocEx調用。 將所有Loadlibrary調用更改爲loadlibraryEX調用。 實施搬遷修理。
更好的方法可能是調整UPX輸出DLL而不是可執行文件。然後使用一些python DLL注入代碼將其引入另一個進程。如果你想這樣做,你將會使用CType。公正的警告......
您可能先從描述您要解決的問題開始。一般來說,將一個完整的EXE「注入」到另一個進程是不可能的,特別是不能用於Python。可能有更好的方法來做你想做的事。 – 2011-06-06 01:01:37
我的理解是,可以在一個進程中替換一個函數指針,以便在內存中的其他位置引用一個函數。此外,我的理解是,現代操作系統通過內存訪問控制通常禁用了此類功能。 – motoku 2011-06-06 01:28:19