2015-04-29 58 views
1

第1步: 我想要壓縮一些我的.NET DLL文件(一些內置類庫)作爲Zip7z和受密碼保護的主題,我可以通過一些實用程序爲7z應用程序等窗口手動執行此操作。使用壓縮的.Net DLL的方法,而其解壓縮到硬盤

應用方案之前,該項目的文件:

  • App.exe
  • A.dll
  • B.dll

應用場景的第一步驟的最後文件:

  • App.exe
  • X.zip密碼保護&壓縮歸檔文件

X.zip被包含A.dll & B.dll


第2步:現在,我想知道有沒有辦法提取A.dll & B.dll直接到RAM(不是硬盤)並使用他們的方法App.exe ???

我想保持這些Dll文件在這種情況下的安全,並防止用戶從HDD拷貝主題,所以我想要加載主題到RAM後使用他們的功能。


編輯:

我usualy使用這些技術:C#WPF.Net 4.5

+1

也許['Assembly.Load(byte [])'](https://msdn.microsoft.com/en-US/library/h538bck7%28v=vs.110%29.aspx)是你的尋找。 – JimmyB

+3

如果'App.exe'可以獲取二進制文件,那麼確定的用戶也可以。你確定你不只是在引入複雜性,不僅會對實際用戶產生負面影響嗎?保持代碼安全的唯一方法是根本不將它交給用戶(即,將其交給服務器並讓客戶端應用程序與服務器通話) –

+0

我使用另一種方法來保護App.exe。我的dll文件包含一些對我們很重要的信息... – RAM

回答

2

我想你可以使用AppDomain.AssemblyResolve事件。

當您的程序集被請求時,將它們從內存中的zip文件解壓縮到一個字節數組中。使用Assembly.Load(byte [])重載從內存中的字節數組加載程序集,然後返回程序集。

參見https://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve%28v=vs.110%29.aspxhttps://msdn.microsoft.com/en-us/library/h538bck7(v=vs.110).aspx

+2

正確的「如何將程序集加載到內存部分」,仍然如果我們談論安全問題的一部分;我不認爲有一種方法可以防止用戶獲取內存快照並將程序集存儲到磁盤/分析它。只有部分實現這一點的方法是晦澀難懂的dll。 –

+0

是的,但有一些方法可以打破obsfuculate。特別我想保證我的資源和dll的副本從HDD ... – RAM

2

至於在以存儲器中的負載我可以看到,@Maarten具有在使用Assembly.Load(byte\[\])方法方面好點。

我的意見和建議是不要直接在代碼/ dll中存儲任何敏感的東西。我讀過的地方,我留下了同樣的說法:

「有沒有祕密。NET」

所以,你總是可以反編譯的IL,逆向工程之類的說話,不管你如何巧妙地混淆了。你只能節省時間,當談到聰明的用戶。

(部分)解決方案:

現在,對於解決方案,如果我理解正確,你正在試圖保護一些敏感信息的DLL內,該部署給用戶之後,在離線的方式,你不想要他們可以訪問,關於這個話題有很多問題和更多可能的解釋,但是這一切都歸結爲一個問題andful,你可以嘗試:

  • 把敏感信息在一個單獨的文件有訪問限制
  • 例如,你可以把存儲加密的字符串一個COM或C++ DLL。非託管dll不可分解,但是,專家們當然可以理解dll的反彙編。
  • 您可以使用一些內部進程分貝,但有人仍然可以嗅出它的連接,並獲取數據

...等等等等。

結論:

最後,我認爲,一個更安全的選擇可能是提供軟件的重要組成部分作爲服務,某種訪問的API,它可以保護和訪問敏感信息通過它,而不是將其包含在您的應用程序中,如果可能的話。

+0

是的,我同意你在_「.NET中沒有祕密」_,但有時我們希望確保我們的方法和我們的資源在一起。我有一個解決方案來保護'EXE'文件,並且我通常在我的'EXE'中包裝我的'DLLs',但是在這個項目中我想在​​主題之間有幾個'EXE'並共享我的'DLLs',所以我必須保持主題以外'EXE'的。現在我想要在這些DLL和資源上有一個安全的級別。現在我將'Assembly.Load(byte \ [\])'與'DotNetZip'庫一起使用。另外我對'內部進程內方法感興趣',但是我對它沒有足夠的瞭解,然後我使用'Assembly.Load' – RAM

+0

如果你需要在不同的應用程序之間共享一些數據,你可以嘗試類似於Memory已映射的文件:https://msdn.microsoft.com/en-us/library/dd997372.aspx也許? – TheBoyan