2010-07-05 63 views
1

我有一個桌面(winforms)應用程序,我正在尋找.net鏈接器,將程序集鏈接到彙編程序級別(低於IL)以防止逆向工程。另一種解決方案也是可以接受的。 沒有人知道這樣的鏈接器?.net應用程序的鏈接器

+2

你確定一個鏈接是你真的以後?如果您的最終目標是防止逆向工程,那麼可用的混淆器和類似的解決方案比用於.NET的實際連接器要多。換句話說,如果您的目標是將您的應用程序鏈接到本機代碼,那麼您可能沒有足夠接近該目標來將其稱爲解決方案。 – 2010-07-05 11:21:49

+0

你是對的,我對鏈接器感興趣的唯一原因是安全。問題在於混淆器不夠穩固。 – 2010-07-05 11:44:20

回答

2

什麼你要找的是一個混淆。它會編譯代碼,以便它仍然按照它應該執行的操作,但是如果反編譯它,它對大多數人來說都是不可理解的。

請注意,任何試圖使其100%安全的嘗試都會失敗,所有您可以爭取的努力都是儘可能地讓它變得更加堅硬。

有很多的解決方案,以不同的方式做到這一點:

注意,最後一個是不是混淆器,它虛擬化了你的申請。這樣做的一些好處是,到達底層代碼有點困難,但它主要是解決不同問題的產品,即需要將應用程序從其他已安裝的應用程序中分離出來(即不需要需要安裝.NET,沒有衝突的註冊表設置等)

+0

謝謝,但那些混淆器/合併它沒有鏈接。 acctual鏈接在運行時完成 – 2010-07-05 11:18:39

+0

這完全正確。 .NET沒有那麼多真正的連接器。我建議你看看Roman,Mono的答案,它有一個鏈接器。但正如他所說,沿着這條路線行駛時有很多限制。我會看看你正在嘗試解決的核心問題集,可能你需要一個不同的解決方案,而不是一個真正的鏈接器。 – 2010-07-05 11:20:55

0

XenoCode有一個很酷的工具,可以幫助你做到這一點:

http://www.xenocode.com

+0

謝謝,但它導致勺服務器。我不確定你的意思。 – 2010-07-05 11:19:59

+0

顯然他們改了名字。但該應用程序仍然做用戶想要的。 – 2010-07-05 11:41:43

0

.Net Reactor是你在找什麼我猜(這是可以破解 - 但比經典混淆更難)。

2

你可能想看看在Mono的AOT(的提前)編譯:

有一些限制,但:你顯然可以」 t編譯使用CLR動態特徵,反射等的程序集。

+0

謝謝,我正在調查它 – 2010-07-05 11:21:46

0

混淆可能會有利於您的需求。但它仍然可以破解。 我不知道你要求的任何程序和實用程序,但我有一個建議給你。 如果您需要保護並非所有應用程序代碼,但只保留關鍵部分,則可以在C++/C中實現本節,並使用Platform Invoke與非託管代碼進行互操作。 Jeffrey Richter推薦了這種方法。