nie byłem pewny czy ten temat się nadaje na inne subforum więc wylądował tutaj...Mimo że ciekawi mnie to głównie z pobudek programistycznych
no więc ostatnio z kolegami nie mieliśmy co robić i postanowiliśmy sobie we 4 zagrać w Mass Effect 3 na multi (wiem, wiem. Jesteśmy zdesperowani). Jak ktoś grał w tę grę to wie że na multi rzeczy zdobywało się randomowo otwierając skrzynki (jak w CSie). Z takiej skrzynki może ci również wypaść ulepszenie broni (jest 10 poziomów każdej broni). No ale jak to u EA bywa - potrzebowałbyś albo wydać na tę grę fortunę (z 10000000000000000 dolarów) albo zmarnować całe życie zbierając kredyty w grze aby odblokować cokolwiek na 10 poziomie (szansa na wypadnięcie broni jest super mała). No więc użyłem CheatEngine'a i zhackowałem sobie bazylion kredytów. Ale nawet wtedy szansa na wypadnięcie broni (zwłaszcza tych rzadkich) jest taka mała że na samo otwieranie skrzynek musiałbyś zmarnować lata żeby wszystkie bronie do 10 ulepszyć. I wtedy wpadł mi do głowy pomysł...
Zastanowiłem się jak ci programiści rozwiązali problem przechowywania danych o poziomie broni. Pewnie trzymają je w jakiejś tabeli, gdzie każdy indeks odpowiada innej broni a wartość pod indeksem odpowiada poziomowi (no przynajmniej ja bym to tak zrobił). Zatem, jeżeli odnajdę adres w pamięci gdzie przechowywane są dane o jednej broni, dane o innych powinny znajdować się tuż pod i nad tym adresem. Wtedy mógłbym wszystkie bronie ulepszyć za jednym zamachem.
Znalazłem adres jednej z broni i ulepszyłem ją na poziom 10(działa, sprawdzałem). Znam jej adres w pamięci: 16441CC8. CheatEngine podpowiada mi, że zmienna przechowywana pod tym adresem ma rozmiar 4 bajtów, zatem zakładam że pozostałe mają taki sam rozmiar. Wobec tego powinienem znalezć zmienne o wartości 1-10 pod adresami 16441CC4 i 16441CCC. Skanuję okolicę i... oto wyniki
16441CC4 wartość 0
16441CCC wartość 240
pobliskie wyniki również zdają się nie mieć sensu.
Nie chodzi tu już nawet o te głupie bronie.Jako informatyka nurtuję mnie to, bo oznacza że coś mi umknęło. Jak myślicie, o co chodzi ?