Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ghidra-evm — Модуль Ghidra для дизассемблирования, декомпиляции и анализа байт-кода смарт-контрактов Ethereum. Обнаруживает небезопасные инструкции, извлекает скрытые методы и генерирует графы потоков управления для аудита безопасности. | Kitploit
Инструменты/GitHubGitHub/adelapie/ghidra-evm
Статический анализАнализ уязвимостейОбратная инженерияАнализ Бинарных Файлов
GitHubadelapie/ghidra-evm

ghidra-evm

Модуль Ghidra для дизассемблирования, декомпиляции и анализа байт-кода смарт-контрактов Ethereum. Обнаруживает небезопасные инструкции, извлекает скрытые методы и генерирует графы потоков управления для аудита безопасности.

Репозиторий
149295 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Модуль Ghidra EVM

front

За последние несколько лет атаки на развернутые смарт-контракты в блокчейне Ethereum привели к краже значительных сумм из-за ошибок программирования. Поскольку смарт-контракты после компиляции и развертывания сложны в модификации и обновлении, различные практики подчеркнули важность проверки их безопасности в блокчейне, где доступен только байт-код Ethereum Virtual Machine (EVM). В этом отношении реверс-инжиниринг через дизассемблирование и декомпиляцию может быть эффективным.

ghidra-EVM — это модуль Ghidra для реверс-инжиниринга смарт-контрактов. Его можно использовать для загрузки байт-кода Ethereum Virtual Machine (EVM) из блокчейна Ethereum, а также для дизассемблирования и декомпиляции смарт-контракта. Кроме того, он может анализировать код создания, находить методы контракта и выявлять небезопасные инструкции.

Он включает модуль процессора, собственный загрузчик и плагины, которые дизассемблируют байт-код Ethereum VM (EVM) и генерируют граф потока управления (CFG) смарт-контракта.

Последняя версия использует API Ghidra 9.1.2. Она полагается на библиотеку crytic evm_cfg_builder (https://github.com/crytic/evm_cfg_builder) для помощи Ghidra в процессе генерации CFG.

Ghidra-evm состоит из:

  • Загрузчика, который читает байт-код и шестнадцатеричный код из файлов .evm и .evm_h соответственно (См. примеры).
  • Определения набора инструкций EVM в SLEIGH с учетом ограничений ядра Ghidra (См. Примечания).
  • Вспомогательного скрипта, использующего evm_cfg_builder и ghidra_bridge для помощи Ghidra в генерации CFG и изучении свойств функций смарт-контракта.
  • Набора скриптов, помогающих в реверс-инжиниринге различных аспектов смарт-контракта:
СкриптОписание
search_codecopy.pyПри анализе кода создания смарт-контракта мы видим только функцию _dispatcher, которая использует CODECOPY для записи кода выполнения в память. Этот скрипт ищет полезные инструкции CODECOPY и находит скрытые методы смарт-контракта в части контракта времени выполнения.
search_dangerous_instructions.pyИнструкции, такие как CALL, CALLCODE, SELFDESTRUCT и DELEGATECALL, иногда могут быть использованы для перевода средств на другой контракт. Этот скрипт находит их и создает метку для каждого вхождения.
load_external_contract.pyЗагружает байт-код смарт-контракта из блокчейна в файл .evm_h, который можно загрузить в ghidra-evm

Инструкции по установке

  • Установите ghidra_bridge, следуя инструкциям на https://github.com/justfoxing/ghidra_bridge
  • Установите библиотеку crytic evm_cfg_builder, следуя инструкциям на https://github.com/crytic/evm_cfg_builder
  • Установите последний релизный файл ghidra-evm из ghidra_evm/dist/:
    • Откройте Ghidra
    • Файл -> Установить расширения
    • Нажмите на '+' и выберите zip-файл, например, ghidra_9.1.2_PUBLIC_20201102_ghidra_evm.zip
    • Нажмите ОК
    • Перезапустите Ghidra

Инструкции по компиляции

Содержимое каталога ghidra-evm можно использовать для создания модуля Ghidra в Eclipse с процессором и загрузчиком для расширения или отладки ghidra_evm.

Руководства

middle

Интеграция с внешними инструментами символьного выполнения

СкриптОписание
teetherОн отмечает критический путь в Ghidra перед генерацией эксплойта. Требуется teether.

Примечания

  • CFG создается в соответствии с evm_cfg_builder: используются инструкции JUMP и JUMPI.
  • Таблица переходов размером 32x32 (evm_jump_table) генерируется соответствующим образом для обнаружения и отображения ветвлений в окнах дизассемблирования и потока управления.
  • Ghidra не был разработан для работы с архитектурами и памятью с размером слова > 64 бит. Это означает, что такие инструкции, как PUSH32, некорректно отображаются в окне декомпиляции.

Лицензия

Ghidra-evm лицензирован и распространяется под лицензией AGPLv3.

Благодарности

  • Эта работа была поддержана Европейской комиссией в рамках программы H2020, проект M-Sec (грант 814917).
  • Ghidra-EVM был представлен на треке Arsenal конференции Black Hat Asia 2021. Вы можете найти слайды здесь.
Скачать инструмент
РуководствоОписание
ИспользованиеПростые инструкции по использованию с test.evm
Анализ байт-кода созданияИспользование search_codecopy.py для анализа кода создания и поиска скрытых методов
Поиск опасных инструкцийИспользование search_dangerous_instructions.py для анализа вхождения SELFDESTRUCT
Загрузка байт-кода смарт-контракта из блокчейна в GhidraИспользование load_external_contract.py для загрузки байт-кода EVM из блокчейна в файл .evm_h