Выполнение автоматического анализа Время запустить полный автоматический анализ программы
hydra в Гидре. С предварительным анализом мы закончили. Начинаем изучать код основной функции. Установка Ghidra 1) установи JDK версии 11 или выше (у меня 12 ) 2) скачай Гидру (например, отсюда ) и установи ее (на момент написания статьи последняя версия Гидры.0.2, у меня стоит.0.1). Находим и изучаем крякми. Отображение ascii не всегда работает? Если еще нет, то все просто. Обзор интерфейса браузера кода Настройки интерфейса по умолчанию разбивают окно на три части. Итак, теперь мы поняли, что нам необходимо: 1) создать двоичный файл с верным ключом; 2) передать его путь в крякми после аргумента "-f" Во второй части статьи мы будем анализировать функцию _construct_key, которая, как мы выяснили, отвечает за проверку искомого ключа в файле. После импорта наш ждет еще больше информации: Здесь, кроме вышеуказанной разрядности, нас может еще заинтересовать порядок байтов (endianness который в нашем случае Little (от младшего к старшему байту что и следовало ожидать для «интеловской» 86-й платформы. Строки if (bVar1) инициализировать массив memset2 Dest,0,0x100 скопировать строку в _Dest и прервать цикл strncpy2 Dest Argvi,0x100 break;. Работа в Гидре ориентирована, в первую очередь, именно на анализ декомпилированного кода. При ошибке чтения (например, файл недоступен) выводится сообщение об ошибке в поток stderror и программа завершается с кодом. Здесь я сразу добавил комментарии. Когда ramp закрылся, популярность Hydra Market начала резко возрастать. _free_key(void 0x0 else _text ssssn ppcVar4 0x10d ppcVar4 0x219 ppcVar4 0x325 ppcVar4 0x431 _free_key(ppcVar4 _text File _text Dest iVar2 0; else iVar2 1; return iVar2; Вроде бы с виду все нормально определения переменных, стандартные C-шные типы, условия, циклы, вызовы функций. Запускаем Гидру и в открывшемся Менеджере проектов сразу создаем новый проект; я дал ему имя crackme3 (т.е.проекты crackme и crackme2 уже у меня созданы). Ghidra Гидра и с чем его едят она ест программки, многие уже, наверняка, знают не понаслышке, хотя в открытый доступ сей инструмент попал совсем недавно в марте этого года. поэтому рекомендую глядеть ascii таблицу в Интернете. Если массив оказывается пуст, в консоль выводится лаконичное «Nope» (т.е. Начинать следует в большинстве случаев с поиска точки входа программы,.е. Вот здесь мы создаем C-строку (массив char ) из 256 символов: char Dest; _Dest (char calloc2(0x100,1 / эквивалент new char256 в C Дальше у нас цикл из 3 итераций. Что произошло? В частности, перейти к определению функций, переменных и секций памяти можно просто двойным кликом в коде. Создание проекта в Гидре и предварительный анализ. Этот флаг устанавливается при анализе следующего аргумента: n_strlen strlen2 Argvi if (n_strlen 2) (int Argvi 0x7fffffffU) 0x2d) (int Argvi1 0x7fffffffU) 0x66) bVar1 true; Первая строка вычисляет длину этого аргумента. Основной функции, которая вызывается при ее запуске. Адреса памяти, смещения.д. В архиве находим два каталога, соответствующие ОС Linux и Windows. В правой части листинг декомпилированного кода (в нашем случае на языке C). Давайте запустим и посмотрим, чего она хочет: Похоже, облом! Так же
сайт и с анализом каждый плагин отвечает за свой вид анализа. Здесь стоит отметить еще одну удобную фишку Гидры синхронизацию выделения: при выделении мышью диапазона ASM-команд выделяется и соответствующий участок кода в декомпиляторе и наоборот. Заглушка на «Гидре которая отображается не у всех.