Witam
Interesuję mnie pewna kwestia dot gier. Z tego co wiem aby zhackować grę trzeba po prostu
w czasie gameingu szukać odpowiednich adresów w pamięci które odpowiadają bezpośrednio za życie
gracza lub poziom amunicji itp i jeżeli takowe znajdziemy możemy je zmienić na swoją korzyść . Jednak jak wiadomo przy każdym
uruchomieniu jakiegokolwiek programu są alokowane inne adresy na zasoby tego programu więc za każdym razem,
przy każdym uruchomieniu musielibyśmy szukać tych adresów, a w istocie istnieją programy,kody które odwołują się
za każdym razem do prawidłowych adresów. Jak te programy to wykonują, skąd wiedzą za każdym razem do jakich
adresów w pamięci się odwołać? Czy jest to może kwestia odwoływania się do rozkazów, które np zmniejszają życie gracza?
- Adresy mogą być różne, ale może tak być że zawsze mają tą samą pozycję względem czegoś. Np. jeśli adres początku stosu dla aplikacji to X to życie może być na X+100 bo tak akurat jest zadeklarowane w aplikacji.
- Można to robić na zasadzie pattern-matchingu - szukając w pamięci pewnych znanych konfiguracji bajtów, które wyznaczają nam blok pamięci który nas interesuje.
Kiedyś w o samurajach, gdzie zdobywało się stopniowo różne moce, siłę, itd.
po prostu zapisałem grę, jak to się zwykle robi, a potem zmieniłem to zapisane, dodając tam sobie tysiące punktów.
Potem tylko odczytałem, no i byłem już supermenem... :)
W wielu przypadkach wystarczy znaleźć plik z informacją z zapisem stanu gry.
Jeżeli masz np. 1150(047E) punktów a chciałbyś mieć 2250(08CA) to musisz znaleźć plik z zapisem stanu gry, otworzyć go hex-edytorem i znaleźć wartość 7E04(Little endian/Big endian) i podmienić ją na „CA08”. Ten sposób działa na wielu grach trzeba tylko umieć znaleźć plik z zapisem stanu gry. Plik z zapisem stanu gry znajdziesz łatwo przy użyciu „Process_Monitora”&”Process_Explorera”. Taki plik można również odnaleźć też przy użyciu np. „Total commandera” poprzez atrybut pliku „archiwalny”.
W starym „NFS Porsche” informacje o parametrach wszystkich samochodów przechowywane są w jednym katalogu. Każdy plik z informacją o danym aucie jest zaszyfrowany. Jeżeli jeździłeś samochodem „X” a chciałeś go „ulepszyć” to należało odnaleźć plik z informacją o X i podmienić zawartość pliku X z zawartością pliku Y(która zawierała konfigurację lepszego samochodu). Jeżeli jesteś bardzo ambitny to mogłeś odkryć algorytm szyfrowania informacji poprzez analizę pliku wykonywalnego(SoftICE, TRW2000, OllyDBG). Znając algorytm szyfrowania mogłeś sobie napisać w ANSI C/Delphi program kodujący/dekodujący.
W „NFS Hot Pursuit” informacje o parametrach samochodów nie są szyfrowane więc należy jedynie odnaleźć plik z konfiguracją danego auta i zmienić mu informację o masie auta(a = F/m);bardzo ciekawe doświadczenie….
Podałem na paru przykładach ale tak da się we wszystkich grach.
Sporo jest poradnikow na necie. Jesli cie temat zainteresuje, to nie jest to wszystko trudne. Wiadomo, poczatku sa trudne, ale potem wydaje sie wszystko bardzo proste. Jesli rozumiesz cos z Delphi to mozesz zobacz zrodla ShiityPlugin 2.0 https://github.com/mca64/mca64Launcher
Jest to hack to StarCrafta: Brood War. Wyswietla on czas gry, czat Twitcha itp