2025-11-25T11:37:18.016926

Augmenting Smart Contract Decompiler Output through Fine-grained Dependency Analysis and LLM-facilitated Semantic Recovery

Liao, Nan, Gao et al.
Decompiler is a specialized type of reverse engineering tool extensively employed in program analysis tasks, particularly in program comprehension and vulnerability detection. However, current Solidity smart contract decompilers face significant limitations in reconstructing the original source code. In particular, the bottleneck of SOTA decompilers lies in inaccurate method identification, incorrect variable type recovery, and missing contract attributes. These deficiencies hinder downstream tasks and understanding of the program logic. To address these challenges, we propose SmartHalo, a new framework that enhances decompiler output by combining static analysis (SA) and large language models (LLM). SmartHalo leverages the complementary strengths of SA's accuracy in control and data flow analysis and LLM's capability in semantic prediction. More specifically, \system{} constructs a new data structure - Dependency Graph (DG), to extract semantic dependencies via static analysis. Then, it takes DG to create prompts for LLM optimization. Finally, the correctness of LLM outputs is validated through symbolic execution and formal verification. Evaluation on a dataset consisting of 465 randomly selected smart contract methods shows that SmartHalo significantly improves the quality of the decompiled code, compared to SOTA decompilers (e.g., Gigahorse). Notably, integrating GPT-4o with SmartHalo further enhances its performance, achieving precision rates of 87.39% for method boundaries, 90.39% for variable types, and 80.65% for contract attributes.
academic

Augmenting Smart Contract Decompiler Output through Fine-grained Dependency Analysis and LLM-facilitated Semantic Recovery

Основная информация

  • ID статьи: 2501.08670
  • Название: Augmenting Smart Contract Decompiler Output through Fine-grained Dependency Analysis and LLM-facilitated Semantic Recovery
  • Авторы: Zeqin Liao, Yuhong Nan, Zixu Gao, Henglong Liang, Sicheng Hao, Peifan Ren, Zibin Zheng
  • Классификация: cs.SE (Программная инженерия)
  • Дата публикации: Январь 2025 (препринт arXiv)
  • Ссылка на статью: https://arxiv.org/abs/2501.08670

Аннотация

Декомпиляторы смарт-контрактов широко используются в программном анализе как инструменты обратного инжиниринга, особенно для понимания программ и обнаружения уязвимостей. Однако современные декомпиляторы Solidity имеют значительные ограничения при восстановлении исходного кода, проявляющиеся в трёх основных аспектах: неточное определение границ функций, ошибки восстановления типов переменных и отсутствие атрибутов контракта. Для решения этих проблем авторы предлагают фреймворк SmartHalo, который сочетает статический анализ (SA) и большие языковые модели (LLM) для улучшения выходных данных декомпилятора. SmartHalo использует точность SA при анализе потоков управления и данных, а также возможности LLM в предсказании семантики. В частности, фреймворк строит структуру данных графа зависимостей (DG) для извлечения семантических зависимостей, затем создаёт оптимизированные подсказки для LLM на основе DG и, наконец, проверяет корректность выходных данных LLM через символическое выполнение и формальную верификацию.

Исследовательский контекст и мотивация

Определение проблемы

Декомпиляция смарт-контрактов сталкивается с тремя основными проблемами:

  1. Неточное определение границ функций: Существующие декомпиляторы не могут точно определить границы функций, часто восстанавливая несколько функций как одну или пропуская важные функции
  2. Ошибки восстановления типов переменных: Типы, выдаваемые декомпилятором, несовместимы со статическими правилами домена, например, восстановление возвращаемого значения uint256 функции keccak256 вместо bytes32
  3. Отсутствие атрибутов контракта: Переменные состояния в смарт-контрактах содержат критические атрибуты контракта (такие как активы, идентификаторы, маршрутизаторы), но полностью отсутствуют в декомпилированном коде

Анализ значимости

Эти дефекты серьёзно препятствуют выполнению последующих задач:

  • Влияют на точность обнаружения уязвимостей, вызывая ложные срабатывания и пропуски
  • Снижают эффективность понимания программ
  • Ограничивают продвинутые задачи анализа, такие как анализ потоков вызовов между контрактами

Ограничения существующих методов

  • SmartDagger: Может восстановить только часть атрибутов контракта переменных состояния, основан на глубоком обучении, производительность снижается на новых контрактах
  • Neural-FEBI: Не поддерживает восстановление границ функций с модификаторами или унаследованных функций
  • SigRec/VarLifter/DeepInfer: Могут восстановить только типы параметров известных сигнатур функций, зависят от предопределённых эвристических правил с низким охватом

Исследовательская мотивация

Основана на двух ключевых наблюдениях:

  1. Естественные закономерности в программном обеспечении: Программисты склонны использовать аналогичные структуры кода, атрибуты контрактов, типы переменных и границы функций в аналогичных контекстах
  2. Синергия SA и LLM: SA обладает высокой точностью при обработке сложных статических ограничений, а LLM гибка при предсказании целей, лишённых статических ограничений

Основные вклады

  1. Выявление и систематизация ключевых ограничений текущих декомпиляторов смарт-контрактов
  2. Предложение фреймворка SmartHalo, инновационно сочетающего статический анализ и большие языковые модели для оптимизации выходных данных декомпилятора
  3. Разработка структуры данных графа зависимостей (DG), извлекающей три типа семантических зависимостей (зависимости состояния, потока управления и типа)
  4. Установление строгого механизма верификации корректности через символическое выполнение и формальную верификацию для решения проблемы галлюцинаций LLM
  5. Комплексная оценка и валидация эффективности SmartHalo при восстановлении границ функций, типов переменных и атрибутов контракта

Подробное описание методологии

Определение задачи

Входные данные: Псевдокод, сгенерированный декомпилятором Выходные данные: Оптимизированный декомпилированный код с точными границами функций, типами переменных и атрибутами контракта Ограничения: Сохранение эквивалентности поведения программы, соответствие правилам статической типизации Solidity

Архитектура модели

SmartHalo использует трёхэтапную архитектуру:

1. Извлечение семантики на основе зависимостей

  • Анализ потока управления: Использование Tree-sitter для построения синтаксического дерева, преобразование в трёхадресное промежуточное представление, генерация графов потока управления и данных
  • Определение зависимостей:
    • Зависимости типов: Связи типов переменных с другими переменными или выражениями
    • Зависимости состояния: Зависимости чтения-записи между переменными состояния
    • Зависимости потока управления: Зависимости путей выполнения программы
  • Построение графа зависимостей: DG = (Nc, Ec, Xe), где Nc — множество узлов (переменные и выражения), Ec — множество рёбер (три типа зависимостей), Xe — функция маркировки

2. Улучшение семантики, управляемое LLM

  • Генерация контекста кода:
    • Переменные: Извлечение фрагментов кода, связанных с целевой переменной, на основе DG
    • Функции: Поиск цепочки вызовов, содержащей целевую функцию
  • Генерация кандидатов вывода:
    • Кандидаты типов переменных: Сбор встроенных типов из документации Solidity
    • Кандидаты атрибутов контракта: Limit, Fee, Flag, Address, Asset, Router, Others
  • Подсказки цепочки мышления (COT): Преобразование зависимостей из DG в описания этапов рассуждения

3. Верификация корректности

  • Проверка эквивалентности поведения программы:
    • Символическое выполнение исходных и оптимизированных функций
    • Формальная верификация с использованием решателя Z3
    • Утверждение эквивалентности: Φ = ¬(s ⇔ s′)
  • Проверка нарушения статических правил: Обнаружение ошибок вывода типов на основе правил типизации Solidity

Технические инновации

  1. Мелкозернистый анализ зависимостей: Первая систематическая работа по извлечению и использованию трёх типов семантических зависимостей
  2. Фреймворк синергии SA-LLM: Инновационное сочетание точности статического анализа и возможностей семантического понимания LLM
  3. Строгие гарантии корректности: Обеспечение корректности результатов оптимизации через символическое выполнение и формальную верификацию
  4. Универсальный дизайн: Поддержка интеграции различных LLM и декомпиляторов

Экспериментальная установка

Наборы данных

  • Набор данных оценки: 500 функций, случайно выбранных из крупнейшего открытого набора данных смарт-контрактов, в итоге получено 456 пар исходного кода и выходных данных декомпилятора
  • Набор данных сложных контрактов: 50 смарт-контрактов, случайно выбранных из 682 реальных DApp (примерно 900 функций)
  • Набор данных обнаружения уязвимостей: Содержит 81 помеченную уязвимость реентрантности, 18 пар контрактов атак, 50 контрактов с уязвимостями целочисленного переполнения

Метрики оценки

  • Соответствие границ функций: Полное совпадение начальной и конечной точек с функциями на уровне исходного кода
  • Соответствие типов: Полное совпадение предсказанного типа с истинным типом (включая макет данных и информацию о полях)
  • Соответствие атрибутов контракта: Полное совпадение предсказанного атрибута с истинным атрибутом
  • Частота ошибок перекомпиляции: Частота ошибок компиляции оптимизированного кода

Методы сравнения

  • SmartDagger: Сравнение для восстановления атрибутов контракта
  • VarLifter: Сравнение для вывода типов переменных
  • Исходный декомпилятор: Gigahorse/Dedaub как базовая линия

Детали реализации

  • Среда разработки: Python 3.8.10, 1799 строк кода
  • Выбор LLM: Основное использование GPT-3.5, поддержка GPT-4o mini, Llama-3, Deepseek-v3, Qwen-2.5-coder
  • Конфигурация оборудования: Intel i9-10980XE CPU, RTX 3090 GPU, 250GB RAM

Результаты экспериментов

Основные результаты

Общее сравнение эффективности (с исходным декомпилятором)

МетрикаУлучшение точностиУлучшение полноты
Определение границ функций+20.30%+30.03%
Вывод типов переменных+30.02%+42.04%
Восстановление атрибутов контракта68.06%90.93%

Сравнение с методами SOTA

  • vs SmartDagger (атрибуты контракта): Улучшение точности на 44.69%, полноты на 80.86%
  • vs VarLifter (типы переменных): Улучшение точности на 13.51%, полноты на 77.08%

Сравнение производительности различных LLM

LLMГраницы функций (P/R)Типы переменных (P/R)Атрибуты контракта (P/R)
GPT-3.588.26%/80.51%92.27%/84.26%68.06%/90.93%
GPT-4o mini91.32%/87.38%90.40%/88.82%80.66%/91.78%
Llama-366.09%/55.11%62.41%/48.53%61.68%/60.34%

Абляционные исследования

Сравнение отдельного использования SA, LLM и полного фреймворка SmartHalo:

  • Вклад SA: Обеспечение точного извлечения зависимостей и верификации ограничений
  • Вклад LLM: Обеспечение семантического понимания и способности распознавания редких паттернов
  • Синергетический эффект: SmartHalo превосходит отдельное использование LLM на 19.23%/29.23% при определении границ функций

Проверка способности к обобщению

  • Кроссдекомпиляторная совместимость: Значительные улучшения на Heimdall и Panoramix
  • Сложные контракты: Сохранение хорошей производительности на реальных сложных DApp
  • Анализ эффективности: Среднее время обработки 23.99 секунд, стоимость $0.00136/функция

Эффект на последующие задачи

  • Обнаружение уязвимостей реентрантности: Точность повышена с 72.16% до 80.41%
  • Идентификация атак: Полнота повышена с 83.33% до 100.00%
  • Обнаружение целочисленного переполнения: Улучшение точности на 21.96%, полноты на 38.00%

Связанные работы

Декомпиляция смарт-контрактов

  • Gigahorse/Elipmoc: Преобразование байт-кода EVM в трёхадресное представление кода
  • Erays/EtherSolve: Восстановление графа потока управления из байт-кода EVM
  • SigRec/DeepInfer: Восстановление сигнатур открытых функций

Оптимизация декомпиляции

  • Восстановление семантической информации: DEBIN, OSPREY, BDA и другие восстанавливают зависимости программ через статический анализ
  • Оптимизация имён переменных и типов: DIRE, DIRTY, DeGPT и другие используют глубокое обучение для оптимизации выходных данных декомпилятора

Преимущества данной работы

По сравнению с существующими работами SmartHalo обладает:

  1. Более комплексными целями оптимизации: Одновременная обработка границ функций, типов переменных и атрибутов контракта
  2. Более сильной способностью к обобщению: Не зависит от конкретных данных обучения, адаптируется к новым контрактам
  3. Строгими гарантиями корректности: Обеспечение корректности результатов оптимизации через формальную верификацию

Заключение и обсуждение

Основные выводы

  1. SmartHalo значительно улучшает качество декомпиляции смарт-контрактов, достигая существенных улучшений по трём ключевым метрикам
  2. Фреймворк синергии SA-LLM доказал свою эффективность, полностью используя взаимодополняющие преимущества обоих подходов
  3. Строгий механизм верификации корректности успешно контролирует проблему галлюцинаций LLM
  4. Фреймворк обладает хорошей способностью к обобщению, поддерживая интеграцию различных LLM и декомпиляторов

Ограничения

  1. Восстановление структур наследования: Невозможно восстановить отношения наследования в контрактах, так как информация о классах отсутствует на уровне байт-кода
  2. Размер набора данных: Набор данных оценки относительно небольшой (456 функций), но соответствует масштабу исследований SOTA
  3. Эволюция API LLM: Может повлиять на воспроизводимость результатов
  4. Обработка сложных сценариев: Ограниченная производительность при низкоуровневых вызовах, встроенном ассемблере и внецепочечных зависимостях

Будущие направления

  1. Восстановление структур наследования: Исследование вывода отношений наследования на основе сопоставления паттернов
  2. Оценка на большем масштабе: Валидация робастности метода на более крупных наборах данных
  3. Обучение специализированных моделей: Подготовка специализированных моделей понимания смарт-контрактов
  4. Оптимизация в реальном времени: Поддержка онлайн-оптимизации декомпиляции

Глубокая оценка

Преимущества

  1. Чёткое определение проблемы: Систематическое выявление и анализ основных проблем декомпиляции смарт-контрактов
  2. Сильная инновационность метода: Первое предложение фреймворка синергии SA-LLM с хитроумным дизайном структуры данных графа зависимостей
  3. Полнота технического решения: От извлечения семантики, оптимизации до верификации корректности образуется полный цикл
  4. Комплексная экспериментальная оценка: Многомерные сравнительные эксперименты, включая абляционные исследования и валидацию на последующих задачах
  5. Высокая практическая ценность: 60.22% оптимизированного кода может быть перекомпилировано напрямую, значительно повышая практическую применимость

Недостатки

  1. Недостаточный теоретический анализ: Отсутствие глубокого анализа теоретических гарантий метода
  2. Ограниченный анализ ошибок: Анализ коренных причин неудачных случаев оптимизации может быть более глубоким
  3. Вычислительные издержки: Символическое выполнение и формальная верификация могут привести к значительным вычислительным затратам
  4. Зависимость от внешних инструментов: Зависит от качества существующих декомпиляторов и API LLM

Влияние

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

Сценарии применения

  1. Аудит безопасности смарт-контрактов: Повышение читаемости и точности декомпилированного кода
  2. Инструменты обнаружения уязвимостей: Использование в качестве этапа предварительной обработки для повышения точности обнаружения
  3. Инструменты понимания программ: Помощь разработчикам в понимании логики сторонних контрактов
  4. Академические исследования: Предоставление высококачественных данных для исследований анализа смарт-контрактов

Библиография

Статья цитирует 96 связанных работ, включая в основном:

  • Анализ смарт-контрактов: Классические работы Gigahorse, SmartDagger, VarLifter и другие
  • Теория программного анализа: Литература по символическому выполнению и формальной верификации
  • Применение машинного обучения: Применение глубокого обучения в программном анализе
  • Технология декомпиляции: Методы и инструменты традиционной оптимизации декомпиляции

Общая оценка: Это высококачественная исследовательская работа в области программной инженерии, предлагающая инновационное решение важной проблемы декомпиляции смарт-контрактов. Методология разумна, экспериментальная оценка полна, практическая ценность выдающаяся. Хотя существуют некоторые ограничения, общий вклад значителен и оказывает важное влияние на развитие области анализа безопасности смарт-контрактов.