2012-03-22 40 views
0

我想问一下,是否可以从C++编写的二进制文件中提取确切的变量名?从二进制文件中提取变量名?

+1

这很大程度上取决于编译器以及程序是如何编译的。在某些情况下,有可能在其他情况下部分可能,但在其他情况下则不可能。 – 2012-03-22 19:59:22

回答

3

如果你很幸运,并且在linux/unix上,并且EXE没有被剥离。在这种情况下,它包含符号表,其中包含具有静态存储持续时间的函数/方法和变量的名称。

您可以使用objdumpreadelf来检查目标文件和可执行文件。

+2

@Adban:请注意,这只能得到某些名称,而不是所有名称。所有的名字都是不可能的。 – 2012-03-22 16:13:26

1

不,不可能从C++ DLL或EXE中提取本地变量的名称。这类信息通常存储在关联的PDB中。

+0

...当它们由Microsoft Visual C/C++生成时。 – 2012-03-22 19:58:15

+0

@Alex哪个编译器将正常的本地名称嵌入到DLL/EXE中? – JaredPar 2012-03-22 23:22:44

+0

我还没有研究这个问题一段时间。我不知道。我认为海湾合作委员会在一定程度上。我的评论是关于由MSVC++生成的'.pdb'符号文件。我不认为有任何其他编译器产生'PDBs'。 – 2012-03-22 23:40:20