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 автор чето делает еще Вкратце, в этих документах обсуждается исследование по использованию машинного обучения для улучшения выходных данных декомпиляторов. Ключевые идеи: Тренировка нейронных сетей на больших корпусах кода, написанного людьми, чтобы научить модели предсказывать осмысленные имена переменных и типы данных. Использование такой информации как размещение данных в памяти, чтобы улучшить предсказания и восстановить полезную информацию, которая теряется во время компиляции. Применение этих подходов для улучшения выходных данных декомпиляторов - инструментов, используемых для обратной разработки бинарных файлов.
Э? Неужели Иннос ослепил меня? Он же вообще ничего не угадал. Ида и без этих ваших "искусственных интеллектов" на петоне уже давно может выдергивать имена переменных из прототипов библиотечных функций.
А как там с RTTI, разбор классов полный? Ковыряние хрея показало, что там довольно много инфы можно выдрать. --- Сообщение объединено, 21 ноя 2023 --- Не плохо бы парсер для RTTI, и чтобы обратно можно было бинарник, т.е таблицу двоичную генерировать. Надо в XRayExtensions свои классы добавлять, и чтобы smart_cast без проблем работал. --- Сообщение объединено, 21 ноя 2023 --- smart_cast это обёртка для dynamic_cast и virtual_cast. А virtual_cast, это приведения виртуальными методами, очевидно в XRay сделано для оптимизации. --- Сообщение объединено, 21 ноя 2023 --- Короче чтобы dynamic_cast работал нормально с добавленными классами.