2017-10-15 16 views
1

Comment le désassembleur de trémie comprend-il le nom de la fonction? Par exemple, j'ai une fonction Swift simple appelée function(), et après avoir désassemblé l'exécutable avec cette fonction, Hopper me montre que son nom est __T04file8functionyy. Je peux trouver l'emplacement de ces symboles dans le fichier exécutable, mais je ne peux pas trouver comment il mappe l'adresse de la fonction avec son nom.Correspondance du nom de la fonction mutée Swift

+0

Peut-être que [this] (https://github.com/apple/swift/blob/master/docs/ABI/Mangling.rst) aide. – Jester

+0

avez-vous essayé Hopper v4? Il démultiplie automatiquement le code Swift. Donc, vous pouvez voir le nom mutilé et démembré ensemble dans Hopper. – rustyMagnet

Répondre

1

Vous pouvez lire les spécifications de modification de nom straight from Apple.

Si vous ne voulez un moyen rapide de demangle le nom, tapez la commande suivante dans le Terminal:

swift demangle __T04file8functionyy 

Sortie:

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

(Je ne sais pas si le nom fourni mutilée vous est valide)

+0

Merci, mais je ne demande pas comment ça fonctionne, c'est assez simple. Je suis intéressé par où exactement dans l'exécutable nous pouvons trouver qu'une fonction à une adresse spécifique a un nom spécifique, qui est stocké dans le même fichier. – hedunky