GameWizard pod linux - GameConqueror*
Czy ktoś pamięta jeszcze program GameWizard pod DOS, albo win32gw pod windows? Dodawanie życia, czy naboi w Wolfenstein, czy energii w Mortal Kombat, to była codzienność. Jeśli ktoś po latach przesiadł się na linuksa i mu tego brakuje, to nic straconego. Do dyspozycji mamy programik o nazwie GameConqueror - A GUI for scanmem, a game hacking tool ;)
GameConqueror jest niczym innym, jak graficzną nakładką na program scanmem. Pod Ubuntu, najlepiej instaluje się go z poziomu synaptica. Wyszukujemy gameconqueror, zaznaczmy do instalacji i program zainstaluje się nam wraz z zależnościami. Po instalacji program można odpalić z menu: Programy->Gry->GameConqueror. Nie zalecam jednak tego, bo z moich obserwacji wynika, że program nie działa poprawnie (nie skanuje pamięci), jeżeli uruchomimy go z poziomu użytkownika. Najlepiej uruchomić go przez sudo. W tym celu najłatwiej będzie, będąc na pulpicie, wcisnąć kombinację klawiszy Alt+F2 i w okienku uruchamiania wklepać: gksu gameconqueror. Zostaniemy poproszeni o podanie naszego hasła, po czym program uruchomi się.
Jak skorzystać z programu? Opiszę to na przykładzie prostej strzelanki Gunroar. Mając uruchomionego GC, odpalamy wcześniej zainstalowaną grę Gunroar - najlepiej w okienku, bo będzie łatwiej. Uruchamiamy grę i zanim stracimy nasze pierwsze życie wciskamy P, co zatrzyma grę. Przechodzimy do GameConqueror'a, gdzie musimy najpierw wyszukać proces, który będziemy hackować. W tym celu klikamy ikonkę "Select a process". Ukaże nam się okno z listą procesów. Aby szybciej wyszukać interesujący nas proces z listy, wciskamy klawisze Ctrl+F, po czym w naszym przypadku, w okienku wyszukiwania, wpisujemy "gunroar" - tak zwie się nasz proces. Ok, pierwsze koty za płoty. Patrzymy teraz w okienko z grą i widzimy, że mamy do dyspozycji 2 życia. Wprowadzamy zatem wartość 2 do pola "Value" w GC. Domyślnie szukamy wartości typu int32, więc nic więcej nie zmieniamy i klikamy lupkę, co spowoduje wyszukanie komórki, w zakresie pamięci zajętej przez ten proces, z wartością 2. Po pierwszym szukaniu pewnie będzie ich trochę, więc aby zaobserwować zmiany w interesującej nas komórce, musimy dokonać w niej zmiany wartości. Jak to zrobić? No nic prostszego, jak dać się zgnoić - tracimy jedno życie. Gramy dalej, lecz jesteśmy uszczupleni o jedno życie. Zatrzymujemy na chwilę grę, przechodzimy do okna GC, w polu Value wpisujemy 1, gdyż mamy do dyspozycji jeszcze jedno życie, dajemy szukaj i czekamy na zmiany. Liczba komórek spełniające te kryteria z pewnością się uszczupli, lecz nadal nie możemy jednoznacznie określić, w której z nich przechowywana jest wartość z liczbą żyć. Zabijamy się po raz kolejny. Powtarzamy całą procedurę, lecz w polu Value wpisujemy 0 - nie mamy już do dyspozycji dodatkowych pojazdów. Klikamy lupkę i... Wyszły mi 3 komórki, które spełniają te warunki wyszukiwania. Hmmm, która to? Od biedy można strzelać i zablokować każdą z nich, ale po chwili zauważyłem, że 2 z nich od czasu do czasu ulegają zmianie, więc nie mogą one wskazywać na liczbę żyć, gdyż ta jest stała i cały czas wynosi 0... To znaczy, że jest to komórka, w której nic się teraz nie zmienia. Z listy 3 dostępnych komórek, klikam prawym klawiszem myszy na mojej podejrzanej i wybieram "Add to cheat list" , co spowoduje dodanie jej do listy u dołu programu. Tam zamrażam komórkę zaznaczając Lock, a w polu Value tej listy, wpisuję np. 10 i patrzę co się dzieje w grze. No, ładnie trafiłem - dostałem bonus w postaci 10 dodatkowych pojazdów, które na dodatek nie będą się "zużywać", bo mam komórkę zamrożoną (Lock).
To był prosty przykład działania programu GameConqueror. Więcej opcji, jeśli chodzi o wyszukiwanie, dostajemy po najechaniu kursorem myszy nad napis Value - mamy pięknie opisane, jakie wartości możemy w polu Value wprowadzać. Po krótce naświetlę sposób wyszukiwania komórki, gdzie jednoznacznie nie da się określić, jaka w danej chwili jest tam wartość, np. pasek energii, czy paliwa w grze. Jako wartość początkową podajemy ?. Potem, po kilku obrażeniach, gdy pasek energii się pomniejszy, wpisujemy w polu Value -, a gdy się podleczymy i paska przybędzie wpisujemy +. Tym sposobem znajdziemy komórkę w której zachodziły takie zmiany, czyli pomniejszanie lub powiększanie się wartości.
Oczywiście, gry są programami, gdzie te zmiany najłatwiej zaobserwować i docenić ;) Wykorzystanie GameConqueror'a, nie należy sprowadzać wyłącznie do gier - program ten nie wie, co hackujemy. GameConqueror sprawdza zmiany w konkretnym procesie i nikt tutaj nie mówi, że ten proces nie jest programem fakturująco-magazynowym, czy procesem odpowiedzialnym za zrobienie backup'u. Tak czy owak, życzę owocnych łowów w elektronicznym świecie.
* Wpis mojego autorstwa w całości skopiowany z mojego bloga ;)