Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Исследование Ascii Picture Designer 2.22

Обсудить статью на форуме

Очень удобно, когда все крэкерские инструменты, книги и статьи в одном месте. Используйте сборник от EXELAB - вот тут.

Автор: FEUERRADER <feuerrader@nm.ru>


 Исследование Ascii Picture Designer 2.22
   Программа: Ascii Picture Designer 2.22
      Размер: 69632 байта
        Язык: Microsoft Visual C++ 6.0
      Защита: имя/код
        Цель: взлом
 Инструменты: Win32Dasm 8.9-9.0, Hiew 6.x
 

Описание: стремноватая прога для рисования ascii графики. Имеет одно функциональное ограничение: не работает стирательная резинка.

Исследование: в принципе без проблем можно на специализированных сайтах скачать серийник или самому найти в памяти сгенерированный код для Вашего имени (проверено). Но сейчас займемся взломом, а не поиском серийного номера. Начнем. Суем прогу в Win32Dasm. Открываем SDR (список строк). Ищем строку: "Thank you for your register! Please run it again now!". Это сообщение выходит, когда наша регистрация успешна. Смотрим выше, в поисках перехода:

 :0040514C E88F000000              call 004051E0
 :00405151 83F801                  cmp eax, 00000001
 :00405154 7564                    jne 004051BA

Заходим в CALL.

 * Referenced by a CALL at Addresses:
 |:004023C6   , :0040514C   , :004058B2
 |
 :004051E0 6AFF                    push FFFFFFFF
 ...
 

Вызывается из трех разных мест. Ну, что будем искать в три места и править там переходы (они там точно есть). Все пределтно просто: эта процедура возвращает в еах 0 или 1, т.е 0 - незарегены, 1 -зарегены. Кстати она генерирует верный РН, кто хочет - проанализируйте и сделайте кейген. Так не будем же глупить и сделаем, чтобы она возвращала 1. Я попробовал вставить соответствующий код в начало процедуры, но прога меня обламала аварийным завершением. Тогда я решил вставить в конец, все прошло удачно. Давайте это проделаем: крутим вниз процедуры до этого места:

 :00405705 64890D00000000          mov dword ptr fs:[00000000], ecx
 :0040570C 81C488000000            add esp, 00000088
 :00405712 C20800                  ret 0008
 :00405715 90                      nop
 :00405716 90                      nop
 :00405717 90                      nop
 :00405718 90                      nop
 
 

Итак, процедура заканчивается на 405712. Далее идут NOP. Они как будто специально для нас оставлены! Все просто, заменяем так, как показано:

 :00405705 64890D00000000          mov dword ptr fs:[00000000], ecx
 :0040570C 81C488000000            add esp, 00000088
 :00405712 B801000000              mov eax, 00000001
 :00405717 C20800                  ret 0008
 :0040571A 90                      nop
 :0040571B 90                      nop

Всё. Запускаем прогу, работает вроде и резинка доступна. Давайте создадим рисунок, порисуем, а теперь потрем резинкой... Опа! Не стирает! Непорядок! Вскоре выяснилось, что в процедуре проверяется начличие в реестре (путь HKEY_CURRENT_USER\SOFTWARE\asciiart\asciiart\setting, строковые параметры usernamе и regcode) параметров. И из-за их отсутствия резинка не трет. Вот этот код:

:00405217 FFD6                    call esi    <проверка на
                                               <существование username
 :00405219 83C408                  add esp, 00000008
 :0040521C 85C0                    test eax, eax
 :0040521E 0F84AC040000            je 004056D0 <на конец процедуры
 :00405224 8B8C2494000000          mov ecx, dword ptr [esp+00000094]
 :0040522B 6844B74000              push 0040B744
 :00405230 51                      push ecx
 :00405231 FFD6                    call esi    <проверка на
                                               <существование regcode
 :00405233 83C408                  add esp, 00000008
 :00405236 85C0                    test eax, eax
 :00405238 0F8492040000            je 004056D0 <на конец процедуры

Давайте изменим переходы вот так:

:00405217 FFD6                    call esi
 :00405219 83C408                  add esp, 00000008
 :0040521C 85C0                    test eax, eax
 :0040521E 0F8400000000            je 00405224
 :00405224 8B8C2494000000          mov ecx, dword ptr [esp+00000094]
 :0040522B 6844B74000              push 0040B744
 :00405230 51                      push ecx
 :00405231 FFD6                    call esi
 :00405233 83C408                  add esp, 00000008
 :00405236 85C0                    test eax, eax
 :00405238 0F8400000000            je 0040523E
 :0040523E 8B942490000000          mov edx, dword ptr [esp+00000090]

То есть в любом случае переход осуществляется на следующую инструкцию. Просто при таком изменении меньше надо изменять байтов (всего 2), чем полностью NOPить переход (всего 6!).

Теперь попробуйте, всё должно работать.

Crack:
 =========вырежь=тут=========
 Difference(s) between asciiart.exe & cracked.exe
 ASCIIART.EXE
 00005220: AC 00
 00005221: 04 00
 0000523A: 92 00
 0000523B: 04 00
 00005712: C2 B8
 00005713: 08 01
 00005715: 90 00
 00005716: 90 00
 00005717: 90 C2
 00005718: 90 08
 00005719: 90 00
 =========вырежь=тут=========

Спасибо за интерес к этой статье!



Все права защищены ©  2003 



Обсуждение статьи: Исследование Ascii Picture Designer 2.22 >>>


Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS