Hopper反汇编程序如何理解函数的名称是什么?
例如,我有一个名为function()的简单Swift函数,在用该函数反汇编可执行文件之后,Hopper告诉我它的错误名称是__T04file8functionyy。我可以在可执行文件中找到这些符号的位置,但是我无法找到它如何用它的名称映射函数的地址。
答案 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 的特殊结构,它包含可执行文件中函数的地址以及符号表中该函数的错位名称的索引