2010-02-16 72 views
2

是否可以反編譯.NET 2.0二進制文件(* .exe)的,以某種可讀的代碼?或者,如果沒有,只需從中提取一些信息(例如方法名稱,調試信息等)?反編譯.NET 2.0二進制

+0

請記住,你*可能*最終會違反許可協議...... – 2010-02-16 16:25:42

回答

15

你可能想看看Reflector,它應該告訴你的裝配C#或IL。

編輯:

帶反光的成本增加,我已經切換到ILSpy我的日常需求。

+1

反射器是我曾經用於倒轉的最佳工具:)) – 2010-02-16 16:27:04

+0

工程就像一個魅力,謝謝你:)。 – pako 2010-02-16 16:48:29

+0

Reflector也適用於轉換代碼,比如從VB.NET轉換爲C#。 – 2010-02-16 16:57:30

3

刪除的exe到ILDASM或點淨反射應該做的伎倆。

0

是。首先所有的.net庫都有類型信息清單。他們可以使用反射或通過使用反射鏡等工具進行問題詢問。看看你需要查看的類的system.reflection命名空間。

1

我會引用自己從這個question earlier today

你永遠無法回到確切 同一來源,因爲有關於保存在 編譯的代碼沒有 元數據。

但是你可以從出來的 彙編代碼重新創建代碼。

看看這本書,如果你對這些東西感興趣 :逆向: 逆向工程的祕密。

編輯

一些編譯器-101在這裏,如果你 定義與另一個詞 一個編譯器而不是技術爲「編譯」, 那會是什麼?

答:翻譯

編譯器翻譯語法/ 短語,你已經寫進另一個 語言C編譯器轉化爲 大會甚至機器代碼。 C#代碼 被翻譯成IL等等。

你的可執行文件只是一個 翻譯的原文/ 語法的,如果你想「扭轉爲」 因此「它翻譯回」,你會 最有可能還不如你有得到相同的結構 在開始時。

如果 你從英語譯成德文 和從德國回英語更現實生活中的例子是, 的森泰斯結構最 有可能是不同的,可能 可以使用其他的話,但意思,上下文中, 很可能沒有改變。

也是一樣的編譯器/ 翻譯,如果你在C到ASM, 的邏輯是一樣的,它只是一個 的閱讀它不同的方式(和 當然它的優化)。

關於C#,您已經獲得了許多很棒的工具,如Reflector。但是,如果代碼被混淆,您將在閱讀時遇到問題。