Pull to refresh

Comments 29

Полезно, большими отладчиками 64 бита не умею отлаживать, а Оля не поддерживает, пришлось забросить увлечение. При случае испытаю сею программу. В Лаборатории раньше был бесплатный курс, хотели детей брать, но меня тоже пустили, только у меня знания ассемблера слабоваты для совсем лёгкого ориентирования в коде

Тема брутфорса не однозначна, универсален и не зависит от «прямоты» рук
Любопытно, а для брутфорса ещё никто не пробовал использовать нейронную сеть, обученную на валидных ключах?
Есть symbolic execution.
Мне кажется обучение не будет работать, потому что хоть у нас и есть множество известных ключей по словарю, но зашифрованные данные будут каждый раз иметь вид случайного числа (если используются стандартные криптографические алгоритмы), поэтому невозможно оценить насколько мы ошиблись подбирая ключ. То есть проблема в том что невозможно оценить степень ошибки в значении каждого пробного ключа, а стало быть сеть не сможет учиться.
А насколько правильно такой метод называть reverse-engineering? Это же в чистом виде дизасэмблер с полным раскрытием сущности «черной коробочки»
Дизасемблирование — это инструмент. Реверс инжиниринг — область, в которой этот инструмент применяется.
Хм, а как тогда классифицировать метод, который подразумевает анализ входных и выходных данных, когда сущность объекта исследования не раскрывается, то есть по сути он представляется как некий «черный ящик», по поведению которого восстанавливается модель объекта?
Я почему-то именно так представлял реверс-инжиниринг и в программной индустрии, без дампов памяти.
Ну существуют разные подходы. В данном случае это может быть продемонстрированный метод с нахождением и разбором кода проверки серийника, это может быть брутфорс либо с целью нахождения одного серийника, либо угадыванию алгоритма по входным данным, либо банальная модификация исполняемого файла с целью обхода кода проверки. В общем-то все методы так или иначе — реверс ижиниринг, тут скорее просто вопрос терминологии. Конечной целью является выдача сообщения об успешной проверке, ну а кто какой подход применяет — тут уже на усмотрение хакера. Многие считают «неспортивным» использование брутфорса либо модификацию одного байта без разбора сути алгоритма. Но без «дампов памяти» в реверс инжиниринге как правило не обходится. Да взять скажем, анализ протоколов какой-нибудь нестандартной железки — там снимаются дампы и анализируются, потом воспроизводятся самодельной железкой — для меня это вполне себе реверс инжиниринг.
Задачи реверс инжиниринга можно решать и по вашему и по моему. И то и другое — реверсинг. Просто для каждой конкретной задачи выбирается конкретный метод.
Реверсингом не занимался с 2011. Как отладчик использовал первую версию OllyDbg с плагинами. x64dbg увидел впервые. Что скажете по поводу сравнения? Поддерживает ли x64dbg плагины, скрипты наподобие OllyScript?
На официальном сайте разработчика есть полный список поддерживаемых плагинов. Что касается сравнения, то по удобству x64dbg ни чуть не уступает OllyDBG.
UFO just landed and posted this here
Так программа ещё в альфе и обновляется часто.
Что примечательно — два дня назад был резкий скачок скачиваний. Интересно, это потому, что автор первую статью разместил в песочнице и много кто именно там её прочитал?
UFO just landed and posted this here
То есть существует программа почти два года, скачивают её 1-2 человека, а потом раз — свыше 2 тысяч. Снапшот от 24 августа 2016 года, а статья из песочницы вышла 25 августа.
И я думаю, на вторую строчку гугла она попала из-за >2 тысяч прямых запросов именно 24-25 августа.
Может, авторы программы где рекламу кинули, конечно же, но всё это очень подозрительно. Всё в одних датах.
UFO just landed and posted this here
Когда я последний раз пробовал x64dbg я что-то не увидел там статического анализатора. Что-то поменялось в этом плане, иначе уступает?
Зачем Оля, когда есть Ида?
Иду сложно достать официально. Хотя если честно я в восторге от блоков, которые генерит Ида. Почему подобный подход не используется в других дизассемблерах, я не понимаю.
Потому что это два принципиально разных инструмента которые дополняют друг друга.
Какие у них принципиальные отличия?
IDA это прежде всего инструмент для создания осмысленного листинга кода.
Oly это прежде всего отладчик со всеми вытекающими.

Ида тоже отлично отлаживает.
Не вполне.
Во первых, встроенный в IDA дебаггер использует MDE в случае windows и mtrace в случае линукс. Подобная реализация становиться бесполезной чуть более чем полностью, когда вы сталкиваетесь с кодом в котором реализованы антиотладочные механизмы. Поскольку предназначена для отладки «дружественного» кода, и никак не ориентирована на работу с кодом препятствующему отладке.

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

Отладчик в IDA это полезный бонус, но никак не исключающий необходимость использования стороннего отладчика. Это как в ламповые ДОС времена использовать turbo debugger вместо soft ice для реверса кода написанного с целью затруднить его анализ.

В этом примере не хватает какой-нибудь «изюминки», что ли.
Я это к тому, что когда сходу в дизассемблиррованном файле вы видите что-то типа такого:

то это всё равно, что крякми вам выдали практически на блюдечке с голубой каёмочкой.
Любая банальная минимальная обфускация приведёт к тому, что вы вот так вот просто не найдёте место, где производится анализ серийника.
Это может быть даже не обфускация, а, скажем, хмм, нетрадиционное средство разработки.
Ну вот, к примеру, за завтраком я набросал довольно примитивный пример, внешне похожий на тот, что обсуждается:
crackme02_x64.7z (10.339.522 Bytes)

Это x64 приложение, алгоритм проверки там не сложнее, чем в примере касперского, решения имеются (множественные), но попробуйте его крякнуть на досуге.
Рантайм библиотеку я бросил в ту же папку — должно запускаться на голой Win7x64SP1 «из коробки» (я проверил в виртуалке).
Вирусов нет (VirusTotal никто не отменял и я проверил на ложные срабатывания), а исходники вышлю по запросу.
Заинтригован! Напишите, пожалуйста, аналогичную заметку и по этому упражнению :)

Вот да, от крякми ожидается какая-то изюминка, делающая поиск решения менее тривиальным. Многопоточность, таймеры, ВМ, использование API с callback-ами, динамический код, редкие инструкции ассемблера. Да хотя бы цикл через add esp, 4; ret

Это не крякми, это скорее кейгенми. Будь это крякми вы бы просто запатчили условный переход, который выдаёт итоговый результат, и все дела.
Sign up to leave a comment.

Articles