2010-01-30 250 views

回答

104

您可以漢堡包用牛,但你不能讓牛漢堡包。

+24

+1這是一個反彙編請求的熱鬧報價:) – 2010-01-30 18:02:11

+31

可能很有趣,但不是很有用。 – DMKing 2010-02-01 16:31:19

+1

@DMKing - FWIW問題在發佈時未被標記爲C#,並且我在下一個答案的評論中向S.Mehdi發送了鏈接到.NET Reflector的鏈接。 – 2010-02-02 19:50:39

32

從dll到源代碼的過程稱爲反編譯。它是源語言特有的技術。你能否給我們提供更多關於源語言的信息,以便我們可以向你指出一種給定的技術?

編輯更新

如果C#是所選擇的語言即可看到源使用Reflector.exe的最佳途徑。請注意,這不會讓您回到100%原始來源。它是對原始來源的估計。在某些情況下它會產生準確的輸出。

+0

我在VS2008中使用c#dll – 2010-01-30 17:57:52

+0

@ S.Mehdi,更新我的回答 – JaredPar 2010-01-30 18:02:09

+0

謝謝,我給你投票。 – 2010-01-30 18:11:50

-1

與任何其他編譯的二進制文件相同的方式。

您既可以查看原始來源,也可以使用反編譯器。

2

也許使用.NET反射器或內部檢查,但作爲@JaredPar說要看什麼技術

4

既然你說過你在使用C#.Net,那麼你可以使用.NET Reflector來反編譯DLL,例如C#代碼。正如其他人所說,你會得到原始代碼的公平表示,但可能不是確切的原始C#代碼。

有一個例外 - 有些公司在裝運它們之前在其組件上應用了一個像Salamander .NET Obfuscator這樣的混淆器。這個過程的結果是反編譯代碼難以理解,如果混淆器沒有被使用。有些公司甚至會對組件進行加密。混淆和加密保護知識產權免受偶然攻擊,但無法防止重大的,精心設計的逆向工程工作。鑑於這一現實,並非所有公司都會採用混淆的方式,而不是加密。

你不會說dll來自哪裏,但是如果你購買了它們,如果供應商不希望你在裏面尋找,反射器不會幫你太多。最後,請記住,如果您購買了軟件,反編譯(不論​​dll是否被模糊處理)可能違反了軟件許可協議

1

我知道答案太遲,但可能會在未來幫助某人。
要查看DLL的代碼,請使用Red-gates的.NET Reflector 7.6工具。

2

考慮到我有同樣的問題,所以其他人也會這樣的事實,只有更新我發現的內容纔有意義。所以......

我發現2個用於此目的的免費工具:

  1. dotpeek由JetBrains公司,ReSharper的的製造商 - 漂亮的用戶界面,但我認爲它給的代碼是不是真的讀這麼好。 http://www.jetbrains.com/decompiler/
  2. ILSpy是開源的 - 不是很漂亮,但做得非常好。 http://www.ilspy.net/
0

如果您只是想知道dll程序集中的幾個基本內容,例如類,方法等,

我會建議IL反彙編程序工具由微軟提供。

一般位於: 「C:\ Program Files文件(x86)的\微軟的SDK \的Windows \ v7.0A \ BIN

觀看的幫助手冊。你會得到一些基本的想法。

注意:我沒有在IL Disassember中測試過exe程序集。

7

我能夠從.dll文件

提取代碼

我用http://ilspy.net/

這截屏是一個核心庫實現的(我認爲)

enter image description here

0

最流行的(也是最好的)工具是Reflector,但也有其他.Net反編譯器(如Dis#)。您還可以使用ILDASM反編譯IL,它與.Net Framework SDK工具捆綁在一起。