2017-10-15 3 views
1

Wie versteht der Hopper-Disassembler den Namen der Funktion?Swift Mangled Function Name Mapping

Zum Beispiel habe ich eine einfache Swift-Funktion namens function(), und nach dem Zerlegen der ausführbaren Datei mit dieser Funktion Hopper zeigt mir, dass es sich um einen entstellten Namen ist __T04file8functionyy. Ich kann die Position dieser Symbole in der ausführbaren Datei finden, aber ich kann nicht finden, wie es die Adresse der Funktion mit seinem Namen abbildet.

+0

Vielleicht [this] (https://github.com/apple/swift/blob/master/docs/ABI/Mangling.rst) hilft. – Jester

+0

hast du Hopper v4 versucht? Es de-mangeliert den Swift-Code automatisch. So können Sie den verstümmelten und entfleischten Namen zusammen in Hopper sehen. – rustyMagnet

Antwort

1

Sie können den Namen Mangling Specs straight from Apple lesen.

Wenn Sie nur einen schnellen Weg, wollen den Namen demangle, die Folgendes in das Terminal eingeben:

swift demangle __T04file8functionyy 

Ausgang:

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

(Ich bin nicht sicher, ob die verstümmelten Namen, den Sie zur Verfügung gestellt gültig ist)

+0

Danke, aber ich frage nicht, wie funktioniert die Namensänderung, das ist ziemlich einfach. Ich bin interessiert, wo genau in der ausführbaren Datei können wir finden, dass eine Funktion an einer bestimmten Adresse einen bestimmten Namen hat, der in der gleichen Datei gespeichert ist. – hedunky

Verwandte Themen