Рубрика «Ghidra»

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

Для иследования нам понадобятся следующие утилиты:

  • Detect It Easy (DiE) (github) - детектор типа файлов.

  • Ghidra (github) либо IDA/Binary Ninja - дизассемблер на ваше усмотрение.

  • x64dbg (github) либо любой любимый вами дебаггер.

  • Interactive Delphi Reconstructor (IDR) (github) - интерактивный декомпилятор под Delphi.

  • Dhrake (githubЧитать полностью »

Контроллер CH579. Начинаем работу и избавляемся от закрытой сетевой библиотеки - 1

Сегодняшняя статья – не восклицание: «Смотрите, какой мне красивый проц попался». Это скорее просто упорядочивание накопленных сведений о конкретном процессоре CH579. Вдруг кому пригодится. Ну, и, если через годы мне потребуется, я сам буду восстанавливать знания по этой статье. Просто так получилось, что по проекту Заказчик велел освоить его… Это недорогой микроконтроллер на базе ядра Cortex M0. После освоения Заказчик же и сказал, что мы всё будем делать на китайском клоне STM32. Характеристики же самобытного CH579 он признал недостаточными.

Но с другой стороны… Сегодня эта микросхема стоит 120-150 рублей за штуку на Ali Express. А у неё имеется не только встроенный PHY для десятимегабитного Ethernet, но и всё для работы по BLE. По-моему, не самая плохая цена. Кажется, для Интернета вещей может пригодиться. Но это цены за микросхему. Макетки безобразно дороги.

Ещё на многих форумах народ возмущается, что сетевая библиотека для этого контроллера поставляется не в виде исходных кодов. Китайцы отвечают, что они не собираются ничего менять. Наш Заказчик тоже возмущался. Поэтому в статье я покажу, каким путём мы шли, чтобы сделать исходный код. Любой сможет повторить этот путь буквально за пару дней. Там скорее обидно, чем сложно.

В общем, сегодня мы пробежимся по работе с китайским контроллером CH579. Будет немного практических сведений и немного мемуаров, как пришлось вскрывать библиотеки.Читать полностью »

Предыстория

В этой серии статей я рассказываю о системе лицензирования ПО, использовавшейся в проприетарном программном приложении 2004 года. Это ПО также имеет пробный режим без регистрации, но с ограниченными функциями. Бесплатную лицензию можно было получить, зарегистрировавшись онлайн на сайте поставщика ПО. Примерно в 2009 году приложение перешло в статус abandonware и его перестали распространять. Хотя двоичный файл ПО был архивирован, пока не предпринимались попытки восстановления функциональности, которую можно было получить благодаря бесплатной лицензии.

Дизассемблируем двоичный файл

В одном из предыдущих постов о другом проекте реверс-инжиниринга я использовал в качестве дизассемблера IDA Free. Позже Агентство национальной безопасности США выпустило свой инструмент для реверс-инжиниринга Ghidra как ПО с open source. Его я и буду использовать в этом проекте.

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

Реверс-инжиниринг ПО начала 2000-х - 1

IDA автоматически идентифицирует функцию как 0x4f64dc, но Ghidra её не определяет. Как оказалось, именно эта функция и нужна будет в нашем анализе. Ghidra может выполнять более подробный анализ через AnalysisOne ShotAggressive Instruction Finder, но результат всё равно будет неполным.

Из метаданных двоичного файла ПО мы знаем, что сборка была создана в Delphi 7 (выпущенном в 2002 году).Читать полностью »

Первое знакомство с отладчиком Ghidra и взлом игры Spiderman - 1

В середине декабря в твиттер-аккаунте NSA было объявлено о релизе новой ветки Ghidra с долгожданной поддержкой отладки. Теперь с помощью GDB-заглушки и прочих механизмов можно будет выполнять ее пошагово внутри самой Ghidra. Желая отпраздновать это событие, которое совпало с моим домашним карантином, я подготовил небольшой обзор сборки этой версии, включая пример использования ее отладчика для интересной цели.Читать полностью »

GHIDRA vs. IDA Pro - 1

Приветствую,

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

Пишем USB-драйверы для заброшенных устройств - 1

Недавно на eBay мне попалась партия интересных USB-девайсов (Epiphan VGA2USB LR), которые принимают на вход VGA и отдают видео на USB как веб-камера. Меня настолько обрадовала идея, что больше никогда не придётся возиться с VGA-мониторами, и учитывая заявленную поддержку Linux, я рискнул и купил всю партию примерно за 20 фунтов (25 долларов США).

Получив посылку, я подключил устройство, но оно даже не подумало появиться в системе как UVC. Что не так?

Я изучил сайт производителя и обнаружил, что для работы требуется специальный драйвер. Для меня это была новая концепция, ведь в ядре моего дистрибутива Linux обычно есть драйверы для всех устройств.
Читать полностью »

Укрощение Горыныча, или Декомпиляция eBPF в Ghidra - 1

Автор статьи https://github.com/Nalen98

Добрый день!

Тема моего исследования в рамках летней стажировки «Summer of Hack 2019» в компании Digital Security была «Декомпиляция eBPF в Ghidra». Нужно было разработать на языке Sleigh систему трансляции байткода eBPF в PCode Ghidra для возможности проводить дизассемблирование, а также декомпиляцию eBPF-программ. Результатом исследования является разработанное расширение для Ghidra, которое добавляет поддержку eBPF-процессора. Исследование, как и у других стажёров, можно по праву считать «первопроходным», поскольку ранее в других инструментах реверс-инжиниринга не было возможности проводить декомпиляцию eBPF.

Читать полностью »

Привет всем,

GHIDRA, исполняемые файлы Playstation 1, FLIRT-сигнатуры и PsyQ - 1

Не знаю как вам, а мне всегда хотелось пореверсить старые приставочные игры, имея в запасе ещё и декомпилятор. И вот, этот радостный момент в моей жизни настал — вышла GHIDRA. О том, что это такое, писать не буду, можно легко загуглить. И, отзывы настолько разные (особенно от ретроградов), что новичку будет сложно даже решиться на запуск этого чуда… Вот вам пример: "20 лет работал в иде, и смотрю я на вашу Гидру с большим недоверием, потому что АНБ. Но когда-нибудь запущу и проверю её в деле".Читать полностью »

В первой части статьи мы при помощи Ghidra провели автоматический анализ простой программы-крякми (которую мы скачали с сайта crackmes.one). Мы разобрались с тем, как переименовывать «непонятные» функции прямо в листинге декомпилятора, а также поняли алгоритм программы «верхнего уровня», т.е. что выполняется функцией main().

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

О том, что это за зверь такой — Ghidra («Гидра») — и с чем его едят она ест программки, многие уже, наверняка, знают не понаслышке, хотя в открытый доступ сей инструмент попал совсем недавно — в марте этого года. Не буду докучать читателям описанием Гидры, ее функциональности и т.д. Те, кто в теме, уже, уверен, всё это сами изучили, а кто еще не в теме — могут это сделать в любое время, благо на просторах веба сейчас найти подробную информацию не составит труда. Я же дам только основные ссылки:

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

Давайте попробуем уже что-нибудь сломать этой Гидрой!
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js