****************************************** Jak zcrackować grę "DEUS EX" BY DOCENT (docent@cave.imm.org.pl) ******************************************* Cześć. Jest to mój pierwszy tutorial na temat crackowania, z którym dopiero zaczynam zabawę. Myślę, że ta gra nadaje się bardzo dobrze - początkujący powinni bez problemu zrozumieć ten text. Za nieścisłości, bzdury, błędy z góry przepraszam... "Nie biorę odpowiedzialności za szkody..." - to chyba już znacie. Tyle tytułem wstępu. CO BĘDZIE POTRZEBNE: - "DEUS EX" - ja mam wersję, która była na płycie, nie update'owaną. (ver. 1.1) - "SoftIce" - używałem wersji 4.01 - "W32Dasm" - Używałem wersji 8.93 - Jakiś edytor hexowy, ja używałem "A.X.E." Oki, zaczynamy. Instalujemy DEUX EX'a, oczywiście wybieramy pełna instalację. Po zainstalowaniu najlepiej zrobić kopię pliku Deusex.exe (w kat. system). Wyjmujemy płytkę i odpalamy. Po przebrnięciu przez konfig (tylko na początku) pojawia nam się okienko tekstowe "Please insert the..." i OK lub anuluj. Wciskamy OK i znów sie pojawia. Fakt, ze gra wyświetla błąd w postaci okienka textowego bedzie dużym ułatwieniem. Co robimy - ustawiamy breakpoint (pułapkę) na wywołanie funkcji MessageBoxA. Czyli: -naciskamy Control+D, jesteśmy w SOFTICE - bpx MessageBoxA - CTRL+D i naciskamy w okienku OK... Ale okienko pojawiło się znów, a softice nie załapał. Czyli to nie była ta funkcja... Spróbujmy to samo, tyle, że -bpx MessageBoxW naciskamy OK i... jesteśmy w SoftIce. Jeśli okaże się, ze znajdujemy się w kodzie "USER32" (linia powyżej miejsca wpisywania komend pokazuje "User32!...") to wciskamy F12 i ponownie naciskamy OK. Jeśli jesteśmy już w DeusEx (wskazanie: DeusEx!...) to w porządku. Powinieneś zobaczyć powyżej podświetlonego polecenia (CMP...) nasz MessageBoxW. Teraz trzymając CTRL wciskamy kilka razy strzałkę w górę. Szukamy jakiegoś skoku warunkowego (który wykonywał by się, gdy potwierdzono, że płyta jest w napędzie). I... jest. Pod adresem 1090BA02 jest skok JG (skok gdy większy, liczby ze znakiem). Prowadzi on pod adres 1090BA73. Zjeżdżamy na dół i patrzymy. Skok został wykonany trochę za naszego MessageBox'a. Prawdopodobnie ten skok wykonuje się więc, gdy potwierdzono obecność CD... Dobra. Zapisujemy sobie adres naszego JG (1090BA02) i wychodzimy z SoftIce'a. Przyda się wyłączyć wszystkie breakpointy - komendą bd *. Wchodzimy do W32Dasm'a i otwieramy KOPIĘ naszego pliku. (Disassembler->Open file to disassemble). Jak się juz zdizasembluje, to w menu wchodzimy w GOTO->Goto code location. Wpisujemy adres JG (1090BA02). Widzimy nasze JG. Chcemy, żeby ten skok wykonywał się zawsze (niezależnie, czy płyta jest w napędzie). Trzeba więc zamienić na jmp. Jeśli JG masz podświetlone na zielono, to na dole, na pasku statusu masz na końcu @Offset 0000BA02h in file... Spisujemy ten offset. Aha - JG w binariach jest reprezentowany przez 7F. Jak to sprawdzić? Po lewej stronie od JG masz 7F6F, ważne są pierwsze 2. Chcemy to zamienić na JMP. Jak jest reprezentowane JMP w binariach - sprawdź to sam - jako EB (czasami jako E9 czego sam do końca nie rozumiem). Możemy już wyjść z Dasm'a. Oki, teraz zmodyfikujemy kod gry. Wchodzimy do A.X.E. i otwieramy plik główny (nie kopię). Teraz z menu Navigate -> Goto (w innych edytorach może być inaczej) i wpisujemy offset który zanotowaliśmy wcześniej (0000BA02). Mamy kursorek na 7F - czyli JG. Zmieniamy to na EB. Zapisujemy plik, odpalamy... (qrde trzeba poczekać, bo gra się trochę odpala, ale to nie zwis). Hurra!!! Chodzi bez płyty. Jak nie wierzysz, to odloaduj sobie jakąs misję lub Start New Game. I to by było na tyle. Jeśli macie jakieś komentarze, pytania, uważacie że tekst jest lamerski, dostrzegliście jakieś błędy, to dajcie znać na docent@cave.imm.org.pl. POZDRAWIAM: Natalię, Julitę, Kacpra, Louisa, Ducha, Lecha.