Аналог ida pro для linux

Обновлено: 05.07.2024

У каждого из команды ][ — свои предпочтения по части софта и утилит для
пентеста. Посовещавшись, выяснилось, что выбор так разнится, что можно составить
настоящий джентльменский набор из проверенных программ. На том и решили. Чтобы
не делать сборную солянку, весь список мы разбили на темы. Сегодня мы разберем
отладчики и дизасемблеры - все, что понадобится для реверсинга приложений.

OllyDbg

Если ты хоть раз читал статьи о крякинге или, например, смотрел видеоуроки от
нашего реверсера Cr@wler'а, то имя "Ольки" тебе должны быть знакомо. Это
32-битный отладчик работающий на ring-3 с продуманным интерфейсом и полезными
функциями, которые существенным образом облегчают процесс отладки. В OllyDBG
встроен специальный анализатор, которые распознает и визуально обозначает
процедуры, циклы, константы и строки, внедренные в код, обращение к функциям API,
параметры этих функции и т.п. Для новичка (и не только) - это именно то, что
надо! В ходу до сих пор находится версия 1.10, а бета-версия второй ветки еще с
марта не претерпела изменений, однако уже сейчас можно оценить многочисленные
нововведения дебаггера. Работа ведется уже давно, и поэтому разработчику уже
есть что показать (прежде всего новый движок). Бету едва ли можно рассматривать
как основной инструмент для серьезных дел, поэтому спешу предупредить: о
стабильности нового движка пока приходится только мечтать, поэтому используй "бетку"
на свой страх и риск.

Тут надо сказать, что стал OllyDbg стандартным user-land отладчиком, взятым
на вооружение хакерами и они тут же захотели его улучшить. Появилось множество
нестандартных сборок: одни фиксят ошибки Ольги, другие расширяют функционал,
третьи – скрывают ее от протекторов. Недостаток — "движок" отладчика работает
через MS Debugging API, страдающий кучей врожденных ограничений, оставляющий за
собой множество трудноудаляемых следов и представляющий легкую мишень для
антиотладочных технологий.

Immunity Debugger

Известный мод одноименной фирмы, специализирующейся на безопасности и
скрестившей Ольгу 1.10 с Питоном – интерпретируемым языком, на котором очень
легко и быстро писать скрипты. Конечно, писать их можно прямо в Ольге, но это не
слишком удобно, все приходится делать вручную и решать типовые задачи (типа
поиска в памяти), которые уже давно решены.

В Immunity Debugger входит множество библиотек, написанных на Питоне и
заточенных под хакерские нужды. Библиотеки вызываются из Питоновых программ,
среди которых значится и searchcrypt.py – отличное средство идентификации
следующих криптографических алгоритмов: AES, BLOWFISH, CAMELLIA, CAST, MD5, RC2,
RC5, RIPEMD160, SHA1, SHA256, SHA512.

Immunity Debugger используют многие специалисты по безопасности,
выкладывающие proof-of-concept expolit'ы, написанные на Питоне и предназначенные
для работы исключительно в среде данного отладчика. И хотя хакер с головой
разберется в алгоритме работы exploit'а и без Immunity Debugger'а, портируя
exploit на любой другой язык, рано или поздно отладчик оказывается на
компьютере, зачастую становясь основным инструментом, вытесняющим Ольгу.

Популярный и очень мощный мод, основанный на Ольге 1.10 и собравший в своем
дистрибутиве огромное количество плагинов, скриптов, а также кучу других
полезных инструментов. В отличие от Immunity Debugger'а, ориентированного на
специалистов по безопасности, YDbg писался хакерами и для хакеров, ломающих
защиты с протекторами (те активно сопротивляются такому положению дел и
напичканы анти-отладочными приемами, распознающими присутствие Ольги по главному
окну с ее именем и пунктам меню). Поэтому первое, что бросается в глаза при
запуске YDbg (исполняемый файл которого переименован из OLLYDBG.EXE в SND.exe),
это "покореженные" пункты меню. В частности, "Memory" превратилось в "M3m0ry", "SEH
chain" в "S3H chain", "Breakpoints" в "Br3akp01nts" и т. д. Словом, все
"хакерские" пункты изменены – попробуй их найти (естественно, в новых версиях
протекторов наверняка появится детекция YDbg, но пока он успешно скрывается от
кучи защит, палящих Ольгу). В состав дистрибутива YDbg входит 36 популярных
плагинов (и не нужно теперь рыскать по Сети в их поисках). Среди них затесался
настоящий бриллиант – IDA Sigs, название которого говорит само за себя. Да-да!
Это плагин, поддерживающий IDA-сигнатуры и отображающий их в виде комментариев к
вызываемым функциям в Ольге или в YDbg. Другой полезный плагин – red-hawk
("красный ястреб") представляет собой панельку инструментов, позволяющую, в
частности, одним движением мыши установить точки останова на нужные функции
(например, в Visual Basic'е это что-то типа __vbaStrCmp или __vbaStrCopy,
используемые для сравнения и копирования строк, соответственно). Начинающие
хакеры просто визжат от восторга, поскольку красный ястреб фактически является
учебником по взлому, а так попробуй догадаться, что нужно делать! Каталог \SCRIPT
содержит 637 скриптов, главным образом предназначенных для снятия различных
протекторов/упаковщиков исполняемых файлов и автоматизации всяких рутинных дел.

SoftICE

Всем известный (даже тем, кто к крякингу даже близко не подходил) отладчик
для Windows, работающий дна уровне ядра. В отличие от прикладного отладчика, как
например OllyDbg, SoftICE способен приостановить все операции в Windows, что
очень важно для отладки драйверов. Работает в обход MS Debugging API, что
значительно усложняет антиотладку, однако, учитывая, что для разработчиков защит
soft-ice – враг номер один, практически все протекторы легко распознают его
присутствие в системе. Поэтому никак не обойтись без специальных расширений
(которые упомянем дальше). SoftICE был первоначально разработан компанией NuMega,
которая включала его в пакет программ для быстрой разработки
высокопроизводительных драйверов под названием Driver Studio, который
впоследствии был приобретён Compuware. Помнишь, сколько всевозможных мануалов
было по поводу установки Soft-Ice'а под Windows XP? Увы, начиная с висты,
отладчик не работает. Разработчики приостановили разработку в апреле 2006 года.
На официальном сайте его не найти и доступен только на торрентах.

Microsoft Debugger

Microsoft Debugger может работать как на прикладном уровне (ring-3), так и на
уровне ядра. Вплоть до XP ядерная отладка требовала, как минимум, двух машин,
соединенных COM-шнурком, но теперь достаточно и одной.

Поставляется в двух редакциях: windbg.exe – графический интерфейс и cdb.exe —
интерфейс командой строки. И та и другая являются лишь тонкими обертками вокруг
dbgeng.dll, в которой, собственно, и реализован основной отладочный "движок",
документированный протокол обмена. Поэтому, чтобы в очередной раз не писать
трассер с нуля, dbgeng.dll можно использовать в качестве "фундамента" при
написании универсальных распаковщиков исполняемых файлов.

Syser Kernel Debugger

Достойных отладчиков ядра всего три: SoftICE, Syser и Microsoft Kernel
Debugger, но SoftICE не работает на Висте и Server 2008, а Microsoft Kernel
Debugger – для хакерских целей не самый лучший вариант. Остается Syser, который
хакеры взяли на вооружение и весьма активно используют. Написан он двумя
предприимчивыми китайскими реверсерами Wu YanFeng и Chen JunHao. По сути, Syser
- отладчик уровня ядра с графическим оконным интерфейсом. Позволяет отлаживать
как приложения, так и драйвера. Сочетает в себе функции IDA Pro, Softice и
Ollydbg. Поддерживает подсветку листинга дизассеблера, динамическую загрузку и
выгрузку, все команды отладчика SoftICE, полноценную работу с юникодом и
многопроцессорными системами. Проработаны многие мелочи: например корректно
работает буфер обмена, позволяющий копировать данные из уровня Ring 3 в уровень
Ring 0. Многие из операций можно автоматизировать с помощью скриптов. Надо
сказать, что Syser - преемник SoftICE, из которого, как говорят, были дернуты
целые модули. У него масса преимуществ, как, впрочем, масса недостатков, поэтому
реально его приходится юзать совместно с Microsoft Kernel Debugger.

GNU Debugger – основной отладчик под UNIX, ориентированный на совершенно иной
тип мышления, чем все вышеперечисленные отладчики. Это не просто интерактивный
отладчик, скорее это станок с программным управлением, гибким и мощным
интерфейсом. Отлаживать с его помощью "честные" программы — одно удовольствие,
но в плане антиотладки дела обстоят плохо. GDB даже не пытается сопротивляться и
работает через библиотеку ptrace (которая на самом деле никакая не библиотека, а
системный вызов). GDB принципиально неспособен отлаживать программы, которые не
хотят, чтобы их отлаживали. А такие программы мало-помалу начинают появляться.

Естественно, помимо GDB существуют и другие отладчики для никсов, например,
Lin-Ice, но поскольку антиотладочные технологии под UNIX только-только начинают
развиваться, в большинстве случаев вполне сгодиться и GDB.

IDA Pro

IDA Pro - это одновременно интерактивный дизассемблер и отладчик. Она
позволяет превратить бинарный код программы в ассемблерный текст, который может
быть применен для анализа работы программы. Правда, стоит сказать, что
встроенный ring-3 отладчик довольно примитивен. Он работает через MS Debugging
API (в NT) и через библиотеку ptrace (в UNIX), что делает его легкой добычей для
защитных механизмов. Но зато IDA Pro — интерактивный дизассемблер более чем с
десятилетней историей, первая версия которой увидела свет 6 мая 1991 года. Юрий
Харон вместе с Ильфаком начали работать в том направлении, куда еще никто не
вкладывал деньги. До этого дизассемблеры писались исключительно на пионерском
энтузиазме параллельно с изучением ассемблера и довольно быстро забрасывались.
Стоит ли удивляться, что парням удалось решить практически все фундаментальные
проблемы дизассемблирования, над которыми просто не хотели работать остальные
разработчики, зная, что быстрой отдачи не будет и проект потребует десятилетий
упорного труда. К пятой версии IDA Pro имела в своем арсенале все необходимое
для автоматической декомпиляции, причем не просто декомпиляции, а очень
качественной декомпиляции. На текущй момент последний резиз 5.5 от 12 июня.
Влюбленные в продукт пользователи генерят немало полезных плагинов, в том числе
поддерживающих разные скриптовые языки для написания сценариев в дополнение к
встроенному IDC. Например,
IdaRUB
добавляет поддержку Ruby, а
IDAPython - Python.
Тут надо сказать, что начиная с версии 5.4 IDAPython идет предустановленной в
дистрибутивы ИДЫ.

Hex-Rays

Дальше разработчики подумали и решили, что уж раз смогли получить
человеческий код на ассемблере, то неплохо дописать еще одну фичу, переводящую
китайскую ассемблерную грамоту в доступный и понятный листинг на языке Си.
Закипела напряженная работа, по ходу которой выявлялись все новые и новые
подводные камни, обход которых требовал времени, усилий и мозговой активности. В
итоге на свет появился
Hex-Rays - декомпилятор, требующий обязательно установленную на компьютеру
ИДУ. Декомпилятору подается на вход бинарник, указывается ряд параметров, после
чего Hex-Rays выплевывает исходник на чистом C - в большинстве своем понятный и
доступный. Правда, спешить компилировать его обратно в бинарник не стоит, потому
как в большинстве случаев в момент компиляции ты увидишь столько ошибок, сколько
еще не видывал. Одна из причин - отсутствие поддержки в Hex-Rays ресурсов.

W32DASM

Начинающие хакеры обычно испытывают большие трудности при взломе программ,
написанных на Delphi и Builder, поскольку классические трюки, типа бряка на
GetWindowTextA, не работают. Для декомпиляции кода, написанного на Delphi/Borland
C++ Builder, т.е программ, которые используют библиотеку VCL от Borland, нужен
специальный подход, и он реализован в утилите DeDe. По сути, это единственный
работающий декомпилятор для Delphi-программ, которые не смотря ни на что никак
не умирают. DaFixer, автор проекта, к сожалению, забросил заниматься своим
детищем, поэтому официальной страницы у проекта в настоящий момент нет.
Подробнее о том, как совладать с программами на Delphi, читай в статье "Взлом
Борландии: изящная декомпиляция Delphi".

Любой коммерческий продукт должен быть достаточно хорошо защищен.
Разработчики намеренно использует разного рода упаковщики и так называемые
протекторы, которые применяют разного рода антиотладочные средства, максимально
препятствующие взлому программы. Обойти их можно, но для этого нужно четко
представлять, что использовалось для защиты программы, какой плагин для
отладчика использовать - и от этого "крутиться". Изящно определить название и
версию упаковщик способна небольшая утилита PEiD. Собственно, для этого она и
нужна.

PE Explorer

Программа для просмотра и редактирования PE-файлов - начиная с EXE, DLL и
ActiveX контролов, и заканчивая скринсейвверами SCR (Screensavers), апплетами
панели управления CPL, SYS и бинарниками для платформы Windows Mobile. По сути,
это не одна утилита, а целый набор тулз для того, чтобы посмотреть изнутри, как
работает программа или библиотека. Включает в себя просмотрщик заголовков,
экспорт вызовов API-функций, редактор ресурсов, дизассемблер.

IDA Pro Disassembler и отладчик - это многопроцессорный дизассемблер и отладчик, размещенный на платформах Windows, Linux и Mac OS X.

Альтернативы для IDA

48

OllyDbg - это 32-битный отладчик для анализа уровня ассемблера.

Скриншот 1 программы OllyDbg

OllyDbg - это 32-битный отладчик для анализа уровня ассемблера. Акцент на анализе двоичного кода делает его особенно полезным в тех случаях, когда источник недоступен.

33

Отладчик проекта GNU, или gdb, - это отладчик на уровне исходного кода для различных программ.

GNU Project Debugger, или gdb, является командной строкой, отладчиком на уровне исходного кода для программ, написанных на C, C ++, D, Objective-C, Fortran, Java, Pascal, ассемблере, Modula-2 или Ada и скомпилированных для любой из целого ряда различных целевых архитектур, включая x86, x86-64, IA-64, Alpha, ARM, Motorola 68000, MIPS, PowerPC, SPARC и другие. GDB поддерживает аппаратные точки остановки, условия, анализ дампа ядра, оценку выражений, удаленную отладку, вход/выход из кода, дизассемблирование и, в некоторых случаях, обратимую отладку.

21

x64dbg - это 64-битный отладчик на уровне ассемблера для Windows.

Скриншот 1 программы x64_dbg

x64dbg - это 64-битный отладчик на уровне ассемблера для Windows. Соответствующий 32-разрядный отладчик называется x32dbg.

17

Платформа реверс-инжиниринга и графический интерфейс.

Скриншот 1 программы Binary Ninja

binary-ninja - обратная инженерная платформа.

16

Hopper - это инструмент обратного инжиниринга для OS X и Linux.

Скриншот 1 программы Hopper

Hopper - это инструмент обратного инжиниринга для OS X и Linux, который позволяет вам разбирать и декомпилировать ваши 32/64-битные исполняемые файлы Intel Mac, Linux, Windows и iOS!

9

Immunity Debugger - это новый мощный способ написания эксплойтов, анализа вредоносных программ и обратного инжиниринга.

Скриншот 1 программы Immunity Debugger

Immunity Debugger - это новый мощный способ написания эксплойтов, анализа вредоносных программ и анализа бинарных файлов. Он основан на надежном пользовательском интерфейсе с графическими функциями, первым в отрасли инструментом для анализа множеств. Разработан специально для создания множеств с большим и хорошо поддерживаемым API-интерфейсом Python для легкой расширяемости.

3

Разборка в облаке. Сотрудничество в реальном времени, неограниченные ресурсы.

Скриншот 1 программы ODA Online Disassembler

ODA - это онлайн-дизассемблер для широкого спектра машинных архитектур, включая: Alpha, ARM, AVR, Intel x86, Motorola 68000, MIPS, PDP-11, PowerPC, SPARC, Z80 и многие другие! Загрузите файл Windows PE, ELF или простой двоичный файл, а затем просмотрите метаданные разборки и объектного файла, например символы и разделы.

3

64-битный дизассемблер для Windows.

Скриншот 1 программы ArkDasm

ArkDasm - это 64-битный интерактивный дизассемблер и отладчик для Windows.

Что в этом списке?

В списке находится программы которые можно использовать для замены IDA.

Это аналоги похожие по функционалу на IDA, которые заменяют программу частично или полностью. Этот список содержит 8 замен.

С помощью пользователей мы собираем каталог похожих друг на друга программ, чтобы вы могли подобрать альтернативу и скачать их. На сайте можно скачать популярные программы для Windows, Mac Os, Android и iPhone


Думаю, пришла пора. Наболело/накипело/есть мнение. С выходом Гидры ситуация с инструментарием для реверс-инженеров достаточно сильно изменилась. Если раньше выбора чем пользоваться особо не было (здесь не будут упоминаться Binary Ninja, Hopper, JEB или Radare2, потому как в известных мне ИБ-компаниях и комьюнити ими пользуется очень малое количество человек, либо же порог вхождения в некоторые (привет, Радар) очень высок, либо же покрытие архитектур ограничено лишь x86/x64/ARM/ARM64/MIPS), то теперь мы имеем очень мощного конкурента Hex-Rays в лице АНБ с их GHIDRA .

Но так ли Гидра хороша? Так ли плоха IDA (или наоборот)? Давайте разбираться. В данной "статье" я постарался свести все плюсы и минусы обоих инструментов. У меня не было цели сказать, что тот или другой инструмент лучше — выводы делайте сами. К тому же, и один и второй инструмент развиваются. И статья будет содержать лишь результаты сравнения на момент написания. Сравнение будет производиться по следующим категориям:

Если вы — реверс-инженер, работающий только с Intel-платформами (x86/x64), то наличие всех остальных для вас не имеет особого значения. Но, если вам приходится работать с множеством различных файлообменников архитектур, то чем больше их будет в дефолтной поставке, тем лучше.
То же самое, что и в предыдущем пункте, только касаемо форматов данных.
Чуть ли не самый нужный и важный компонент — декомпилятор. От одного только дизассемблера смысла особо нет, поэтому здесь — обзор того, что умеет/выдаёт Ghidra / IDA .
Реверс-инженерам, работающим с различными архитектурами, форматами, и выполняющим множество однотипных задач регулярно, важно иметь возможность быстро и удобно писать дополнительные модули/загрузчики/скрипты. Также, было бы хорошо иметь возможность
их отлаживать. Посмотрим, как обстоят дела у каждого из продуктов.
Казалось бы, зачем она нужна? Мы уже все давно привыкли к горячим клавишам, нашли маны по написанию плагинов и т.п., в интерфейсе тоже разобрались. Но, как много на это ушло времени? С документацией, особенно качественной, сделать это получится быстрее и спокойнее.
Важный и необходимый компонент для среды реверс-инжиниринга. В статике тоже можно, но в динамике всяко проще.
Если дело касается очень больших файлов (от 10 МБ и больше), важно, чтобы среда для реверс-инжиниринга не заставляла уходить пить чай, ложиться спать, пока идёт анализ файла.
Несмотря на то, что главное — функционал, то, как он подаётся пользователю, как он выглядит, играет немаловажную роль. Если интерфейс позволяет не использовать для часто используемых формочек и команд мышь, это плюс. Если же нужно продираться через кучу окон для того, чтобы добавить входной аргумент в функцию, это уже минус. Сравним.
То, как быстро фиксятся баги, добавляются новые фичи, а, соответственно, выходят новые версии, является показателем хорошей команды разработчиков и серьёзного подхода.
Вы хотите сообщить об ошибке авторам, предложить новую фичу, или же просто о чём-то спросить — всё это о саппорте. Разберёмся, кто лучше — платный, или бесплатный продукт.
Наличие комьюнити, и возможности с ним пообщаться, обсудить проблемы разработки, вопросы по функционалу, или просто получить дельный совет от знающих людей (не разработчиков) — это вот и есть комьюнити.
Работа нескольких человек над одним проектом достаточно важный пункт, чтобы его игнорировать.

Сравнение

1. Поддерживаемые архитектуры (IDA)

Если работа не ориентирована на IoT, то хватит и Starter , иначе — придётся покупать Pro -версию.
Декомпиляция имеется лишь для x86 / x64 / arm / arm64 / PowerPC , в первой половине следующего года обещают выкатить декомпилятор MIPS .

1. Поддерживаемые архитектуры (GHIDRA)

Онлайн версии списка нет, поэтому привожу его здесь:


Здесь список представлен в виде базовых процессоров (без модификаций), но это не значит, что они не поддерживаются. Декомпиляторы имеются для каждого из процессорных модулей.

2. Поддерживаемые форматы (IDA)

Список достаточно большой. Плюс есть плагины от комьюнити, которые никогда не будут добавлены в коробку, т.к. для этого нужно будет обсудить данный момент с Ильфаком Гильфановым (главным разработчиком).

2. Поддерживаемые форматы (GHIDRA)

3. Качество декомпиляции (IDA)

Декомпилятор у Иды замечательно работает с x86 / x64 / arm / arm64 кодом (про PowerPC сказать не могу, т.к. не доводилось встречаться), который был сгенерирован каким-либо стандартным компилятором, выдаёт в большинстве своём аккуратный C-листинг.

Разработчики изначально ориентировались на MS-DOS код, поэтому учитываются артефакты даже довольно старых компиляторов (отсюда в интерфейсе во многих окнах имеются сегменты , сегментные регистры , es / ds / ss / fs / gs ( ds — даже на MIPS!)), вплоть до вполне новых. Правда со включенными оптимизациями компиляторов IDA справляется не так хорошо, и выхлоп превращается в ад.

С кодом, написанном на неизвестном для Иды компиляторе (либо на ассемблере), результаты становятся совсем плохими: использование нестандартной calling convention превращает декомпилированный листинг в практически нечитаемый набор строк.

Необходимость задавать нужные регистры вручную в строке ввода прототипа функции через __usercall с её @ и <> , с одной стороны — большой минус, особенно, когда регистров много, а с другой — у Гидры такого нет, и там — только через GUI, что не всегда удобно, если количество используемых регистров мало.

3. Качество декомпиляции (GHIDRA)

Я не знаю людей, которые скажут, что декомпилятор Гидры классный. Тут за радость скорее то, что он вообще есть, и есть для каждого поддерживаемого процессора!

У декомпилятора Гидры много непривычного глазу пользователя Иды мусора в выдаваемом коде, что часто отвлекает от понимания сути происходящего в нём.

Зато у декомпилятора Гидры есть одна замечательная особенность — он обладает эмулятором инструкций, что позволяет ему выбрасывать мусор, который не используется и никогда не будет вызван, с одновременным упрощением некоторых моментов.

Также декомпилятору Гидры всё равно, в каких регистрах приходят аргументы — если к ним идёт обращение, они будут использованы.

Тут хотелось бы отметить, почему у Гидры или у Иды имеются свои особенные проблемы с декомпиляцией. Дело в ориентированности каждого из продуктов. IDA , как я уже отмечал выше, создавалась с ориентацией на MS-DOS и, в целом, на x86, затем постепенно покрывая x64 и ARM. Отсюда просто замечательное качество выхлопа для указанных платформ, но абсолютно никакое покрытие других.
У Гидры наоборот — она создавалась с целью реверс-инжиниринга IoT-устройств. Отсюда большое количество поддерживаемых процессоров, внятное описание каждого из них, и простая возможность создавать новые. Но, из-за того, что разработчики старались покрыть множество архитектур, улучшение выхлопа декомпилятора не стало приоритетной задачей.

4. Расширяемость функционала (IDA)

Ида позволяет писать загрузчики, плагины, отладчики и процессорные модули, а также скрипты прямо в интерфейсе. Некоторые можно писать и на питоне, что немного удобнее (через плагин IDAPython, написанный не разработчиками IDA , автор — Elias Bachaalany ).

Процесс разработки плагинов во времена версий 6.x был достаточно сложным, т.к. вменяемая документация отсутствовала. Теперь времена изменились, написать своё поделие стало проще. Имеется контест, проводимый каждый год, где разработчики выбирают лучший на их взгляд плагин (а взгляд довольно таки спорный). Например, в последнем контесте победил, никогда не угадаете какой сократитель расширитель функционала… Им оказался плагин, который УБИРАЕТ поддержку Undo в IDA ! Просто нет слов. Об этой возможности разработчиков просили так долго, но, пока не вышла GHIDRA , никто и пальцем шевелить не хотел. А теперь — пожалуйста, убрать крутую фичу плагином — Вы выиграли, поздравляем!

Отладка плагинов производится легко, особенно если он был написан на C++. Отлаживать скрипты на питоне или IDC — уже сложнее, и официального способа нет.

Очень сильная боль в заднем проходе началась, когда в версии 7.0 практически полностью переписали API, сделав его несовместимым со старыми версиями. С одной стороны, названия функций сделали понятнее, поубирали лишние аргументы, разработка стала проще. Но, если вы, как и я, разрабатывали плагины ещё для версий 6.x , и потребовался перенос вашего детища на свежий SDK, то, головная боль была вам обеспечена.

А потом в версии 7.1 снова произошли изменения, и всё нужно было чинить по-новой.

4. Расширяемость функционала (GHIDRA)

Ghidra написана на Java (с декомпилятором на C++ ), с поддержкой скриптинга на Python (через Jython ). В стандартной поставке имеется плагин GhidraDev для Eclipse , позволяющий создавать шаблоны проектов (который можно импортировать потом в IntelliJ IDEA ). Авто-дополнение в IDE и документация работает прекрасно и, на то, чтобы разобраться с написанием своего первого плагина уйдёт от силы полчаса.

С помощью Eclipse удобно отлаживать свои проекты прямо во время разработки.

5. Документация (IDA)

Документация IDA — её слабое место, и так повелось уже давно. Как и у большинства разработчиков, уклон идёт в функционал, нежели в его документирование. Отсюда и скудный HLP -файл, идущий в поставке.

Книга "IDA Pro Book" была написана не разработчиками, и выходила только для 6-й версии. С тех пор новых книг не выпускалось, мануалов по разработке плагинов от разработчиков нет.

Где-то с версии 7.0 документация начала обрастать веб-версией, и скудным описанием API-функций из SDK.



5. Документация (GHIDRA)

Документация у Гидры, в отличие от Иды, писалась одновременно с разработкой. Отсюда, мы имеем комментарии к практически каждой вызываемой функции API, элементам перечислений, и классам. Справочный файл, идущий в поставке, и описывающий интерфейс и настройки Гидры, также выполнен добротно, со скриншотами и примерами для, фактически, каждой кнопки или пункта меню.



6. Отладчик (IDA)

6. Отладчик (GHIDRA)

Увы, но отладчика в публичном доступе пока нет. В доках на WikiLeaks были упоминания некоторых отладочных модулей. Тем не менее, известно о том, что в АНБ работают над этим, и отладчик будет!

Пока же, через плагины, расширяющие возможности интерфейса, есть возможность написать свой отладчик. Но, судя по всему, никто этого не делает.

7. Скорость работы (IDA)

Над большими файлами Ида пыхтит куда меньше Гидры, но далеко не всегда. Анализатор Иды работает в однопоточном режиме, и на больших файлах одно ядро целиком загружено, пока остальные простаивают. В ближайшем будущем авторы менять это не собираются (из слов разработчиков).

7. Скорость работы (GHIDRA)

Когда разговор двух реверсеров доходит до обсуждения скорости работы этих Иды и Гидры, каждый приходит ко мнению, что Гидра оооочень долго обрабатывает большие файлы. Хотя и написана с учётом многопоточности. А виной всему Java : плюс к кросс-платформенности, минус к скорости. Тем не менее, если настроить количество памяти, стека и кучи для JVM , а также число потоков, работа слегка ускоряется.

8. Удобство работы (IDA)

Несомненно, многие знают горячие клавиши Иды наизусть. Они простые и понятные, часто интуитивные. Многие пункты меню и фичи Иды умеют вызываться с клавиатуры, что вполне удобно.

Касаемо внешнего вида, до какой-то из версий 6.x использовался самописный графический интерфейс. Далее разработчики полностью перешли на Qt . Интерфейс стал однозначно приятнее. Расположение вкладок, кнопок и элементов интерфейса не менялось уже очень давно.

Отсюда вытекают и плюсы, и минусы. Плюсы — интерфейс привычный, не нужно искать что где находится, и бороться с привычками. Минусы — некоторые элементы остаются рудиментарными (редактор структур выглядит как наследие именно старых версий Иды) или не используются 90% времени..


8. Удобство работы (GHIDRA)

Здесь всё с точностью до наоборот. Новый продукт на рынке, различие горячих клавиш по сравнению с Идой, делают своё дело. Скорость работы, которая за большое время работы с Идой достигла огромной скорости, в Гидре начала проседать. Но, понятное дело, при длительной работе в последней привычки также появляются, и становится не так тяжело.

Гидра имеет множество меню, количество элементов в которых порой достаточно большое, и не все пункты имеют горячие клавиши. Но, при этом, конфигуратор настроек горячих клавиш позволяет повесить практически на каждую команду свою горячую клавишу.

Т.к. Ghidra написана на Java , разработчики использовали базовый функционал JDK , а именно Swing . Из-за этого имеем то, что имеем. Но это нельзя назвать минусом Гидры.

9. Выход новых версий (IDA)

Вы заметили, что с выходом Гидры новые версии Иды стали выходить чаще? А я вот присмотрелся. Знаете почему? Конечно, дело в конкуренции. Наконец-то она появилась!

Думается, что скорость выхода новых версий Иды увеличится из-за конкуренции продуктов.

9. Выход новых версий (GHIDRA)

Регулярность выпуска новых версий Гидры достаточно большая: с момента публикации исходников вышло около шести версий.

Если ждать выхода нового дистрибутива долго, можно собрать master-ветку с github. Первый раз собираться будет больше часа, но, оно того стоит.

10. Сложность получения дистрибутива (IDA)

Ликнутые версии появляются, но редко. Потому большинство реверс-инженеров энтузиастов сидит на старых, слитых когда-то дистрибутивах ESET , и китайского антивируса.

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

10. Сложность получения дистрибутива (GHIDRA)

Казалось бы, тут писать вообще нечего, но. На самом деле, к основному сайту Гидры доступ из России, Израиля и Китая запрещён. Нужен VPN , или Tor (скорость скачивания соответствующая). На github релизов нет, только исходники.

11. Поддержка (IDA)

Сколько мне приходилось общаться с поддержкой Hex-Rays , всегда был разный опыт: часть людей, работающих в саппорте, очень вежливые и всегда готовы помочь. Часть: главный разработчик, и общение становилось грубым. Особенно если мнение не совпадало. Но, наверное это характер такой. То же самое и в общении с пользователями в интернете.

Недавно выяснилось, что с саппортом из моих знакомых общаюсь только я. Очень старая бага, связанная с потерей выделения при прокрутке, возникшая ещё в версии 6.6, о которой знают все, никогда не была зарепорчена разработчикам. Спросил, в чём же дело. А ответы в стиле: "не хочется общаться с человеком, который так относится к пользователям". Увы, репутация работает именно так.

Тем не менее, баги и предложения, о которых я сообщал разработчикам, исправлялись, и учитывались (не все).

11. Поддержка (GHIDRA)

У Гидры есть репозиторий на github . Там есть issues , и именно туда необходимо сообщать о багах. Скорость ответа на некоторые может быть как очень долгой, так и достаточно быстрой. Но, баги не закрываются просто так, мол, не хотим это реализовывать. Всё рассматривается, учитывается. Каждый желающий может внести свою лепту.

PR применяются и рассматриваются медленно. Зависит от критичности.

12. Комьюнити (IDA)

Его скорее нет, чем есть. Разрозненные разработчики, реверс-инженеры, каждый со своими скриптами и плагинами. Нет специализированных чатиков, каналов, в которых можно было бы поболтать со знающими людьми, спросить совета.

12. Комьюнити (GHIDRA)

Здесь всё совершенно иначе: сайты типа ghidra.re, телеграм-группы, типа @GHIDRA, тот же github. На всех этих ресурсах можно задать любой вопрос, и получить на него ответ или помочь в решении.

13. Совместная работа над проектом (IDA)

У Иды данная возможность отсутствует из коробки. Вроде были плагины, реализующие данную возможность, но, почему-то, они не прижились.

13. Совместная работа над проектом (GHIDRA)

Данный функционал присутствует в Гидре из коробки. Можно создать Гидра-сервер, который будет синхронизировать результаты работы.

Выводы

С выходом Гидры многое изменилось. Появилась конкуренция, появилась бесплатная среда для реверс-инжиниринга. Но, это как с Linux в организациях — на внедрение/обучение/переквалификацию нужно время и, если однажды потратить время на всё это, дальше будет легче.

Плюс немаловажную роль играет стоимость покупки/ежегодного обновления IDA . Не все молодые компании могут себе позволить купить дистрибутив, да ещё с декомпилятором. Да и могут ли они её купить.

Также, если для вас важна совместная работа над проектами, стоит обратить внимание на Ghidra . Почему данный функционал так и не был реализован в IDA — не понятно.

Конкуренция — это хорошо. Без неё вообще никак. Я не считаю, что Ghidra лучшая, а IDA — плохая. У каждой из них есть свои плюсы и минусы, но однозначно реверсить малварь легче в Иде, IoT и другие устройства — в Гидре. А выбор всё равно за вами.


Вот его скромный набор. Более подробную информацию можно найти в даташите на него.
Данный контроллер является собратом по линейке Intel 8049, только лишенный внутренней памяти.
Еще раз повторюсь, контроллер очень старый, однако, как мне казалось его более современные братья, которые имеют аналогичный, но более широкий набор переферии типа Intel 80c31 и другие контроллеры семейства 80с51 строятся на одной архитектуре и я даже сначала обрадовался, когда с помощью Ida pro произвел дизассемблирование и получил это:


Моему взору предстали знакомые команды и программа любезно отобразила стрелочками переходы по адресам от различных векторов прерывания. Однако радость была недолгой.
Дабы удостовериться, что дизассемблирование произведено верно, я решил повторить процедуру для другого контроллера того же семейства 8031, несильно отличающегося от 8051. Проводил это в среде разработки Phyton Code Master и получил те же самые команды. Среда чудесным образом отображала мне распределение памяти, адреса регистров


И я решил попробовать "пройтись" по программе с помощью симулятора. И буквально на второй же команде меня напрягло следующее: После выполнения второй инструкции осуществлялся переход по метке в самый конец памяти на операцию NOP, то есть минуя всю основную программу. Что-то пошло не так. Начал разбираться и обратил внимание на то, какая команда в этот момент выполнялась, начал искать ее в даташите на свой контроллер и не нашел. Это означало только одно — архитектура контроллеров разная и тот дизассемблированный файл не годится для его исполнения контроллером 8031(51), несмотря на всю их схожесть. Пришлось начать сначала, однако, все гораздо страшнее, чем я предполагал. Почти целый вечер я потратил на то, чтобы найти дизассемблер для контроллера 8039 и после первых минут поиска стало понятно, что о привычном дизассемблировании в среде разработки или той же самой IDA Pro можно забыть. Наконец, я наткнулся на сайт, где скачал дизассемблер для этого контроллера под Windows, Linux. У меня на ПК установлен Windows 7 и из под него дизассемблер не запустился, даже через эмулятор DOS-BOX и в режиме совместимости. Из под Linux — получилось, однако дальнейший процесс опишу для Win. На помощь пришло приложение Virtual PC с помощью которого друг помог сэмулировать старую-добрую XP из под которой, опять же, через консоль запустилось приложение. Выглядело это так:


после чего я получил программу работы котроллера №1 в ЭБУ в более-менее адаптированном для чтения ассемблерном виде, записанную в файл с расширением .txt.


Нужно отметить, что процесс ассемблирования производится аналогичным образом — из файла с программой в текстовом формате создается прошивка, которая потом с помощью программатора записывается в микросхему ПЗУ. Вот такая вот жесть :-)

Учитывая, что мне еще предстоит долго работать с этим контроллером и программами для него от разных моделей, пожалуй, попробую добавить в Ida Pro данный тип микроконтроллера, но это уже совсем другая история. Продолжение следует. Не переключайтесь :-)

Читайте также: