суббота, 23 ноября 2013 г.

Как устроиться вирусным аналитиком. Или Crackme #01 от Касперского.

Читая Хабр жарким, почти зимним вечером (почти зимним, потому что за окном ноябрь, ну а жарким, потому что так получилось что мое рабочее место сейчас располагается рядом с батареей от которой идет нестерпимый жар ;) наткнулся на интересную статью в блоге Лаборатории Касперского - Reverse engineering на собеседовании: как мы нанимаем на работу. В статье много интересных, как с точки зрения работодателя, так и с точки зрения соискателя, моментов ... ну например, лично меня такой подход к проведению собеседования чем-то "зацепил", стало интересно настолько, что дочитал статью до конца, просмотрел комментарии, предлагаемые вакансии, а также немногочисленные фото их офиса. Но речь в этой заметке пойдет не об этом. В статье говорится, что кандидату при назначении собеседования предлагалось отреверсить дома несложный файлик, вот как раз он меня и заинтересовал. На всякий случай перевыложу, потому что как скачать что-то с pedump.me с первого раза может показаться неочевидным. Итак, вот тот самый бинарник. Смысл задания как вы понимаете - найти валидный (правильный) серийный номер и собственно алгоритм генерации / проверки серийника.


Решил попробовать свои силы, хотя смену работы даже в отдаленном будущем не планирую. Скажу честно, это оказалось легче, чем многие задания на конкурсе ITStarz 2013.

Файл представляет собой exe'шник, собранный под x64 архитектуру. Наверное в этом и был "потаенный смысл" задания, т.к. для x86 к примеру, в свободном доступе есть и IDA и HexRays (в сеть успел просочиться один из релизов), а вот с x64 - у начинающих реверсеров могут возникнуть определенные проблемы. Так или иначе HIEW (Hacker's View) by SEN отлично работает с x64 опкодами. Дизассемблированный листинг процедуры проверки введенного серийника:


Как видно, вначале происходит проверка длины введенного серийного номера, если она не равна 0x13 (19), то мы видим Fail, Serial is invalid !!! Первую проверку мы "прошли" успешно. Предположим что мы ввели серийный номер "aaaaaaaaaaaaaaaaaaa", но далее мы видим проверку на то что определенные символы введенного серийного номера должны быть "-" ... немного анализа и приходим к выводу, что формат серийного номера примерно следующий: "aaaa-aaaa-aaaa-aaaa". Ну а еще дальше, проверку на то, что все символы введенного серийного номера должны быть цифрами. Продолжим анализ с уже имеющейся информацией, и предполагаемым серийным номером "1117-2228-3339-4446".

Рассказывать дальше, думаю нет смысла, т.к. можно испортить желающим решить задание самостоятельно все удовольствие.

Пример верных серийников:
  • 1117-2008-3115-1027
  • 3223-2008-5410-1333
  • 1441-8002-0721-7003
p.s. Интерес поиска решения crackme я в итоге удовлетворил ... осталось удовлетворить интерес по-поводу зарплатной вилки ;)

Комментариев нет:

Отправить комментарий