如何从Ada exe文件中获取源代码?

如何从Ada exe文件中获取源代码?,ada,decompiler,Ada,Decompiler,假设我有一个用Ada编写的“hello world”程序: 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; 当我完成编译过程时,我会得到可执行文件;我如何才能将其反

假设我有一个用Ada编写的“hello world”程序:

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;

当我完成编译过程时,我会得到可执行文件;我如何才能将其反转以获取源代码?

对于我所知道的任何编译编程语言,你都不能。

对于我所知道的任何编译编程语言,你都不能。

请参阅有关反编译器的一些一般性评论。特别是,我喜欢这条评论,“你不能解读鸡蛋理论上,将EXE反编译成Ada代码是可能的,但它看起来与原始代码完全不同,也不像真实人类编写的任何Ada。实际上,Google搜索不会找到任何生成Ada的现有反编译器,尽管我看到一本书引用说Ada反编译器曾经存在过。有关反编译器的一些一般性评论,请参阅。特别是,我喜欢这样的评论,“你不能解读一个鸡蛋”。从理论上讲,可以将EXE反编译成Ada代码,但它看起来与原始代码完全不同,也与实际人类编写的任何Ada都不一样。实际上,谷歌搜索不会找到任何生成Ada的现有反编译器,尽管我看到一本书引用说Ada反编译器曾经存在过。你可以(在某种程度上)用编译到JVM的Java和(我怀疑)编译到R1000的Ada来实现它。Java不是编译到机器代码,但是保存了所有函数和变量名的字节码。它使恢复源代码成为可能。您可以将Ada生成的二进制文件反编译为汇编列表,但不能将其编译为原始源代码。现在,这是一个短视的答案。您可以(在某种程度上)使用编译到JVM的Java和(我怀疑)编译到R1000的Ada来完成。Java不是编译为机器代码,而是保存了所有函数和变量名的字节代码。它使恢复源代码成为可能。您可以将Ada生成的二进制文件反编译为汇编列表,但不能将其反编译为原始源代码。