2011-11-01 47 views
1

這裏將被用於反射代碼的例子:該軟件是混淆什麼是在混淆完成後通過反射在c#中查找類/屬性的最佳方法?

var i = typeof(Program).Assembly.CreateInstance("test.Program"); 

後,代碼顯然會停止工作。

我想通過搜索類的屬性,不混淆後已經做了更改找到辦法解決它。我已經用type.GUID嘗試過了,但是當我運行調試版本時,我得到一個GUID,並且在混淆完成後的版本中,guid被更改。

我正在使用Eazfuscator.NET進行模糊處理。

我想避免使用屬性標記類/方法,如果可能的話。

什麼工作的任何想法?

+1

出於好奇,避免使用屬性標記類和方法的動機是什麼? –

+5

我總是困惑於那些提出這樣的問題的人:「我想做X,但我想避免簡單而明顯的解決方案,而且我不會告訴你爲什麼。」我們不是心靈的;如果你有理由避免一個明顯的解決方案,比如「用一個屬性標記以避免混淆」,我們當然不知道這是什麼原因。想必你不僅僅喜歡艱難地做事情的挑戰。 –

+4

此外,這個問題有點弄巧成拙。你想使用混淆器,大概是爲了擊敗你的攻擊者,但你希望它足夠弱,以至於可以擊敗它。如果你能找到一種方法來可靠地擊敗混淆器,那麼你不應該依靠它來保護你免受你擔心的任何攻擊! –

回答

1

不希望混淆器擊敗攻擊者。只是讓理解代碼的工作更加困難。我希望這是作爲高級盜版保護的一部分

混淆後;郵編,加密和做你想要的任何你的大會。然後創建另一個包裝項目,並將您的程序集作爲資源添加到該項目中。附加到AppDomain.CurrentDomain.AssemblyResolve事件(在您的新項目中),並且每當發生無法解析的彙編事件時,請閱讀您的資源(解密,解壓縮等)並返回實際彙編。

你也可以嘗試混淆你的最終包裝的應用程序。

安全性如何?至少,你可以讓攻擊者變得更加困難。

0

我沒有確切的答案,但ILSpy的來源可以幫助你。

2

我敢肯定有很多方法可以遍歷所有類型,並找到你要找的人,但我想到的東西都會生產出有史以來最易於維護的代碼。

一些混淆器(我們使用深海,我不知道Eazfuscator)允許阻止特定類別的混淆,使這些反射。在DeepSea的情況下,這是由屬性指示的,但這些不會/不應該(我從未檢查過:o)將其加入最終裝配。

如果把反思作爲「外部過程看你集結號」和模糊處理「防止外的進程從看你組裝」你真的從做你想做的事停止自己。

相關問題