2011-11-04 52 views
3

我正在研究一個複製保護軟件,我試圖圍繞任何類型的可執行文件(託管和非託管)創建一個包裝。然後這個包裝器將嘗試執行包裝的可執行文件,而不會像正常一樣將其寫入光盤,然後使用Process.Start()執行它。包裝和保護可執行文件

我使用.NET 4.0大會和AppDomain中得到它的工作,但我已閱讀並測試,它只會用.NET可執行工作。我怎樣才能繞過並執行任何類型的可執行文件,而無需將其「裸」寫入驅動器?

我可以在加密的壓縮文件中執行它嗎? 或MemoryMappedFile?

+0

AFAIK正常可執行文件在執行前未寫入光盤。我不知道.Net。無論如何,所有可執行文件都需要在機器代碼的RAM中(這意味着未加密和未壓縮)才能執行。 – m0skit0

+0

@ m0skit0 - .NET應用程序的工作方式與正常的可執行文件類似。 –

+0

我不認爲你可以用Process.Start()啓動它 - 你可以將程序加載到內存中,然後對其啓動地址進行jmp操作,但是這樣做可能存在各種可怕的安全問題。 –

回答

13

真的是在浪費你的時間。您不能阻止某人複製您的可執行文件,獲取您的代碼或其他任何東西。即使您可以完美地保護磁盤上的可執行文件,只要它開始運行,就可以使用調試程序對可執行文件進行轉儲,即使是從內存映射文件轉儲。這就是Xenocode或者.NET Reactor或者其他任何打包器這樣的產品被擊敗的原因。

更好的選擇是停下來思考你真正想要達到的目標。你擔心違反許可協議的人嗎?你擔心你的軟件出現在海盜灣嗎?如果你製作有用的軟件,這兩件事情都是可能的,而不是可能性。如果合適,用版權保護你的軟件,用專利保護你的算法。那麼你有法律追究違規者。

對不起,你的泡沫破滅了,但沒有任何技術解決方案不能被擊敗。軟件狗可以被模擬,網絡服務可以被修補,加密密鑰可以被嗅探等。花時間讓軟件變得更好,而不是去保護那些無法保護的東西。

+0

+1;如果你的軟件是值得盜版的,它將是無論你的保護。如果不是,那麼就沒有必要保護。 – tenfour

+0

我想你的權利,我會重新考慮這一點。這個想法是通過一個包裝來控制exe的啓動。但我看起來像你說的那樣不可能。好吧,我猜想另一個想法是加密exe文件,然後封裝器會解密它,並在第一次啓動時將其寫入光盤。請注意,包裝從服務器獲得批准來執行此操作。 – Wilhelm

相關問題