2013-08-20 46 views
0

我基本知道元數據在c#.net和我最近聽說.net混淆。 我想知道如果我使用任何混淆器來使我的程序集不被理解,它會混淆IL,但它是否也會更改元數據?那麼我可以將它作爲參考添加到我的項目中,並查看類和其成員的真實姓名嗎?如果我使用.NET混淆器,metaData是否會被更改?

+0

你爲什麼不試試? [This](http://ilspy.net/)也可以幫助你。 – I4V

+0

我一直在使用ILspy,我試圖使用.net混淆器的免費版來混淆我的一個Dll,但它說「Dotfuscator Community Edition不能重命名泛型類型或方法」,並且失敗:( –

+0

混淆對於絕大多數..你究竟想要做什麼? –

回答

1

現在大多數混淆器可以基本上爲你重寫你的程序集。大部分的功能包括:

重命名(工具供應商往往會提供一個選項來創建地圖,這樣你可以重命名的成員手動映射到原來的成員名稱與像反射工具)

字符串加密 - 這會加密代碼中的字符串常量(存儲在肉體數據的字符串堆區域中),所以如果您在Reflector中打開該文件,它通常會顯示加密的。在使用它們之前,加密的值仍然會被解密。

IL混淆 - 在IL的控制流重寫,使麪條代碼和難以遵循

也有去遠遠超出了其他工具,但他們都只是提高什麼需要扭轉的東西吧。

如果您設置了對混淆的dll/exe的引用,您將看到混淆/重命名的成員,但是如果供應商提供了映射(最多),您可以確定哪個是哪個。如果您需要使用可讀的API,您通常也可以使用未被混淆的接口。一個例子是Reflector - 插件API是所有沒有被混淆的接口,但是具體類的所有實現都被混淆了。

1

請嘗試使用Confuser,因爲這裏仍然沒有Deobfuscator。

http://confuser.codeplex.com/

你不會看到的類名正常和方法,因爲它哈希他們,同時也更多。事後從代碼中取出任何東西基本上是不可能的。

+0

強大的工具,謝謝:) –