我正在研究一個複製保護軟件,我試圖圍繞任何類型的可執行文件(託管和非託管)創建一個包裝。然後這個包裝器將嘗試執行包裝的可執行文件,而不會像正常一樣將其寫入光盤,然後使用Process.Start()
執行它。包裝和保護可執行文件
我使用.NET 4.0大會和AppDomain中得到它的工作,但我已閱讀並測試,它只會用.NET可執行工作。我怎樣才能繞過並執行任何類型的可執行文件,而無需將其「裸」寫入驅動器?
我可以在加密的壓縮文件中執行它嗎? 或MemoryMappedFile?
我正在研究一個複製保護軟件,我試圖圍繞任何類型的可執行文件(託管和非託管)創建一個包裝。然後這個包裝器將嘗試執行包裝的可執行文件,而不會像正常一樣將其寫入光盤,然後使用Process.Start()
執行它。包裝和保護可執行文件
我使用.NET 4.0大會和AppDomain中得到它的工作,但我已閱讀並測試,它只會用.NET可執行工作。我怎樣才能繞過並執行任何類型的可執行文件,而無需將其「裸」寫入驅動器?
我可以在加密的壓縮文件中執行它嗎? 或MemoryMappedFile?
真的是在浪費你的時間。您不能阻止某人複製您的可執行文件,獲取您的代碼或其他任何東西。即使您可以完美地保護磁盤上的可執行文件,只要它開始運行,就可以使用調試程序對可執行文件進行轉儲,即使是從內存映射文件轉儲。這就是Xenocode或者.NET Reactor或者其他任何打包器這樣的產品被擊敗的原因。
更好的選擇是停下來思考你真正想要達到的目標。你擔心違反許可協議的人嗎?你擔心你的軟件出現在海盜灣嗎?如果你製作有用的軟件,這兩件事情都是可能的,而不是可能性。如果合適,用版權保護你的軟件,用專利保護你的算法。那麼你有法律追究違規者。
對不起,你的泡沫破滅了,但沒有任何技術解決方案不能被擊敗。軟件狗可以被模擬,網絡服務可以被修補,加密密鑰可以被嗅探等。花時間讓軟件變得更好,而不是去保護那些無法保護的東西。
AFAIK正常可執行文件在執行前未寫入光盤。我不知道.Net。無論如何,所有可執行文件都需要在機器代碼的RAM中(這意味着未加密和未壓縮)才能執行。 – m0skit0
@ m0skit0 - .NET應用程序的工作方式與正常的可執行文件類似。 –
我不認爲你可以用Process.Start()啓動它 - 你可以將程序加載到內存中,然後對其啓動地址進行jmp操作,但是這樣做可能存在各種可怕的安全問題。 –