2012-03-22 41 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