2016-03-06 81 views
0

假設我有一個「Hello World」程序寫在阿達:如何從Ada exe文件獲取源代碼?

with Ada.Text_IO; -- Bibliothèque 

-- Déclaration de la procédure "Hello" 
procedure Hello is 
begin 
    -- Imprimer "Hello, world!" à l'écran 
    Ada.Text_IO.Put_Line("Hello, world!"); 
end Hello; 

當我完成編譯過程中,我得到的可執行文件,我怎麼能扭轉這種找回源代碼

+1

請參閱http://coding.derkeiler.com/Archive/C_CPP/comp.lang.c/2012-06/msg00383.html瞭解一些一般性意見反編譯器,特別是我喜歡這樣的評論:「你不能解開一個雞蛋」。理論上,可以將EXE反編譯成Ada代碼,但它不會看到像原文一樣興奮,看起來不像任何真人會寫的Ada。實際上,Google搜索並沒有啓動任何生成Ada的現有反編譯器,儘管我看到一個說明Ada反編譯器一次存在的書報價。 – ajb

回答

6

你?對於我所知道的任何已編譯的編程語言來說,都不是。

+0

你可以(在某種程度上)用編譯到JVM的Java和(我懷疑)用Ada編譯到R1000來完成它。 –

+0

Java未編譯爲機器碼,而是保存了所有函數和變量名稱的字節碼。它使恢復源代碼成爲可能。您可以將Ada生成的二進制文件反編譯爲彙編列表,但不能反編譯爲原始源代碼。 –