2010-08-28 81 views
3

是否有任何工具可以將去混淆代碼重命名爲.NET dll的可讀代碼?重命名去混淆代碼

混淆=轉換原變量名,命名空間非可讀變量名,還改變控制流,使其很難餅乾猜測的原代碼

解混淆混淆=逆過程。將不可讀的變量名稱,名稱空間轉換爲可讀的名稱空間,如A1,A2(可以將原始名稱轉換爲原始名稱),這使得跟蹤和理解原始源代碼變得很容易。

+10

你可能會發現這個社區不願意去混淆。有少數使用案例可以將反混淆視爲符合道德標準。 – kbrimington 2010-08-28 05:35:01

+1

你有這樣做的合法理由嗎? – Justin 2010-08-28 07:31:39

+3

說穿了:你需要了解這個代碼的所有者不希望你反彙編它的前額大小是多少? – 2010-08-28 12:55:57

回答

0

你的意思是看符合的dll內的代碼嗎?如果是這樣,我使用redgate的.net Reflector。

+0

是的,但我想要一個工具來重命名不可讀的變量名或...在可疑的模糊dll中。 – Ehsan 2010-08-28 09:29:07

7

您可以再次對其進行模糊處理,但禁用重載等選項。這樣,成員將被命名爲A,B,C ...,而不是所有被命名爲A(使用重載)或具有不可打印的名稱。

此外,IL級優化器通常可以撤消控制流混淆並刪除用於使反編譯器崩潰的死代碼。

一旦你有可編譯的代碼,使用Visual Studio的重命名重構來引入名稱。工具無法自動猜出合適的名稱。

+0

我確定有一些工具用於此目的,但我無法通過Google搜索找到它們,您正在解釋混淆過程,但我的問題明確提到了DE-obfuscation(這意味着將不可讀的變量名稱轉換爲可讀取的變量名稱A1,A2,B3,... – Ehsan 2010-08-28 20:32:30

+2

混淆器通常有選擇新名稱的方式,如果禁用重載和不可打印的名稱,那麼混淆已經混淆的程序集實際上會使名稱更具可讀性 – Daniel 2010-08-28 23:47:05

+0

這是一個好主意我應該檢查出 – Ehsan 2010-08-29 14:17:11

1

否否否則爲什麼您的意見中存在混淆工具?你所謂的可讀的變形名稱不再存在於模糊處理的程序集中,因爲它們已被重命名爲不可讀的,而且沒有工具可以猜出原始名稱是什麼。

+1

我不想原來的名字請注意,我只是想轉換回非r的問題eadable變量名到可讀的不是原來的名字我很明顯,我不能將它們轉換回它的原始名稱,我想變量像A1,A2,B3 ... – Ehsan 2010-08-28 20:27:24

+0

您仍然沒有提供任何合理的解釋這樣做的動機。混淆是一個用於保護知識產權的過程。通過混淆他的程序集,代碼的作者顯然不希望其他人去混淆它。 – 2010-08-28 21:50:54

+0

我想確保沒有人能破解我混淆的源代碼,你是否也需要我父親的ssn呢?如果您不知道解決方案,則不必回答 – Ehsan 2010-08-29 14:20:44