LLMSECURITY Telegram 603
LLM4Decompile: Decompiling Binary Code with Large Language Models
Tan et al., 2025
Статья, Github, Huggingface

Сегодня посмотрим на чуть более сфокусированный бенчмарк: Decompile-Eval. Исследователи обращают внимание, что LLM могут потенциально помогать с декомпиляцией бинарей (переводом кода из asm в C), выдавая более читаемый и близкий к оригиналу код, чем традиционные инструменты вроде Ghidra или Hex-Rays. Чтобы проверить, так ли это, исследователи тюнят свои модели для декомпиляции и предлагают новый бенчмарк, который оценивает качество получившегося кода.

В статье описывается две постановки задачи: Refined-Decompile и End2End-Decompile. В постановке Refined-Decompile модель получает на вход псевдокод после традиционного декомпилятора и должна улучшить его читаемость. В End2End-Decompile на вход LLM получает asm, из которого она должна сгенерировать качественный псевдокод. Для самой задачи декомпиляции исследователи используют ExeBench, набор из 5 миллионов компилируемых C-файлов размером с функцию, для некоторых из которых даны тестовые входы-выходы для оценки корректности. Исследователи компилируют эти файлы с помощью GCC с четырьмя уровнями оптимизации (что, как метко указывают авторы, работает как аугментация данных), а затем дизассемблируют, получая после фильтрации 7,2 миллиона компилируемых пар asm+исходник на C и 1,6 миллионов исполняемых. На этих парах исследователи тюнят deepseek-coder трех размеров (1,3B, 6,7B и 33B). Средняя по размеру модель обучается 61 день на 8xA100.

Для оценки результатов в постановке End2End вводится два бенчмарка – HumanEval-Decompile и ExeBench. HumanEval-Decompile использует как основу оригинальный HumanEval, но все питоновские функции переводятся на C. Из ExeBench берутся 5 тысяч функций, для которых есть пары вход-выход. Модели засчитывается балл, если декомпилированный код компилируется и проходит тесты. В качестве бейзлайнов тестируют gpt-4o и deepseek-coder-6.7B. В результате затюненный deepseek-coder-6.7B показывает лучшие результаты с ~36% на HumanEval-Decompile и ~16% на ExeBench при включенной оптимизации. Та же модель без тюнинга показывает качество, равное нулю, а gpt-4o – 10% и 4%, соответственно. 33-миллиардная модель показывает себя неплохо, но затюнить ее исследователям по причине размера не удалось.

В постановке Refined исследователи используют в качестве источника при «переводе» псевдокод от Ghidra, по которому LLM должна воспроизвести исходный код функции. На парах псевдокод-исходник исследователи обучают модели, к которым добавляется Codestral-22B и Yi-9B. Код, генерируемый гидрой, корректно рекомпилируется в 15% случаев на HumanEval-Decompile. Если пропустить его через gpt-4o, то получается ~30%, а вот затюненные модели дают гораздо лучшие результаты – от ~45% у 6,7B до ~58% у Codestral (если смотреть на кейсы с оптимизацией). В приложении есть еще оценка Yi-Coder, который при размере в два раза меньше соревнуется с французами (УДАР!) При этом метрика edit similarity оказывается менее чувствительной и растет при увеличении модели субъективно незначительно. Наконец, исследователи используют gpt-4o для оценки читаемости псевдокода гидры, улучшений от gpt-4o (никакой предвзятости) и от затюненного ds-coder-6.7B, и последний побеждает даже в этой нечестной борьбе.

Исследование достаточно качественное (не зря оно, в отличие от многого в этом канале, было опубликовано на приличной конференции), исследователи продолжают обновлять свои модели и выкладывать их на HF. Видно, что LLM могут помогать при анализе бинарей, особенно на уровне функций. Понятно, что и тут есть ограничения – тот же контекст одной функции, С (причем именно gcc на *nix), а также падение качества на 80-90% при применении обфускции. Тем не менее, исследование демонстрирует, что LLM в рутине реверсера могут быть очень полезны.

(Внимательный читатель может заметить, что в статье не упоминается Decompile-Eval. Дело в том, что название появилось в препринте, который к публикации сильно изменился, но название продолжает гулять по интернету, в том числе легко достается LLM-ассистентами).



tgoop.com/llmsecurity/603
Create:
Last Update:

LLM4Decompile: Decompiling Binary Code with Large Language Models
Tan et al., 2025
Статья, Github, Huggingface

Сегодня посмотрим на чуть более сфокусированный бенчмарк: Decompile-Eval. Исследователи обращают внимание, что LLM могут потенциально помогать с декомпиляцией бинарей (переводом кода из asm в C), выдавая более читаемый и близкий к оригиналу код, чем традиционные инструменты вроде Ghidra или Hex-Rays. Чтобы проверить, так ли это, исследователи тюнят свои модели для декомпиляции и предлагают новый бенчмарк, который оценивает качество получившегося кода.

В статье описывается две постановки задачи: Refined-Decompile и End2End-Decompile. В постановке Refined-Decompile модель получает на вход псевдокод после традиционного декомпилятора и должна улучшить его читаемость. В End2End-Decompile на вход LLM получает asm, из которого она должна сгенерировать качественный псевдокод. Для самой задачи декомпиляции исследователи используют ExeBench, набор из 5 миллионов компилируемых C-файлов размером с функцию, для некоторых из которых даны тестовые входы-выходы для оценки корректности. Исследователи компилируют эти файлы с помощью GCC с четырьмя уровнями оптимизации (что, как метко указывают авторы, работает как аугментация данных), а затем дизассемблируют, получая после фильтрации 7,2 миллиона компилируемых пар asm+исходник на C и 1,6 миллионов исполняемых. На этих парах исследователи тюнят deepseek-coder трех размеров (1,3B, 6,7B и 33B). Средняя по размеру модель обучается 61 день на 8xA100.

Для оценки результатов в постановке End2End вводится два бенчмарка – HumanEval-Decompile и ExeBench. HumanEval-Decompile использует как основу оригинальный HumanEval, но все питоновские функции переводятся на C. Из ExeBench берутся 5 тысяч функций, для которых есть пары вход-выход. Модели засчитывается балл, если декомпилированный код компилируется и проходит тесты. В качестве бейзлайнов тестируют gpt-4o и deepseek-coder-6.7B. В результате затюненный deepseek-coder-6.7B показывает лучшие результаты с ~36% на HumanEval-Decompile и ~16% на ExeBench при включенной оптимизации. Та же модель без тюнинга показывает качество, равное нулю, а gpt-4o – 10% и 4%, соответственно. 33-миллиардная модель показывает себя неплохо, но затюнить ее исследователям по причине размера не удалось.

В постановке Refined исследователи используют в качестве источника при «переводе» псевдокод от Ghidra, по которому LLM должна воспроизвести исходный код функции. На парах псевдокод-исходник исследователи обучают модели, к которым добавляется Codestral-22B и Yi-9B. Код, генерируемый гидрой, корректно рекомпилируется в 15% случаев на HumanEval-Decompile. Если пропустить его через gpt-4o, то получается ~30%, а вот затюненные модели дают гораздо лучшие результаты – от ~45% у 6,7B до ~58% у Codestral (если смотреть на кейсы с оптимизацией). В приложении есть еще оценка Yi-Coder, который при размере в два раза меньше соревнуется с французами (УДАР!) При этом метрика edit similarity оказывается менее чувствительной и растет при увеличении модели субъективно незначительно. Наконец, исследователи используют gpt-4o для оценки читаемости псевдокода гидры, улучшений от gpt-4o (никакой предвзятости) и от затюненного ds-coder-6.7B, и последний побеждает даже в этой нечестной борьбе.

Исследование достаточно качественное (не зря оно, в отличие от многого в этом канале, было опубликовано на приличной конференции), исследователи продолжают обновлять свои модели и выкладывать их на HF. Видно, что LLM могут помогать при анализе бинарей, особенно на уровне функций. Понятно, что и тут есть ограничения – тот же контекст одной функции, С (причем именно gcc на *nix), а также падение качества на 80-90% при применении обфускции. Тем не менее, исследование демонстрирует, что LLM в рутине реверсера могут быть очень полезны.

(Внимательный читатель может заметить, что в статье не упоминается Decompile-Eval. Дело в том, что название появилось в препринте, который к публикации сильно изменился, но название продолжает гулять по интернету, в том числе легко достается LLM-ассистентами).

BY llm security и каланы











Share with your friend now:
tgoop.com/llmsecurity/603

View MORE
Open in Telegram


Telegram News

Date: |

To upload a logo, click the Menu icon and select “Manage Channel.” In a new window, hit the Camera icon. You can invite up to 200 people from your contacts to join your channel as the next step. Select the users you want to add and click “Invite.” You can skip this step altogether. How to Create a Private or Public Channel on Telegram? Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations. The channel also called on people to turn out for illegal assemblies and listed the things that participants should bring along with them, showing prior planning was in the works for riots. The messages also incited people to hurl toxic gas bombs at police and MTR stations, he added.
from us


Telegram llm security и каланы
FROM American