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

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

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

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

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

Категории

Все категории
Loading categories
ScratchABit — Легко перенастраиваемый и настраиваемый интерактивный дизассемблер с API плагинов, совместимым с IDAPython. | Kitploit
Инструменты/GitHubGitHub/pfalcon/scratchabit
Статический анализОбратная инженерияОтладчикиАнализ Бинарных Файлов
GitHubpfalcon/scratchabit

ScratchABit

Легко перенастраиваемый и настраиваемый интерактивный дизассемблер с API плагинов, совместимым с IDAPython.

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

Популярное

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

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

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

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

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

ScratchABit

ScratchABit — это интерактивный инкрементальный дизассемблер с возможностями анализа потоков данных и управления. ScratchABit посвящён усилиям сообщества разработчиков open-source в области реверс-инжиниринга (реверс-инжиниринг для создания драйверов/прошивок с открытым исходным кодом для оборудования, не имеющего надлежащей поддержки со стороны производителей, для совместимости аппаратного и программного обеспечения, для исследований безопасности).

ScratchABit поддерживает широко известный в сообществе API IDAPython для написания модулей дизассемблирования/расширения.

ScratchABit находится в разработке, функции добавляются по мере необходимости, приветствуются вклады.

ScratchABit распространяется на условиях GNU General Public License v3 (GPLv3).

Требования/манифест

  1. Не должен быть написан на запутанном языке. К таким языкам относятся слишком низкоуровневые языки, которые позволяют обращаться к неинициализированным переменным, не различают переменные и функции/процедуры, начинают индексы массивов с произвольных чисел и т.д., и т.п. ScratchABit написан на Python (современная версия, Python3) для вашего удовольствия и здравомыслия.

  2. Инфраструктура пользовательского интерфейса должна позволять взаимодействие с пользователем на необходимом уровне, не добавлять зависимостей, раздувания, проблем и несовместимости между версиями фреймворка. ScratchABit в настоящее время использует простой полноэкранный текстовый пользовательский интерфейс с использованием управляющих последовательностей терминала ANSI/VT100 (да, даже библиотека curses была сочтена слишком раздутой зависимостью, чтобы навязывать её пользователям).

  3. Следует использовать простые текстовые форматы для хранения «базы данных», чтобы облегчить повторное использование и написание инструментов, а также хранение в системах контроля версий.

Установка

Для использования ScratchABit вам потребуется установленный Python3 (проверено с Python 3.3 по 3.7) и терминал или эмулятор терминала VT100 (минимум) или XTerm (рекомендуется) (любая Unix-система должна быть совместима, например Linux/BSD и т.д., см. FAQ ниже для подробностей).

Клонируйте код с помощью:

root@kitploit:~
git clone --recursive https://github.com/pfalcon/ScratchABit

Если вы клонировали код без --recursive, выполните git submodule update --init в каталоге ScratchABit.

Начиная с версии 2.0, в ScratchABit включён плагин(ы) CPU на основе Capstone Engine, которые обеспечивают доступ к ряду архитектур CPU. Для его использования должен быть установлен свежий модуль привязок Python для Capstone (предпочтительнее, чем пакеты, поставляемые дистрибутивами ОС, которые часто устарели). Самый простой способ установить его — в каталог пользовательских пакетов Python:

root@kitploit:~
pip3 install --no-cache-dir --user capstone

Альтернативно, вы можете установить его в виртуальное окружение Python внутри каталога ScratchABit:

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
pip3 install --no-cache-dir capstone

Всякий раз, когда вы открываете новый сеанс терминала для работы с ScratchABit, снова выполните команду source .venv/bin/activate, чтобы активировать виртуальное окружение.

Если ничего из вышеперечисленного не работает, вы можете попробовать установить пакет capstone системно (не рекомендуется):

root@kitploit:~
sudo pip3 install --system capstone

Быстрый старт

Если вы хотите дизассемблировать файл в самоописываемом исполняемом формате (например, ELF), просто передайте его в качестве аргумента ScratchABit.py. Репозиторий включает несколько файлов example-*.elf для различных архитектур для быстрого старта. Например, чтобы попробовать 32-битную версию x86:

root@kitploit:~
python3 ScratchABit.py example-x86_32.elf

В качестве альтернативы, если вы хотите дизассемблировать сырой бинарный файл, вам нужно создать .def (определение) файл, чтобы указать, какие области памяти определены для кода, по какому адресу загружать бинарный файл и т.д. (Примечание: .def файл может быть полезен и для файлов .elf и подобных). В репозитории есть простой сырой бинарный код x86_64 и соответствующий файл example-x86_64.def (загляните внутрь для описания доступных опций):

root@kitploit:~
python3 ScratchABit.py example-x86_64.def

Нажмите F9 для доступа к меню (мышь также работает в терминалах, совместимых с XTerm). Нажмите F1 для получения справки по привязкам клавиш (большинство действий также доступны через меню). Рабочий процесс ScratchABit похож на другие интерактивные дизассемблеры (может быть полезен некоторый предыдущий опыт или чтение фоновой информации).

Использование плагинов

Плагины процессоров IDAPython могут быть загружены из любого места в пути модулей Python. Альтернативно, вы можете создать симлинк/скопировать файл(ы) плагина .py в подкаталог plugins/cpu/.

После того как плагин стал доступен, создайте новый файл определения на основе example-x86_64.def, который устанавливает имя модуля плагина (без расширения .py) в строке cpu xxx.

Для очень простого примера, использующего внешний плагин, см. этот файл esp8266.def, который работает с плагином xtensa.py из репозитория ida-xtensa2.

TODO/Что нужно решить

  • В настоящее время для «базы данных» используется несколько файлов, каждый из которых хранит определённый тип информации. Переключиться на один файл YAML?
  • Добавить цвет (низкий приоритет, патчи без раздувания приветствуются).
  • Реализовать ещё несколько важных команд UI для комфортной работы. (Все самые важные команды должны быть на месте, остальная функциональность, как ожидается, будет реализована с помощью плагинов).
  • Предлагать сохранять БД при выходе, если она изменена.
  • Интеграция Git для сохранения БД.
  • Повысить надёжность (добавить обработчик исключений на уровне основного цикла, не прерывать приложение, показывать пользователю/в лог и продолжать).
  • Попытаться справиться с несоответствиями потока кода (например, внутри инструкции — низкий приоритет для предполагаемого использования) и несоответствиями доступа к данным (например, доступ к отдельным байтам ранее обнаруженного слова — более высокий приоритет). (Улучшено в 1.4.)
  • Посмотреть, как поддерживать другие типы плагинов IDAPython, кроме модулей процессоров.
  • Разбирать и использовать отладочную информацию (например, DWARF), присутствующую в файлах ELF (и т.д.).

FAQ

В: Какие процессоры/архитектуры поддерживаются?

О: ScratchABit не поддерживает ни одну архитектуру процессора сам по себе, он полностью перенастраиваем с помощью плагинов API IDAPython. Доступно много плагинов, написать новый плагин легко. Чтобы дать пользователям возможность опробовать ScratchABit, в дистрибутив включён простой плагин процессора x86, использующий дизассемблер Pymsasid под капотом.

Начиная с версии 2.0, также включён плагин Capstone, обеспечивающий доступ к ряду архитектур, включая x86, ARM, MIPS, PowerPC, SPARC и т.д. (поддержка архитектур включается постепенно на основе пользовательского тестирования).

Вы можете прочитать о плагинах, поставляемых вместе с ScratchABit, в README для каталога plugins/cpu/.

В: Отладчик?

О: ScratchABit посвящён статическому анализу и лёгкой поддержке новых архитектур CPU (просто напишите новый плагин CPU на Python — вы можете получить первые результаты за несколько часов). Динамический анализ не задумывался как основная функция, и немедленных планов по его реализации нет. Однако патчи приветствуются.

В: Декомпилятор?

О: Существует связанный проект, называемый ScratchABlock, для глубокого анализа программ, трансформации и декомпиляции. Ожидается, что по мере взросления ScratchABlock некоторые его функции станут доступны в ScratchABit (возможно, через плагины).

В: Я не на Linux, как мне запустить ScratchABit?

О: Установите Linux в эмуляторе/ВМ на вашей системе и радуйтесь.

В: Обязательный скриншот?

О: Конечно:

screenshot

Скачать инструмент