<< Все статьи по взлому Исследование Ascii Picture Designer 2.22 Обсудить эту статью >>
Автор:FEUERRADER [AHTeam]
Уровень:Для начинающих
Программа:Ascii Picture Designer 2.22
Размер:70 Kb
Язык: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

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

<< Все статьи по взлому Обсудить эту статью >>

ALIEN Hack Team - http://ahteam.org
Только для образовательных целей