Ich schreibe ein Skript für den IDA Pro Disassembler in Python mit dem %Co_de% Plugin. Damit kann ich die Lücken füllen, in denen IDAs Auto-Analyse nicht funktioniert.
Ein Bereich, in dem ich ratlos bin, ist die Benennung von Orten / Funktionen mit (aus Mangel an einem besseren Begriff) "hübschen Namen". Ein Beispiel dafür, was ich meine, ist unten dargestellt:
idapython
und IDA Pro erlauben mir nur die Eingabe von grundlegenden C-ish-Funktionsnamen. Wenn ich unzulässige Symbole eingabe (z. B. den Scope-Auflösungsoperator), werden sie durch Unterstriche ersetzt. Allerdings , wenn ich einen entstellten Namen manuell eingegeben habe (z. B. idapython
), wird IDA Pro dies für mich verschönern.
Daher meine Frage: Wie kann ich verstümmelte Namen erzeugen, um __ZN9IOService15powerChangeDoneEm
zu durchlaufen? Gibt es eine Namens-Mangling-Bibliothek? Ist eine in Python verfügbar? Ist meine einzige Hoffnung, die mangelnde Funktionalität aus idapython
zu reißen und das zu umgehen?
Endlich habe ich ein wenig gegraben.
Leider konnte ich kein Tool finden, aber ich habe Ressourcen gefunden.
Wenn Sie nur Mangle-Namen in der gcc3-Mode möchten, dann sollten Sie wissen, dass gcc3 das Itanium C ++ ABI verwendet, das ein standardisiertes Namens-Mangling-Schema hat. Ich habe zwei Dokumente gefunden:
Als Referenz kommen beide von der Wikipedia-Seite auf Name Mangling .
Hier ist ein Artikel , in dem erklärt wird, wie der Visual Compiler das Mangeln durchführt. Ich glaube, dass Sie die Informationen in der Quelle des binutils
-Pakets finden können, wenn Sie mit gcc arbeiten.
Sie können die Clang AST-Bibliothek verwenden, die eine MangleContext-Klasse hat.
Tags und Links python c++ name-mangling ida