C ++ имя mangling вручную

Я пишу скрипт для дизассемблера IDA Pro в Python, используя плагин idapython . Используя это, я могу заполнить пробелы, когда автоматический анализ IDA не соответствует требованиям.

Одна из областей, в которой я столкнулся, – это имена мест / функций с (из-за отсутствия лучшего термина) «красивые имена». Ниже приведен пример того, что я имею в виду:

Шаблоны симпатичных имен IDA

idapython и сам IDA Pro позволяют мне вводить базовые имена функций C-ish. Если я ввожу запрещенные символы (например, оператор разрешения области), они заменяются символами подчеркивания. Однако , если я ввожу вручную искаженное имя (например, __ZN9IOService15powerChangeDoneEm ), IDA Pro превзойдет это для меня.

Отсюда мой вопрос: как я могу генерировать искаженные имена для прохождения через idapython ? Доступна ли библиотека имен? Доступен ли в Python? Моя единственная надежда вырвать из g++ и работать над этим?

4 Solutions collect form web for “C ++ имя mangling вручную”

Я, наконец, обошел немного, чтобы копать.

К сожалению, я не смог найти инструмент, но нашел ресурсы.

Если все, что вы хотите, это mangle names в модере gcc3, тогда знайте, что gcc3 использует Itanium C ++ ABI, который имеет стандартизованную схему переключения имен. Я нашел два документа:

  • Страница ISI Itanium C ++
  • Документ для звонков в формате PDF, в котором описываются схемы различных компиляторов

Для справки, оба они взяты со страницы Википедии в названии Mangling .

Один простой (alebit hacky) метод должен был скомпилировать файл C ++ с нужным вам символом, а затем извлечь необходимые символы из таблицы символов файла .o. С небольшой работой это может быть красиво написано.

Вот статья, в которой объясняется, как mangling выполняется визуальным компилятором. Для mangling, сделанного gcc, я думаю, вы можете найти информацию в источнике пакета binutils .

Вы можете использовать библиотеку Clang AST, которая имеет класс MangleContext.

http://clang.llvm.org/doxygen/classclang_1_1CodeGen_1_1MangleContext.html

 
Interesting Posts for Van-Lav

Сценарий Python для генерации отчета JUnit из другого результата тестирования

Итеративно (или рекурсивно?) Фильтровать каталог и копировать результаты в новый каталог

Массив Python умножается

Python – возвращает, возвращает None и вообще не возвращает

Выбор интерфейсного / интерпретатора для научного кода

Удалять нецифровые значения из серии

ImportError: нет модуля с именем Crypto

Предупреждение о плохом отступе Eclipse

Как загрузить видео с YouTube с помощью API youtube?

Автоматически создавать графический интерфейс из XML-схемы

Возможно ли иметь статические утверждения типа в PyCharm?

Путь к текущему файлу зависит от того, как я выполняю программу

Почему Python имеет функцию формата, а также метод форматирования

Как бороться с не-ASCII предупреждением при выполнении кода Save на Python, отредактированном с помощью IDLE?

странное поведение закрытия питона

Python - лучший язык программирования в мире.