TabMail v2.2 или не стоит отчаиваться
|
Во время посещения России Билл Гейтс прошел курс лечения у известного российского сексопатолога. Эффект от лечения был таков, что он решил сменить название своей фирмы на Гиперхард.
|
Target: TabMail v2.2 (Build 15.12)
Tools:
- Some brains
- Soft-Ice 3.24
- Win32Dasm 8.93
- PEIdentifier 0.7
- Упаковщик UPX
- Любой hex+asm-редактор (я использую QView)
Пролог
Вступление:
Делать было нечего и я решил, что-нибудь поломать. Полез по дискам с
шароварой и на диске Hard&Soft'a не помню, какой номер. Чуть-чуть ее по-
ковыряв, я понял, что программа проста для взлома. Хотя, кой-какие момен-
ты есть.
Что за прога:
Какой-то почтовый клиент, ничего об этой программе сказать не могу,
поскольку нужна она мне была только для одного. Для чего вы надеюсь поня-
ли...
Примечание:
Если вы уже кульный крэкер, то можете не читать эту статью, дабы ваша
клавиатура не приняла остатки вашего плотного ужина.
Вступление
Программа будет взломана двумя способами:
1) Подсмотр кода
2) Написание кейгена на основе самой программы
Можно было бы написать еще и про патч, но это будет вам домашним за-
данием, так сказать.
Подсмотр кода
Первое, что надо сделать это посмотреть запакована ли программа. Если
Да, то чем для этого я использую программу PEIdentifier. Запускаем и видим
UPX 0.89.6 - 1.02 / 1.05 - 1.20 -> Markus & Lazlo. Ага, UPX это хорошо, он
очень хорошо распаковывается самим UPX'ом. Если его запустить с ключем -d.
Распаковываем и суем его в Win32Dasm, который выдает нужный код, но зайдя
в секцию строк мы не видим нишиша. Наверно, программа сбацана на Delphi,
если засунуть в PeId уже распакованную программу, мы поймем, что так оно и
есть.
Ну что ж, будем опираться только на себя, да на SoftIce. Запускаем про-
гу и ищем, где бы нам ввести код. Сразу после запуска мы видим великолеп-
ный nag-screen с кнопкой Register. Жмем ее и видим форму, где и вводим,
например, такую фигню Name: FessCool Code: 110022334455. Запускаем и видим
сообщение, об ошибочности наших действий, с рульной иконкой. Хе-хе-хе, зря,
товарисчи, вы так делаете, зря. С давних времен известно, что делфи не ис-
пользует мессагубоха, а вот LoadIconA использует вполне. Ставим бряк на это
и о кул, при повторной попытке мы вываливаемся в прогу. Место, где мы выва-
лились не очень понятно, но дадим такую команду s 0 l -1 "110022334455". У
меня строка нашлась на 11E7F48. Удаляем не нужный теперь бряк bc*. И ставим
бряк на bpmb 11E7F48 rw. Еще раз запускаем процедуру регистрации, вывалива-
емся нажимаем несколько раз F12, пока не вываливаемся в таком месте.
:0047A343 8B45FC mov eax, dword ptr [ebp-04]
:0047A346 50 push eax
:0047A347 8D55F0 lea edx, dword ptr [ebp-10]
:0047A34A 8B83F0010000 mov eax, dword ptr [ebx+000001F0]
:0047A350 E843BCFEFF call 00465F98
:0047A355 8B55F0 mov edx, dword ptr [ebp-10]
:0047A358 8D45F4 lea eax, dword ptr [ebp-0C]
:0047A35B E8DC99F8FF call 00403D3C
:0047A360 8B45F4 mov eax, dword ptr [ebp-0C] <- В eax имя
:0047A363 5A pop edx <- в edx код
:0047A364 E873FFFFFF call 0047A2DC <- Процедура проверки
:0047A369 84C0 test al, al
:0047A36B 7413 je 0047A380
|
Видно, что выделенная процедура, это скорее всего процедура проверки ко-
да, и test al,al это проверка все Ок, или Нет. Заходим в процедуру, нажимая
кнопку F8. И видим следующий код
:0047A2E4 E88B9AF8FF call 00403D74
:0047A2E9 83F808 cmp eax, 00000008
:0047A2EC 7E15 jle 0047A303
:0047A2EE 8B158CE04B00 mov edx, dword ptr [004BE08C]
:0047A2F4 8B12 mov edx, dword ptr [edx]
:0047A2F6 8BCE mov ecx, esi
:0047A2F8 8BC3 mov eax, ebx
:0047A2FA E891FCFFFF call 00479F90
:0047A2FF 84C0 test al, al
:0047A301 7505 jne 0047A308
|
Мы видим, что это сравнение на длинну имени. Странно нигде об этом не
предупреждалось?!!! Ну да ладно вводим такое имя: FessCool2002. И начинаем
заново трассировать, проходим проверку и заходим в процедуру call 00479F90.
И трассируем до тех пор, пока не увидим следующий код...
:0047A018 8B55F4 mov edx, dword ptr [ebp-0C]
:0047A01B 8B45FC mov eax, dword ptr [ebp-04]
:0047A01E E851EAFFFF call 00478A74
:0047A023 8BD8 mov ebx, eax
:0047A025 33C0 xor eax, eax
|
Здесь по адресу edx можно посмотреть настоящий код. Как я это угадал? Все
просто, как в детстве, тут просто нужно упорство. Я трассировал и смотрел
на изменяющиеся регистры, пока не нашел этот.
На имя FessCool2002 это код 664d8cad-751e7eb5-86cb2621-00f3541f.
Написание кейгена на основе самой программы
Так код мы подсмотрели, теперь осталось написать кейген, это не просто,
а очень просто. Делать это будем используя MessageBoxA, как я обычно и де-
лаю.
Ищем любой вызов процедуры MessageBoxA в листинге Win32Dasm. Вот первый
:00426272 50 push eax
:00426273 57 push edi
:00426274 56 push esi
:00426275 8B4324 mov eax, dword ptr [ebx+24]
:00426278 50 push eax
* Reference To: user32.MessageBoxA, Ord:0000h
|
:00426279 E82E03FEFF Call 004065AC
|
Так процедура вызывается из 4065AC посмотрим, что там
* Reference To: user32.MessageBoxA, Ord:0000h
|
:004065AC FF253C164C00 Jmp dword ptr [004C163C]
|
Хорошо. Теперь попробуем найти по коду эту строку в самом файле, т.е.
ищем FF253C164C00, одна единственная и нашлась по адресу 59AC. Теперь ос-
талось начиная со строки 47A01B написать вызов, функции MessageBoxA. Дела-
ем это так, заходим в QView и ищем строку hex-кода E851EAFFFF8BD8. У меня
она обнаружилась на 7941B теперь начиная с этого адреса вписываем такие
строки (через тире представлены их hex представление)
push 0 - 6A00
push edx - 52
push edx - 52
push 0 - 6A00
call 59AC - E886C5F8FF
nop - 90
|
Теперь запускаем программу, вписываем свое имя и в МессагаБоксе видим
нужный код. Вот это кул. Но теперь, если вы попробуете еще раз зарегиться
на другое имя, то вам придется удалить параметр RegUserName из ключа ре-
естра HKCU\SOFTWARE\DLG\TabMail, там же в параметре RegCode, можно видеть,
введенный вами код, но это код который вы ввели просто так, а не настоящий
так, что вот еще один метод, так сказать нахождение ключа и патч в одном
флаконе.
Послесловие
Вот и закончена работа потирая руки вы регистрируете программу на себя.
Винище льется рекой вы празднуете халявно заработанные 19$.
Хочу надеяться, что эта статья Вас чему-либо научила и помогла в осво-
ении этой нелегкой науки.
Крэкеры, крякеры и кракерята, сказать практически нечего разве,
что только не ругайте сильно разработчиков за такую корявую защиту.
Разработчики, если хотите, чтобы за Вашу программу платили Вам,
а не пиратам защищайте сильнее, а то эта защита никуда не годна, ее слома-
ет даже начинающий.
Все ругательства отправлять в null
Все остальное на lomovskih@yandex.ru
Спасибо за интерес к моему творчеству!
Удачи в Reversing Engeneering!
P.S. Запомните все материалы публикуются только в учебных целях и автор за их использование ответственности не несет!!
P.P.S. Возможно имеют место опечатки, заранее извините!
With best wishes Fess
И да пребудет с вами великий дух bad-сектора.
|