2017-10-15 75 views
1

Hopper反彙編器如何理解函數名稱是什麼?Swift mangled函數名稱映射

例如,我有一個簡單的名爲function()的Swift函數,並在使用該函數對可執行文件進行反彙編之後,Hopper告訴我它的名稱爲__T04file8functionyy。我可以在可執行文件中找到這些符號的位置,但是我找不到它如何將函數的地址與其名稱進行映射。

+0

也許[this](https://github.com/apple/swift/blob/master/docs/ABI/Mangling.rst)有幫助。 – Jester

+0

你試過Hopper v4嗎?它會自動消除Swift代碼。因此,您可以在料斗中看到損壞的和重新排列的名稱。 – rustyMagnet

回答

1

您可以閱讀名稱mangling規格straight from Apple

如果你只想要一個快速的方法來還原函數的名稱,請在終端中輸入以下:

swift demangle __T04file8functionyy 

輸出:

_T04file8functionyy ---> filefunction empty-list empty-list 

(我不知道,如果重整名稱您提供爲有效)

+0

謝謝,但我不問如何命名mangling工作,這很簡單。我對可執行文件中的確切位置感興趣,我們可以發現特定地址處的函數具有特定的名稱,該名稱存儲在同一個文件中。 – hedunky