Автор: | 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 ==============резать=тут================== Спасибо за интерес к этой статье!
|
|