Swift错位函数名映射

时间:2017-10-15 21:05:38

标签: swift x86 disassembly hopper

Hopper反汇编程序如何理解函数的名称是什么?

例如,我有一个名为function()的简单Swift函数,在用该函数反汇编可执行文件之后,Hopper告诉我它的错误名称是__T04file8functionyy。我可以在可执行文件中找到这些符号的位置,但是我无法找到它如何用它的名称映射函数的地址。

2 个答案:

答案 0 :(得分:4)

您可以阅读名称mangling specs straight from Apple

如果您只想快速解析名称,请在终端中输入以下内容:

swift demangle __T04file8functionyy

输出:

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

(我不确定你提供的错位名称是否有效)

答案 1 :(得分:1)

我发现了这个Mach-O文件格式参考: https://github.com/aidansteele/osx-abi-macho-file-format-reference

所以我的问题的答案是有一个名为 nlist_64 的特殊结构,它包含可执行文件中函数的地址以及符号表中该函数的错位名称的索引