Quake 3 Team Arena

Автор  : gering
Перевод: nightcat
Цель   : Quake 3 Team Arena
Метод  : patch
E-MAIL : gering@polbox.com
E-MAIL : nightcat@bsuir.com

запускаем setup.exe. Выбираем 'Install'. Открывается DemoShield.
Играет   музычка  и  тут  появлется  окошко  с  просьбой  ввести
регистрационный  код.  А  его у нас нет! ;). вводим что-нибудь и
открываем  SoftICE,  ставим брейкпоинт на 'getwindowtexta'. Жмём
'OK' и выскакивает sice с куском кода с функцией getwindowtexta.
Зашибись.   Жмём   F5  неколько  раз  и  выясняем,  что  функция
getwindowtexta вызывается 7 раз.

Теперь еще раз,  но только вместо F5 нажимаем F11 и идём по коду
до  call'a,  который  вызывает  окошко  и  стамим  брейкоинт  на
последний джампе перед ним, это адрес 01B91398.

:01B9138F 84C0                    test al, al
:01B91391 6A00                    push 00000000
:01B91393 68C8720110              push 1B9172C8
:01B91398 741D                    jz 01B9113B7 <===Вот тут
:01B9139A 8B4B7C                  mov ecx, dword ptr [ebx+7C]
:01B9139D 51                      push ecx
:01B9139E 8BCB                    mov ecx, ebx
:01B913A0 E8589C0000              call 01B91AFFD
:01B913A5 8BCB                    mov ecx, ebx
:01B913A7 E887810000              call 01B919533
:01B913AC 8BCB                    mov ecx, ebx
:01B913AE E880810000              call 01B919533
:01B913B3 5F                      pop edi
:01B913B4 5E                      pop esi
:01B913B5 5B                      pop ebx
:01B913B6 C3                      ret

Нужно  изменить  джамп, то выскочит окошко с информацией о  том,
что введённый код правильный.

Теперь  обратим внимание на место патча. Soice показывает,  что
код  выполняется  в процессе '_ins5576' а точнее в подпрограмме
'KEYCHECKDLL'.  В папке 'Setup' находим файл 'KeyCheckDLL.dll',
его то мы и должны пропатчить.

После  дизассемлбирования файла 'KeyCheckDLL.dll' ищем место по
адресу  01B91398.  Хе-хе.  Такого  нет. Кусок кода о котором мы
говорили выше в файле находится не по адресу 01B91398, а по:
 
:10001398 741D                    je 100013B7

Запоминаем  физический  адрес ( 1398h ). Heiw в руки и патчим.

And remember: "He's able who thinks he's able."

gering / team GANG