2010-03-10 193 views

回答

1

我有一個.exe文件,我需要知道程序開發的語言。

一般來說這是不可能的。每種語言都可以編輯他們的版本「你好,世界!」將給定的平臺(或可執行格式)定位到相同的可執行文件(字節爲字節)。

而且還有一個技巧來查看代碼(基於該.exe文件)?

不,見上文。但是,您可以嘗試使用您選擇的decompiler

1

的高級語言轉換成低級別的.EXE的編制通常是一個單向的過程 - 這是幾乎不可能可靠地提取從可執行關於原語有意義的信息,一旦這個過程完成。你可能會很幸運,在二進制文件中找到一些可識別的線索,當然也可以找到一個伴隨文件(比如.pdb),它可以產生關於原始語言的線索。

但是,.EXE包含的是(通常)彙編語言,有時可以將其反編譯爲程序的高級表示形式。請注意,這是永遠不會給你一個指令精確的源文件 - 結果很可能是很「羅嗦」,難以遵循,只是因爲什麼編譯器擺在首位沒有 - 這是把一個高水平'概念性'複雜的語言轉換爲低級指令流,丟棄了CPU執行代碼所不需要的大部分上下文提示。

1

我將不得不抵觸每個人,說明「將高級語言編譯爲低級別.EXE通常是單向過程」。由於並非所有的可執行文件都被編譯爲原始程序集

因爲情況並非總是如此。一個很好的例子是C#(.net),其中文件被編譯爲IL而不是原始程序集。在IL的情況下,您可以反彙編到源代碼(即使進程正在內存中運行,例如從全局程序集緩存中拉出)

如果文件被直接編譯爲原始程序集,那麼通常會有一些指示語法/結構中的原始語言。儘管這更像編譯器的副產品,但它更像是它自己的語言。

3

我遇到過這個問題。我只是在記事本中打開.exe文件。我發現編譯器名稱和版本。希望這可以幫助別人..