【问题标题】:Swift mangled function name mappingSwift 错位函数名称映射
【发布时间】:2018-03-27 08:46:02
【问题描述】:

Hopper 反汇编器如何理解函数的名称?

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

【问题讨论】:

  • 也许this 有帮助。
  • 您尝试过 Hopper v4 吗?它会自动消除 Swift 代码。因此,您可以在 Hopper 中同时看到已损坏和未损坏的名称。

标签: swift x86 disassembly hopper


【解决方案1】:

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

所以我的问题的答案是有一个叫做nlist_64的特殊结构,它包含可执行文件中函数的地址和符号表中该函数的重整名称的索引.

【讨论】:

    【解决方案2】:

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

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

    swift demangle __T04file8functionyy
    

    输出:

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

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

    【讨论】:

    • 谢谢,但我不是在问名称修改是如何工作的,这很简单。我感兴趣的是我们可以在可执行文件中的确切位置找到特定地址的函数具有特定名称,该名称存储在同一个文件中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2018-10-24
    • 2019-05-05
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多