Исследование PageSaver 3.7 Site: http://gerasoft.virtualave.net/ Lang: Delphi 5 Инструменты: IDA, Magic Trainer Creator (MTC), RegPatcher by ParaBytes Эта программа - настройка над IE, позволяющая сохранять сайты для последующего оффлайнового просмотра. 1. Итак. Зпаускаем программу и видим столь родную :) кнопку Enter Registration Code. Нажав на нее мы увидим окно для имени пользователя и серийника - вводим все это дело и видим Invalid serial number. 2. Дизсамблируем программу, выбираем в меню IDA Jump -> Name и вводм там _str_invalid_registration нас выкидывает на сию строку. 3. Переходим по DataXREF'у и попадаем сюда: CODE:00473678 loc_473678: - поднимаемся сюда. CODE:00473678 mov eax, ds:off_478858 CODE:0047367D add eax, 4 CODE:00473680 call sub_403CB0 ; system$@LStrClr(String CODE:00473685 mov eax, ds:off_478858 CODE:0047368A call sub_403CB0 ; system$@LStrClr(String CODE:0047368F mov eax, [ebx+2DCh] ; TRegForm.edCode:TEdit CODE:00473695 mov edx, [eax] CODE:00473697 call dword ptr [edx+0B0h] ; TEdit$SetFocus() CODE:0047369D mov eax, [ebx+2DCh] ; TRegForm.edCode:TEdit CODE:004736A3 call sub_4253D8 ; stdctrls$TCustomEdit$S CODE:004736A8 mov eax, offset _str_Invalid_registr.Text -мы тут! CODE:004736AD call @Dialogs@ShowMessage$qqrx17System@AnsiSt поднимаемся до первой метки и переходим по XREF'ам и видим следующие команды: CODE:00473651 jnz short loc_473678 (!) CODE:00473653 mov eax, ebx CODE:00473655 call TRegForm@Proc_00473730 ; TRegForm$Proc CODE:0047365A test al, al CODE:0047365C jz short loc_473678 (!) CODE:0047365E mov eax, ebx CODE:00473660 call sub_4737A8 ; TRegForm$_PROC_00473 CODE:00473665 test al, al CODE:00473667 jz short loc_473678 (!) CODE:00473669 mov eax, offset _str_Thank_you_for_r. CODE:0047366E call @Dialogs@ShowMessage$qqrx17System@Ansi -спасибо нам за регистрацию CODE:00473673 mov byte ptr [esi], 1 CODE:00473676 jmp short loc_4736B2 Восклицательными знаками обозначены строки в которых выполняется переход на маты о неправильном серийнике. Чтобы сего не произошло заменяем байты по следующим адресам в экзешнике на 00h 00473652,0047365D,00473667 4. Изменям экзешник и ... ОБЛАМЫВАЕМСЯ! Он проверяет себя на КОНТРОЛЬНУЮ СУММУ! :( 5. Запускаем MTC, нашу программу и производим нужные изменения в памяти, после чего вводим произвольное имя и код. Как пользоваться MTC Вы можете прочесть на диске журнала Игромания, там же взять и саму прогу или написать мне. С удовольствием все пошлю. 6. Видим благодарность за регистрацию. И... при следющем запуске код и имя оказываются на месте вместо надписи UNREGISTERED. Я так и не понял, зачем в программе этой было делать проверку контрольной суммы, если правильность серийника проверяется лишь при первом его вводе??? Закрепляем полученные результаты без написания loader'а 1. Запускаем REGEDIT и вызываем в нем окно поиска. Вводим наше регистрационное имя и вываливаемся в реестре в недрах HKEY_CURRENT_USER. Вот, собственно, Reg-файл коий надо скормить Regpatcher'у --- CUT HERE --- REGEDIT4 [HKEY_CURRENT_USER\SOFTWARE\GERASoft\PageSaver] @="" "RegCode"="Wildsoft" "UserName"="Werwolf" --- END CUT --- Мроаль: Как сказал мой препод по электротехнике - и кодовый замок не страшен когда код "123". Также и проверка на контрольную сумму не является показателем классной защиты. Werwolf xkondopoga@narod.ru