Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #57, АВГУСТ 2005 г.

Портативный взлом

Gelios

Спецвыпуск: Хакер, номер #057, стр. 057-066-3


Итак, подключаем КПК к компьютеру, устанавливаем подопытную программу и копируем исполняемый файл на ПК, чтобы можно было работать с ним. Затем запускаем IDA: пока она будет анализировать файл, будем разбираться с другими инструментами. Пока открыто лишь пустое окно дизассемблера, поэтому выбираем пункт Open… и указываем наш скопированный файл. Появляется окно, в котором указываются различные опции. Здесь выставлены опции по умолчанию, но нужно проанализировать программу под КПК, поэтому наш главный интерес - поменять тип процессора. В данном случае нас заинтересовал ARM-процессор. В списке их несколько, однако выбираем тип "ARM processors: ARM", так как он является наиболее универсальным. Жмем OK и, если используется IDA версии ниже 4.8, указываем пути к запрашиваемым библиотекам. Когда начнется анализ, можно свернуть окно дизассемблера и заняться отладчиком.

Запускаем eMbedded Visual C++ и также через Open открываем exe'шник. Сразу же над рабочей областью находятся несколько выпадающих списков, значения в которых определяют режим отладки. Так как установлен Pocket PC 2003 SDK, в списках должны быть соответствующие значения. В самом правом из них выставлен режим эмулятора, который требуется изменить на режим реального устройства, так как при отладке будет использоваться сам КПК. Нужно сказать, что можно было бы использовать и эмулятор, но он может попросту отказаться работать. Теперь все готово, осталось только запустить программу, поэтому жмем <F11> (запуск программы в режиме пошагового исполнения). Пока происходит соединение с устройством и загрузка файла, отладчик может попросить указать пути к некоторым библиотекам. Здесь можно просто жать Cancel, так как отладка от этого зависеть не будет. Если все прошло успешно, откроется окно с командами, а мы будем стоять на точке входа (Entry Point) в программу.

Как показывает картинка, многие команды схожи с командами ассемблера, используемого на обычном ПК. Единственное отличие – названия и количество операндов. Подробная документация по системе команд для ARM-процессоров лежит на сайте www.ka0s.net. Теперь, чтобы можно было приступить к взлому, хорошо было бы познакомиться с ограничениями программы, для чего нажимаем <F5> и наблюдаем, как запускается игра. В описании сказано, что в незарегистрированной версии в магазине игры нельзя покупать почти ничего – вот такая неприятность. Помимо этого, становится не очень радостно, когда в меню находится пункт Register. Это все и предстоит каким-нибудь образом отключить.

Начнем с ограничений при покупке вещей. Для этого открываем IDA, которая наверняка уже успела проанализировать файл, и в окне Strings window ищем строку "Please register!". Как оказалось, такая строка не одна – их целых 12! Ну что ж, попробуем пойти по какой-нибудь из них, например по той, чей вызов происходит по адресу 24EF4 (это адрес смещения не в файле, а в памяти после загрузки программы). Интересно, что все эти строки расположены рядом со строками, содержащими описание продукта в магазине. Причем все эти описания расположены в файле друг за другом, а количество продуктов, которые нельзя купить в магазине незарегистрированной версии игры, равно числу этих описаний. Очень хорошо. Посмотрим, где в коде имеются обращения к этим строкам: выделяем имя переменной, которая соответствует какой-нибудь из строк, из контекстного меню правой кнопки мыши выбираем Jump to xref to operand или просто жмем кнопку x. IDA находит только одно обращение. Что ж, это хорошо. Что находится по найденному адресу? Всего лишь какой-то указатель на строку, то есть не совсем то, что нужно. Если посмотреть код прямо над этими строками, то можно увидеть, что как раз там и происходит обращение к найденному указателю. Эта функция начинается по адресу 1DDF8, и, похоже, именно в ней происходит инициализация строк.

Назад на стр. 057-066-2  Содержание  Вперед на стр. 057-066-4