2010-11-24 115 views
4

您認爲如何將我的所有課程,屬性,方法等重命名爲______?這與C#混淆器(如Dotfuscator或Eazfuscator)對我的應用程序的作用有多接近,還有什麼我可以手動(在合理的時間內)使我的代碼儘可能混淆?之所以我想這樣做,是因爲混淆器會混淆我的數據綁定,因爲它們不會混淆使用ClickOnce發佈的應用程序(除非我使用清單和其他不知道如何處理的東西而且沒有人真的知道它是否總能正常工作)。手動混淆代碼?

+1

我覺得這似乎是一個很大的工作。 – 2010-11-24 04:34:00

+2

那裏有很多混淆器。你確定他們沒有一個能滿足你的需求嗎?手動混淆非常容易出錯...... – SteveCav 2010-11-24 04:34:03

+1

我很可惜將會保持這樣一個怪物的開發。它一定會在TheDailyWTF.com做一篇很棒的文章。 – 2010-11-24 04:40:56

回答

2

你應該混淆你的應用程序。爲了避免任何數據綁定錯誤,一些混淆器現在提供了silverlight/wpf混淆默認值,這將幫助您避免這些錯誤。 混淆後,您可以使用mage.exe製作clickonce安裝程序
http://msdn.microsoft.com/en-us/library/xc3tc5xx.aspx
嚴重不要做重命名。你讓你的生活更加困難。事實上和他們一樣艱難,你不想竊取你的代碼。
它只是一個bat文件,使構建後的clickonce。

2

這是你的一個奇怪的想法。我假設你的開發環境支持重構,重命名變量當然是一種流行的重構操作。看看你是否可以編寫腳本。如果你不能,考慮一下像AutoIt。看看這是哪裏?根據重構操作表達重命名,編寫腳本並將其編譯爲預編譯步驟。

通過這種方式,您可以保持源代碼不被混淆,但可以執行所有您想要的混淆操作,並且您知道該代碼可以工作。

1

支持ClickOnce是否絕對需要?還有其他分發應用程序的方式。考慮編譯代碼,使用您選擇的混淆器,然後使用類似Inno Setup的東西來構建安裝程序。

我強烈建議你做不是直接在代碼中重命名的東西。如果您必須遵循此路徑,請嘗試製作項目副本(一次處於其最終狀態),在IDE中打開副本,並使用重構工具重命名類,變量和方法。如果你沒有複製,你的代碼將很難在以後更改。

0

Babel.NET的免費版本對我來說工作得非常好,它混淆了函數的內部代碼,並重命名所有私人和內部類和成員。我們使用反射,序列化和數據綁定,並沒有混淆其中的任何一個。
它還支持與MSBuild的集成,我相信這將有助於處理後端ClickOnce一代。

2

爲什麼我想這樣做的原因是因爲混淆器會搞亂我的數據綁定

我不知道你的數據綁定工作,但如果你硬編碼屬性名稱作爲C#源代碼中的字符串,那麼我會用lamdas替換硬編碼的字符串來標識屬性。這也是更重構的。

Get property name inside setter