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

термоядерный инлайн

GETORIX | INT3

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


.text:0001D860 A1 FF FF EB 00 80 BD E8 EF 8D 01 00 47 11 01 00 б ы.А-шяН .G .

Напоследок возвращаемся в PE-редактор, в таблице секций (Section Header) меняем размер (Virtual Size) секции кода «.text» на «C870» и атрибуты секции (Characteristics), добавив свойство Is writeable. Первое необходимо для корректной работы программы в среде WindowsMobile 2003, второе — для возможности внести изменения в секцию кода во время выполнения программы. Вид исправленной секции изображен на рисунке 3.

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

Листинг 6. Сравнение оригинального и пропатченного файлов

000001D8: 30 70 [размер секции]

000001F7: 60 E0 [атрибут is writeable]

0000CA0C: 36 8B [переход на inline-патч]

0000CC40: 00000000 00402DE9 [непосредственно код патча]

0000CC44: 00000000 0F002DE9 [STMFD SP!, {LR}]

0000CC48: 00000000 EA00A0E3 [STMFD SP!, {R0-R3}]

0000CC4C: 00000000 14109FE5 [MOV R0, #0xEA]

0000CC50: 00000000 0000C1E5 [LDR R1, =0x18DEF]

0000CC54: 00000000 10109FE5 [STRB R0, [R1]]

0000CC58: 00000000 0000C1E5 [LDR R1, =0x11147]

0000CC5C: 00000000 0F00BDE8 [STRB R0, [R1]]

0000CC60: 00000000 A1FFFFEB [LDMFD SP!, {R0-R3}]

0000CC4B: 00000000 0080BDE8 [BL _cinit]

0000CC4C: 00000000 EF8D0100 [адрес 00108D3F]

0000CC4D: 00000000 47110100 [адрес 00011147]

[чтобы полностью скрыть] «незарегистрированность» программы, необходимо также заменить диалог для ввода имени и ключа на диалог с успешной регистрацией. Оставляю это на домашнее задание, могу подсказать лишь, что заменой одного байта там не ограничиться, так как придется еще убрать проверки на отсутствие имени, а возможно, подставить свои инициалы.

[заключение] Такой способ снятия защит имеет право на существование, и пусть для этого приложения он не очень-то подходит, но в программах со скрытым кодом он станет единственным способом сочетать простоту и качество. Так что, надеюсь, приведенный пример inline-патча когда-нибудь пригодится.

Кстати, если внимательно изучить сообщение, которое появляется при неудачной попытке зарегистрироваться, можно заметить упоминание некоего сайта Handagoo. Пока скажу, что программа защищена посредством Handango Dynamic Registration, сгенерировать ключ для нее не составляет большого труда, но об этом - в статье "Брутальное подКЛЮЧение"

Назад на стр. 066-068-5  Содержание