Ломаем игры ReflexiveArcade в 6 шагов!!!! Те кто забрел сюда за поиском кряков - вам здесь делать нечего - для игр Reflexive куча кряков так что не ленитесь и поищите.... А здесь будет рассмотрен способ для их ломания чисто из спортивного интереса.... (кстати я еще не встретил не одной игры этой фирмы к которой этот способ не подошел бы...) Просто решил поделиться.... Нашел этот способ сам... (если этот способ известен всем извеняйте - интернет у меня недавно ...) Короче вот сам способ открываем любую игру от ReflexiveArcade (я беру их на ДПК DVD их там немеряно!!! И за все плати бабки а где нам бабки эти самим то брать???), в отладчике (я пользуюсь IDA), производим поиск строки MINUTES находим строку: Code: [FONT=Courier New].data:0042D7D0 db 59h ; Y .data:0042D7D1 db 6Fh ; o .data:0042D7D2 db 75h ; u .data:0042D7D3 db 20h .data:0042D7D4 db 68h ; h .data:0042D7D5 db 61h ; a .data:0042D7D6 db 76h ; v .data:0042D7D7 db 65h ; e .data:0042D7D8 db 20h .data:0042D7D9 db 5Bh ; [ .data:0042D7DA db 4Dh ; M .data:0042D7DB db 49h ; I .data:0042D7DC db 4Eh ; N .data:0042D7DD db 55h ; U .data:0042D7DE db 54h ; T .data:0042D7DF db 45h ; E .data:0042D7E0 db 53h ; S .data:0042D7E1 db 5Fh ; _ .data:0042D7E2 db 4Ch ; L .data:0042D7E3 db 45h ; E .data:0042D7E4 db 46h ; F .data:0042D7E5 db 54h ; T .data:0042D7E6 db 5Dh ; ] .data:0042D7E7 db 20h .data:0042D7E8 db 6Dh ; m .data:0042D7E9 db 69h ; i .data:0042D7EA db 6Eh ; n .data:0042D7EB db 75h ; u .data:0042D7EC db 74h ; t .data:0042D7ED db 65h ; e .data:0042D7EE db 73h ; s .data:0042D7EF db 20h .data:0042D7F0 db 6Fh ; o .data:0042D7F1 db 66h ; f .data:0042D7F2 db 20h .data:0042D7F3 db 67h ; g .data:0042D7F4 db 61h ; a .data:0042D7F5 db 6Dh ; m .data:0042D7F6 db 65h ; e .data:0042D7F7 db 70h ; p .data:0042D7F8 db 6Ch ; l .data:0042D7F9 db 61h ; a .data:0042D7FA db 79h ; y .data:0042D7FB db 20h .data:0042D7FC db 72h ; r .data:0042D7FD db 65h ; e .data:0042D7FE db 6Dh ; m .data:0042D7FF db 61h ; a .data:0042D800 db 69h ; i .data:0042D801 db 6Eh ; n .data:0042D802 db 69h ; i .data:0042D803 db 6Eh ; n .data:0042D804 db 67h ; g .data:0042D805 db 2Eh ; .[/FONT] адреса могут быть разными в зависимости от игры... После завершения анализа эта строка преврашаеться в aYouHaveMinutes db 'You have [MINUTES_LEFT] minutes of gameplay remaining. ',0Ah Далее двойной клик на DATA XREF который нах. возле нашой строки (после ; тоесть переходим на то место откуда эта строка вызываеться...) и мы оказываемся на самом коде push offset aYouHaveMinutes ; Поднимаемся вверх до первого DATA XREF, кликаем дважды на него, переходим на код вызвавший нашу процедуру с выводом оставшихся минут: Code: [FONT=Courier New]loc_404CB5: ; CODE XREF: sub_404C3A+6Bj .text:00404CB5 fld dword ptr [esi+18h] .text:00404CB8 fcomp ds:flt_4292D0 .text:00404CBE fnstsw ax .text:00404CC0 test ah, 41h .text:00404CC3 jnz short loc_404CCC .text:00404CC5 push offset loc_42D7D0[COLOR=Red] << вызов вывода minutes (оставшихся минут игры)[/COLOR] .text:00404CCA jmp short loc_404CD1[/FONT] Еще раз поднимемся вверх до первого XREF, и делаем двойной клик по нему тоесть переходим на процедуру проверки на зарегестрированность и соответсвенно потребности в выводе оставшихся минут - sub_404C3A+6B: Code: [FONT=Courier New].text:00404C9E loc_404C9E: ; CODE XREF: sub_404C3A+5Cj .text:00404C9E call sub_407770[COLOR=Red] << процедура проверки на зарегестрированность[/COLOR] .text:00404CA3 test al, al .text:00404CA5 jz short loc_404CB5 [COLOR=Red]<< вот этот переход нужно занопить.. (9090)[/COLOR] .text:00404CA7 mov ecx, esi .text:00404CA9 call sub_403492 .text:00404CAE push offset loc_4045A5 .text:00404CB3 jmp short loc_404CD1[/FONT] Нопим переход и.... Вот и все игра запускаеться и говорит спасибо что играете в меня . Конечно можно было сделать еще поумнее - изменить результат возвращаемый функцией проверки кода (которая перед test al,al) - вместо xor al,al внести mov al,1 Но так как мы сделали ведь легче!!! Хотя второй вариант более правильный (так как эта процедура могла быть вызвана и из другого места и там также пришлось бы нопить переход... Но в нашем случае этого делать не нужно, как и всех играх от этой компании, а их у меня не мало - 34 штуки) Итак еще раз - что нужно сделать: 1 - Ищем minutes; 2 - переход вверх (на xref); 3 - переход вверх; 4 - все мы на переходе который нужно занопить... 5 - открываем winhex переходим на нужный адрес (в нашем случае это 4CA5 .text:00404CA5-ImageBase) 6 - нопим переход 9090 (Занопить переход означает заменить команду jXX на nop, так как команды переходов имеют разную длину то в зависимости от этой длины нужно заменять ее на несколько команд nop... Например в нашем случае команда jz short loc_404CB5 имеет опкод 74 OE и занимает 2 байта, а вот команда nop имеет опкод 90 и занимает один байт поэтому нужно команду jz заменять на 9090 тоесть 2 команды nop... Фуххх рассказал... ) Всем спасибо - не судите строго... Ну и как обычно: ВСЯ ПРЕДСТАВЛЕННАЯ ЗДЕСЬ ИНФОРМАЦИЯ ИСПОЛЬЗУЕТЬСЯ ВАМИ НА ВАШ СТРАХ И РИСК... Я НЕ ЗАСТАВЛЯЮ ЕЮ КОГО ТО ПОЛЬЗОВАТЬСЯ А ЛИШЬ ХОЧУ УКАЗАТЬ РАЗРАБОТЧИКАМ НА НЕСОВЕРШЕНСТВО ЗАЩИТЫ ИХ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ