2011-11-06 121 views
3

是否有可能使用Windows將文件讀入內存(將數據保存在字節數組中),從文件系統中刪除原始文件並從內存中執行它?在內存中讀取exe文件並執行它


編輯

我的目標是要保護我的Java代碼反向ENGINERING。

我在C++中編寫了一個啓動器,它將我的加密jar文件解密並啓動它。 小問題是,我必須在文件系統中的某個地方寫入解密的jar文件,因此可以輕鬆捕獲和反編譯......有沒有辦法來防止這種情況?

+4

您可能想要在網絡上對NX位和DEP(數據執行保護)做更多的研究。 – Hossein

+1

這種能力的意義何在? –

+6

在浪費時間來「保護」你的代碼之前,你應該知道無法真正保護你的代碼。你可以讓攻擊者更難獲取它,但你不能讓它變得不可能。 – Sylence

回答

8

不,不可能這樣做。沒有系統調用說:「把我的記憶當作一個新過程的形象,只用它的那一部分」。

您可以將代碼加載到內存中並在當前進程中跳轉到該內存,但這是一件很難的事情,因爲您必須處理所有的重定位。

至於在Java特定部分:

你可以embed a Java interpreter within your C++可執行文件。您可以編寫自己的Java類加載器(通過JVM的C++接口),它將從加密的Jar文件加載類。這樣你可以避免將未加密的Jar文件寫入磁盤。當然,任何有調試器的人都可以在內存中看到它...

+0

謝謝,我已經嘗試過使用自定義類加載器,但是Spring和IoC存在問題。 – blow

+0

通過嵌入式JVM和本機類加載器,無需編寫未加密的Jar即可工作。我懷疑你可以使用「常用」類加載器加載spring和IoC,如果這比使用自定義本地加載器更容易。 – Flexo

相關問題