Всем уже надоели клоны (их есть у меня) и спекуляция на чужом имени — хочется увидеть что-то по-настоящему новое и полезное.

Встречайте дизассемблер для ARM64, 32-битного ARM, x86-64, i386, WebAssembly, .NET (CIL) и байт-кода Java: файлы Mach-O, ELF, PE, APK и IPA из macOS, iOS, Linux, Android и Windows. Один HTML-файл, работает без сети, ничего не отправляет — скачиваете на дискету, и этот инструмент с вами навсегда. Всё уместилось в 1,22 МБ.

Сегодня не буду многословен.

  • Репа: html-disasm

  • PWA — можно открыть как сайт или установить как приложение

  • Описание на русском

Рассмотрим основной функционал и то, чем он будет полезен.

Код ассемблера, куда же без него

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

Код ассемблера
Код ассемблера

Описание мнемоник

Поддерживается русский язык:

Описание мнемоник
Описание мнемоник

Фильтр функций, импорт, экспорт

Есть даже деманглинг:

Фильтр функций
Фильтр функций

Статистика

Пожалуй, самое полезное (аналогов не находил). Общая:

Статистика общая
Статистика общая

И по мнемоникам:

Статистика по мнемоникам
Статистика по мнемоникам

Строки

Это везде есть, но для полноты картины:

Строки
Строки

Импорт и экспорт подробно

В том числе на уровне библиотек:

Импорт и экспорт
Импорт и экспорт

Данные о контейнере

Данные о контейнере
Данные о контейнере

Бонус — можно изменить инструкцию

Для самых искушённых. Пока только для macOS ARM, но зато работает: программа переподписывается и запускается.

Можно изменить инструкцию
Можно изменить инструкцию

HLA

Тут писать не буду, оставлю интригу до новой статьи. Но в узких кругах данную тему уже обсудили, и людям понравилось.

Выводы

Сам не ожидал, что это возможно, что получится такой инструмент, причём в файле размером 1,22 МБ.

Главное, что это удобно — открыл, и всё работает, не тратишь время на установку, добавление плагинов. Та же Ghidra для WASM требует плагина, который работает не на всех версиях (когда мне понадобился — затребовал 12.0, с новой версией не работал).

Подходит для быстрых проверок: например, посмотреть архитектуру библиотеки, экспортируемые функции. Можно использовать для обучения.

Конечно, это не замена взрослым дизассемблерам, у каждого инструмента своя ниша.

Пользуйтесь, делитесь пользовательским опытом, ставьте звёзды на GitHub.