TGViewer
llm security и каланы llm security и каланы @llmsecurity · 2.04K subscribers
Post #599 904
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-ассистентами).
More from @llmsecurity
  1. Sep 25, 2026🦦 Каланам нужна наша лапка помощи Каланы — одни из самых обаятельных обитателей морей. Он…
  2. Sep 25, 2026Напомню, что у нас не только llm security, но и каланы
  3. Sep 14, 2026Post #719
  4. Sep 6, 2026Post #718
  5. Sep 4, 2026Discovery of a new OpenAI agent message board Sydney Von Arx et al., 2026 Сайт Исследовате…
  6. Aug 22, 2026Жадность вайбера погубит, или как получить малвару за ваши же деньги Часть 2: Троянский пр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →