L'obtention de déformation nom de demangled nom
Est-il un moyen pour obtenir le retour à la déformation du nom de demangled nom de g++.
Par exemple , j'ai le demangled nom func(char*, int)
, que dois-je faire pour obtenir la déformation nom je.e _Z4funcPci
de retour?
Ma question est g++ spécifiques.
- Excellent lien, mais est-il un moyen de savoir si c'est up-to-date et de l'autorité? Le nom de domaine semble être à un site web à l'Université de Winnipeg.
- Technique américaine universités ont la bonne habitude de ne pas mettre indésirable sur leur site officiel(s).
- Sur le contenu de la page que la page des liens vers: "Ce document a été généré le 27 août 1999". Aussi, Winnipeg, au Canada si je me souviens bien 😛
- correct. J'aurais dû dit "américain". Eh bien, nous allons essayer de trouver une nouvelle version alors.
- aussi, cette SI Q/A pointe vers le même site 🙂
- Vrai. J'ai maintenant disparu et il a plu sur cette réponse de la parade trop. :-/
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement utiliser g++ pour compiler une fonction vide avec la signature vous avez besoin et d'en extraire le nom de qui. Par exemple:
donne de sortie
qui est je crois ce que vous avez besoin. Assurez-vous d'inclure toute fichiers d'en-tête, car ils affectent la manière dont les symboles sont déformés.
c++filt
pour l'autre direction.IFS::Profiler::create(IFS::Handle hdl)
.Basé sur la Bojan Nikolic approche, voici une meilleure script:
mutilation.bash:
Utilisation:
Mais comme pour les constructeurs et destructeurs, rappelez-vous qu'il existe C0 C1 C2 et D0 D1 D2 ceux.
abc::def::ghi()
avec le script d'origineCe qui est pire, parfois, vous ne peut pas mangle un nom, parce que vous devez obtenir plus de résultats.
Voir https://reverseengineering.stackexchange.com/q/4323/4398 (il y a plusieurs destructeurs dans VFT, et tous sont demangled comme
ClassName::~ClassName()
). (La même chose s'applique pour les constructeurs, j'ai vu C0 et C2 constructeurs.)D'autre part, la réponse des références de l'Itanium ABI: https://refspecs.linuxbase.org/cxxabi-1.75.html#mangling-type où la déformation est spécifié.
L'itanium-abi Haskell paquet: il ne fonctionne pas pour moi (Mai 2014)
Il y a un paquet Haskell
http://hackage.haskell.org/package/itanium-abi
qui promet à la fois demangling et d'amputation, mais j'ai pu courir seul le demangling:
Installation sur Ubuntu Precise:
Ensuite, vous exécutez
ghci
et aprèsimport ABI.Itanium
etimport Data.Either
, vous bénéficiez de:Il est
mangleName
, mais il faut unDecodedName
qui est une structure de données plutôt qu'une chaîne, et que la structure de données est produite que pardemangleName
(sauf si j'ai oublié quelque chose). J'espère que cela va aller mieux dans une version future.Le cliquetis code
Je n'ai pas essayer le cliquetis de code.