2008-11-20 45 views
0

什麼規則適用於PE(Portable Executable)的導出部分結束的名稱? 粗略地說,我看到以'_'開頭的下劃線,'?'問號或「@」號。這些是什麼意思,其餘的名字呢?'出口'命名約定 - 它是如何工作的?

此外 - 如何將命名約定轉換爲更有用的東西?

回答

3

我想你指的「DLL名稱重整」

name mangling

它用於確保出口名稱是唯一的

你可以指定一個DEF文件,這將使它更容易使用之後

簡單地說,一個DEF文件僅僅是包含以下結構的

一個文本文件210
+1

請注意,德爾福不使用DEF文件。相反,可以在代碼中的「exports」子句中指定名稱。索引也可以在那裏指定。 – 2008-11-20 22:46:42

0

我應該看長一點,要求在此之前 - 正如我剛剛找到一個答案:

這就是所謂的「名字粉碎」,而這裏的地名釋義一些關於它的鏈接:http://en.wikipedia.org/wiki/Name_mangling

我很抱歉打擾你;乾杯!

1

另一件事:Jcl包含另一個非常有用的函數來解碼這些符號。 你可以在JclPeImage中找到它;它被稱爲PeUnmangleName - 這是UndecorateSymbolNameA/W WinAPI的擴展。