DIRE: A Neural Approach to Decompiled Identifier Naming

Тема в разделе "WASM.SOURCES & 2LZ", создана пользователем galenkane, 21 ноя 2023.

  1. galenkane

    galenkane Active Member

    Публикаций:
    0
    Регистрация:
    13 янв 2017
    Сообщения:
    269
    DIRE: A Neural Approach to Decompiled Identifier Naming: --> PDF <--

    "Decompilers can reconstruct much of the information that is lost during the compilation process (e.g., structure and type information).
    Unfortunately, they do not reconstruct semantically meaningful variable names, which are known to increase code understandability.
    We propose the Decompiled Identifier Renaming Engine (DIRE), a novel probabilistic technique for variable name recovery that uses
    both lexical and structural information recovered by the decompiler."

    On the github: --> DIRE <--

    Эта научная статья представляет подход под названием DIRE (Decompiled Identifier Renaming Engine) для присвоения информативных имен переменным в декомпилированном коде.
    Вкратце, вот основные моменты:
    1. Декомпиляторы могут восстанавливать много информации, потерянной в процессе компиляции (например, структуру и типы), но они не могут восстановить семантически значимые имена переменных, которые важны для понимания кода.
    2. DIRE - это новый вероятностный подход для восстановления имен переменных, который использует как лексическую, так и структурную информацию, полученную от декомпилятора.
    3. Предложен новый метод генерации корпусов данных, пригодных для обучения моделей прогнозирования имен переменных в декомпилированном коде.
    4. Модель DIRE протестирована на большом наборе декомпилированного кода, полученного из 164632 уникальных бинарников, написанных на C и собранных с GitHub.
    5. Результаты показывают, что DIRE может предсказывать имена переменных, идентичные тем, которые были выбраны разработчиком, в 74.3% случаев.
    6. DIRE превосходит другие современные подходы по точности предсказания имен переменных.
    В целом, DIRE демонстрирует многообещающие результаты в автоматическом присвоении информативных имён переменным в декомпилированном коде.


    Вот пример работы DIRE на декомпилированном коде (упрощено для наглядности):
    ```
    1 file *f_open(char **V1, char *V2, int V3) {
    2 int fd;
    3 if (!V3)
    4 return fopen(*V1, V2);
    5 ...
    6 }
    ```
    Идентификаторы переменных заменены на V1, V2 и т.д.
    Предсказания DIRE:
    V1 - file
    V2 - name
    V3 - mode
    Реальные имена, данные разработчиком:
    V1 - filename
    V2 - mode
    V3 - is_private
    Как видно, DIRE смог точно предсказать имя переменной V2, а для V1 и V3 предложил семантически близкие варианты.
    Это иллюстрирует как DIRE может использовать контекст кода для генерации осмысленных имён переменных в декомпилированных бинарниках.


    +++
    как думаете годная вещь?
    --- Сообщение объединено, 21 ноя 2023 ---
    https://github.com/CMUSTRUDEL/DIRTY автор чето делает еще

    Вкратце, в этих документах обсуждается исследование по использованию машинного обучения для улучшения выходных данных декомпиляторов.
    Ключевые идеи:
    1. Тренировка нейронных сетей на больших корпусах кода, написанного людьми, чтобы научить модели предсказывать осмысленные имена переменных и типы данных.
    2. Использование такой информации как размещение данных в памяти, чтобы улучшить предсказания и восстановить полезную информацию, которая теряется во время компиляции.
    3. Применение этих подходов для улучшения выходных данных декомпиляторов - инструментов, используемых для обратной разработки бинарных файлов.
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    Э? Неужели Иннос ослепил меня? Он же вообще ничего не угадал.

    Ида и без этих ваших "искусственных интеллектов" на петоне уже давно может выдергивать имена переменных из прототипов библиотечных функций.
     
  3. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    579
    А как там с RTTI, разбор классов полный? Ковыряние хрея показало, что там довольно много инфы можно выдрать.
    --- Сообщение объединено, 21 ноя 2023 ---
    Не плохо бы парсер для RTTI, и чтобы обратно можно было бинарник, т.е таблицу двоичную генерировать. Надо в XRayExtensions свои классы добавлять, и чтобы smart_cast без проблем работал.
    --- Сообщение объединено, 21 ноя 2023 ---
    smart_cast это обёртка для dynamic_cast и virtual_cast. А virtual_cast, это приведения виртуальными методами, очевидно в XRay сделано для оптимизации.
    --- Сообщение объединено, 21 ноя 2023 ---
    Короче чтобы dynamic_cast работал нормально с добавленными классами.
     
    Последнее редактирование: 21 ноя 2023
  4. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    389
    upload_2023-11-21_15-45-48.png
    не знаю доросла ли сама идашка и хрей к качеству плагинчика ClassInformer
    пример выше