<< Все статьи по взлому Исследование SP Shell Icons 1.28 Обсудить эту статью >>
Автор:FEUERRADER [AHTeam]
Уровень:Для начинающих
Программа:SP Shell Icons 1.28
Размер:200 Кб
Язык:Borland Delphi 4.0 - 5.0
Тип защиты:Регистрационный номер
Инструменты:ASPackDie 1.41, Win32Dasm 9.0

Описание: прога для замены стандартных иконок в Windows на более красивые, которые предлагает прога. Пакеты с иконками можно качать с их сайта (www.drand.ru). При установке иконок прога просит какой-то ключ, который можно бесплатно получить с сайта автора. Корректность ключа проверяется "на лету" и в статусбар при правильном ключе пишется: "Your Key Passed!"

Исследование: начнем с того, что упаковано всё ASPack 1.1c (как показывает PeID). Берем ASPackDie 1.41 by Y0da; без труда распаковываем... Теперь суем в Win32Dasm 9.0. Почему 9.0, да потому что в этой версии поддерживается кириллица, хотя много и ненужных срок в SDR! Кстати, для чистоты эксперимента я получил код с ихнего сайта, он оказался такой:
"мой@имэйл.ру|711411640801501790901460211801901501" (сходите к ним на сайт и получите свой номер, а таскать чужой не хорошо!). Т.е проверяется имя до знака "|" и цифры. Вернемся к Win32Dasm. Итак, ищем строку "You agree with license agreement?". С этой мессаги начинается установка иконок. Ты жмешь в проге "Да" и дальше он просит номер, если ввел верный номер, после нажатия на ту же кнопку "Install" прога нормально функционирует. Похоже нам придется просто найти пару джампов и пропатчить их... Итак, мы видим в окне:
* Possible StringData Ref from Code Obj ->"You agree with license agreement?"
|
:00466366 B83C6C4600 mov eax, 00466C3C
:0046636B E87C94FEFF call 0044F7EC <--выдает противную мессагу
:00466370 83F807 cmp eax, 00000007
:00466373 7505 jne 0046637A <-если жмем "YES"--\
:00466375 E8224AFAFF call 0040AD9C |
|
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |
|:00466373(C) |
| |
:0046637A 33D2 xor edx, edx <------------------/
:0046637C 8B861C030000 mov eax, dword ptr [esi+0000031C]
:00466382 E8495FFCFF call 0042C2D0
:00466387 33D2 xor edx, edx
:00466389 8B8620030000 mov eax, dword ptr [esi+00000320]
:0046638F E83C5FFCFF call 0042C2D0
:00466394 A1688F4600 mov eax, dword ptr [00468F68]
:00466399 8B00 mov eax, dword ptr [eax]
:0046639B E80840FEFF call 0044A3A8
:004663A0 8D55FC lea edx, dword ptr [ebp-04]
:004663A3 8B861C030000 mov eax, dword ptr [esi+0000031C]
:004663A9 E80A60FCFF call 0042C3B8
:004663AE 8B55FC mov edx, dword ptr [ebp-04]
:004663B1 B8686C4600 mov eax, 00466C68
:004663B6 E879DBF9FF call 00403F34
:004663BB 85C0 test eax, eax <--джамп на проверку
:004663BD 0F8E85000000 jle 00466448 <--кода в переменной
:004663C3 8D55F8 lea edx, dword ptr [ebp-08]
:004663C6 8B861C030000 mov eax, dword ptr [esi+0000031C]
:004663CC E8E75FFCFF call 0042C3B8
:004663D1 8B45F8 mov eax, dword ptr [ebp-08]
:004663D4 E80342FFFF call 0045A5DC
:004663D9 84C0 test al, al <--опять похожая проверка
:004663DB 0F854B010000 jne 0046652C
:004663E1 8D45F4 lea eax, dword ptr [ebp-0C]
:004663E4 E813C8FEFF call 00452BFC
:004663E9 8B45F4 mov eax, dword ptr [ebp-0C]
Идем по переходу 0046652c.
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004663DB(C), :00466443(U)
|
:0046652C 833D30A9460000 cmp dword ptr [0046A930], 00000000
:00466533 0F87DA000000 ja 00466613
:00466539 8D45E0 lea eax, dword ptr [ebp-20]
:0046653C E8BBC6FEFF call 00452BFC
:00466541 8B45E0 mov eax, dword ptr [ebp-20]

* Possible StringData Ref from Code Obj ->"Русский"
|
:00466544 BA746C4600 mov edx, 00466C74
:00466549 E80AD8F9FF call 00403D58
:0046654E 7562 jne 004665B2
:00466550 6A00 push 00000000
:00466552 668B0D606F4600 mov cx, word ptr [00466F60]
:00466559 B201 mov dl, 01

* Possible StringData Ref from Code Obj ->"Вы забыли подключить к программе "
->"пакет с иконками! Если в архиве "
->"не было файла с расширением ssp, "
->"его можно скачать с сайта. Если "
->"он уже есть у Вас - нажмите кнопку "
->""OK", чтобы его подключить."
Т.е. далее идет код, не относящийся к регистрации. Получается, надо заNOPить переход 004663BD и исправить на безусловный переход 004663DB. А также уберем противное сообщение о соглашении. ЗаНОПим call по адресу 0046636B и правим переход на безусловный в 00466373. Ну всё, работает вроде всё отлично, тутор окончен, до свидания.............

Но НЕТ! Щелкаем на кнопку "Free Bug Report" и прога опять требует код!!! Опять ищем в WinDasm строчку "Before enter your key (correct)". Пару страниц вверх видим:
* Possible StringData Ref from Code Obj ->"Your Key"
|
:00463D98 BA3C444600 mov edx, 0046443C
:00463D9D E8B6FFF9FF call 00403D58
:00463DA2 7439 je 00463DDD <--джамп на ошибку

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00463D2B(C)
|
:00463DA4 8D55F0 lea edx, dword ptr [ebp-10]
:00463DA7 8B831C030000 mov eax, dword ptr [ebx+0000031C]
:00463DAD E80686FCFF call 0042C3B8
:00463DB2 8B55F0 mov edx, dword ptr [ebp-10]
:00463DB5 B850444600 mov eax, 00464450
:00463DBA E87501FAFF call 00403F34
:00463DBF 85C0 test eax, eax
:00463DC1 7E1A jle 00463DDD <-- на ту же ошибку
:00463DC3 8D55EC lea edx, dword ptr [ebp-14]
:00463DC6 8B831C030000 mov eax, dword ptr [ebx+0000031C]
:00463DCC E8E785FCFF call 0042C3B8
:00463DD1 8B45EC mov eax, dword ptr [ebp-14]
:00463DD4 E80368FFFF call 0045A5DC
:00463DD9 84C0 test al, al
:00463DDB 7555 jne 00463E32 <--на нормальный код
Отлично! NOPим джампы по 00463DA2, 00463DC1. А по адресу 00463DDB исправляем джамп на безусловный. Вот и все. Прога ничего не просит и нормально банчит.

А теперь, как говорит Vallkor "для самых ленивых, кряк":
Difference(s) between unpacked.exe & unp_cracked.exe
unp_cracked.EXE
==============резать=тут==================
00063DA2: 74 90
00063DA3: 39 90
00063DC1: 7E 90
00063DC2: 1A 90
00063DDB: 75 EB
0006636B: E8 90
0006636C: 7C 90
0006636D: 94 90
0006636E: FE 90
0006636F: FF 90
00066373: 75 EB
000663BD: 0F 90
000663BE: 8E 90
000663BF: 85 90
000663C0: 00 90
000663C1: 00 90
000663C2: 00 90
000663DB: 0F E9
000663DC: 85 4C
000663DD: 4B 01
000663DE: 01 00
000663E0: 00 90
==============резать=тут==================
Спасибо за интерес к этой статье!

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

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