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

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

Gelios

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


Ломаем КПК

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

Весь материал, содержащийся в данной статье, приведен исключительно в учебных целях. Использование материалов статьи в преступных целях в первую очередь подпадает под статьи 146 и 273 УК РФ. Автор не несет ответственности за возможное применение этой информации на практике.

Итак, к мобильным устройствам, конечно же, можно отнести КПК Pocket PC, Palm а также смартфоны и другие устройства. Общий подход к их взлому такой же, как и для ПК. Есть одно существенное отличие, которое как раз и затрудняет исследование программ под различные платформы на начальном этапе: все устройства используют различные типы процессоров. А это значит, что в каждом устройстве применяется свой ассемблер и своя система команд. Поэтому далее ограничусь рассмотрением процесса взлома программ для КПК на основе платформы Pocket PC.

Общие сведения

Для начала немного теории. Многие характеристики и свойства, которые я опишу, относятся не только к карманным компьютерам на платформе Pocket PC. В отличие от персональных компьютеров, КПК Pocket PC используют так называемые ARM-процессоры, которые основаны на RISC-архитектуре (Reduced Instruction Set Computer), в то время как в "обычных" процессорах используется CISC (Complex Instruction Set Computer). Ну и зачем я пишу все это? Положим на место подробности архитектуры и рассмотрим только те свойства, которые пригодятся в дальнейшем. Во-первых, эти отличия означают, что мнемоника и формат ассемблерных инструкций для таких процессоров различны. Тем не менее, в большинстве случаев названия инструкций совпадают, поэтому очень желательно знание системы команд "стандартного" ассемблера. Во-вторых, RISC-архитектура содержит больше регистров, которые используются намного шире, чем в ПК. Для сравнения: в процессорах линейки Pentium свободно можно использовать четыре регистра общего назначения (eax, ebx, ecx, edx), остальные же, такие как esp или ebp, трогать не рекомендуется, в то время как в ARM-процессорах можно практически свободно использовать до 10-13-ти регистров. Остальные важные отличия будут отмечены, когда мы непосредственно столкнемся с ними на конкретном примере.

По сути, карманный компьютер – это такой же ПК, только малогабаритный. У него имеется центральный процессор, оперативная и постоянная память, аудио- и видеоподсистемы, а также различные слоты расширения. Логично было бы предположить, что используемые в этих устройствах операционные системы тоже имеют общие черты. Действительно, так оно и есть. КПК Pocket PC используют ОС Windows CE, а более новые модели – различные версии Windows Mobile. Поэтому структуры этих ОС во многом схожи с версиями Windows, которые используются в настольных ПК.

И опишу две важные для нас особенности Windows CE. Во-первых, Windows CE также имеет в своем распоряжении системный реестр. Поэтому, например, информация о настройках программы часто хранится именно в реестре. Во-вторых, Windows CE и с версии Windows для ПК используют абсолютно те же имена функций WINAPI, и, более того, во всех (или почти всех) случаях эти API принимают одни и те же параметры. Следовательно, структура программ для рассматриваемых карманных компьютеров является такой же, как и для ПК, что значительно упрощает исследование программ.

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