Cheat Engine - Pointers
Zdravím, myslím si, že v nadpise som sa už vyjadril. Ako nájdem statickú adresu od dynamickej? V nejakej hre mám napr. 1000$, lenže po každej novej zapnutej hre sa adresa, v ktorej je hodnota 1 000$ mení. Ako nájdem statickú adresu, ktorá má pod sebou túto "dynamickú"? Skúšal som rôzne tutoriály na internete, aj som zhliadol viac ako 50 videí na youtube, a stále mi to nejako nechce fungovať. Skúšal som to cez pointer map, nejde, skúsil som to cet memory viewer, nejde. Tak ja už fakt neviem.
Vidím, že nikto nevie poradiť. Takže dáme attempt 2: (napísané riadne podrobne)
Hrám hru, konkrétne Forbidden Siren 2 na emulátore PCSX2 (Playstation 2 Emulator). Potrebujem aby mi niekto vysvetlil, ako fungujú Pointers, v preklade teda ukazovatele. Potrebujem urobiť, ukazovateľ bude automaticky hľadať danú hodnotu.
Problém tejto hry je ten, že adresy v CE (CE = Skratka pre Cheat Engine) sa po každom novom zapnutí hry menia, Takže príklad, raz mám adresu: 0C3EE584, a po reštarte hry mám zasa 4F6R88A9 (je to len príklad). No a mne sa jednoducho nechce stále hľadať znovu túto hodnotu (teda value), pretože v hre nie je nikde ukázaná ako číslo, čiže túto hodnotu musím hľadať cez increase a decrease. Niekedy mi trvá aj cez 9 hodín, než túto hodnotu nájdem, preto si to chcem zjednodušiť cez tie ukazovatele (teda Pointers). Môžete mi niekto prosím vysvetliť, ako sa s nimi pracuje a ako fungujú? Po pravde, našiel som zopár videí na youtube, ale u mňa je problém ten, že môj opcode je "mov [ecx],edx" a u videí, ktoré som zhliadol sú na konci aj nejaké čísla, ktoré sa zadávajú do ukazovaľov (Pointers) ako offset. Lenže ja tento offset nemám ako získať, keďže môj opcode neobsahuje na konci žiadne číslo/a. Skúšal som na YT zhliadnuť rôzne videá, hocijako som písal do vyhľadávača, no vždy mi vyskakujú len tie isté videá, a nič nové. Takže už si fakt neviem rady.
Tohle na dálku asi nikdo nedá, zvlášť když návody jsou obecné. To by tu hru musel někdo mít a zkoušet to samé. Chápu kam tím míříš a jaký máš problém, kdysi jsem přes CE jezdil hacky v mmo, ale bez té hry ti neporadím. Bohužel.
Adresa odkazuje na presne, konkretni misto v pameti. Pointer odkazuje na objekt v dane aplikaci. Kdyz aplikaci ukoncis a spustiz znova, naladuje se do pameti "nahodne" (cili jinak) nez predtim, takze adresa z minula je ti uz k nicemu. Pointer ale pracuje se "strukturou" aplikace takze by te vzdy mel dovest na stejne misto (odkazuje na stejny objekt, pokud nebyl kod aplikace zmenen napriklad patchem). Nikdy jsem to nezkousel na emulatoru konzole, takze netusim jaky mas zadrhel ani jestli u toho pointer bude fungovat.
https://fearlessrevolution.com/viewtopic.php?t=8982
https://www.youtube.com/watch?v=nQ2F2iW80Fk
Presne tak isto som to aj robil, ale vždy keď dám rescan, a zadám tam novú adresu, tak mi to nenájde žiadne výsledky, aj keď pred tým (pri tvorbe pointer-u) ich to našlo cez 20 000.
A zkousel jsi to na nejake primitivni hre? Nejlip vzit hru primo z nejakeho tutorialu a zkusit to na ni, jestli to vubec delas dobre. Je mozne ze prave emulace znemoznuje vyuziti pointeru (emulator si vytvari "pamet v pameti"). Takze pokud to vubec lze proves, pravdepodobne budes muset nejdriv najit offset na zacatek pameti emulatoru a pak z neho pokracovat. Spis nez obecne tutorialy pro CE bych zacal prohledavat primo kombinaci CE+emulator.
Môj postup:
1. Otvorím si PCSX2 a CE
2. Načítam si hru (Forbidden Siren 2)
3. Nájdem si tú hodnotu, ku ktorej chcem nájsť "Base Address", teda statickú (základnú?) adresu.
4. Hodnotu si pridám do poľa nižšie v CE (do toho okienka, čo je naspodu programu)
5. Kliknem pravým na adresu, a zvolím "Pointer scan for this address"
6. Všetko nechám tak ako je základne nastavené (nemením nič), a uložím to ako 1.PTR
7. Po načítaní mi to vyhodí nejaké hodnoty, tak reštartujem hru, aby sa adresa zmenila
8. Po zmenení adresy si novú adresu skopírujem, a dám Rescan s novou adresou
9. No a tu to vždy končí, totiž nikdy mi to nič nenájde...
Edit: Postupoval som podľa tohoto videa => https://youtu.be/We3iuurMSVM
To je ale obecny postup pro nejakou aplikaci. Tvuj problem je emulator. Emulator vytvori virtualni stroj ve kterem nasledne spusti aplikaci. Takze nehledas hodnotu v dane aplikaci, ale v emulatoru, proto jsem ti poradil radeji hledat CE tutorialy pro konkretni emulator. Obecny postup ti bude k nicemu, nebo ho vyuzijes az nakonec, pote co poresis jak pristupovat k aplikaci v emulatoru.
Jasné, chápem. Skúšal som teda hľadať no a bohužiaľ som nič nenašiel. Ale našiel som jeden spôsob, ako zistiť danú adresu "rýchlejšie".
Zapíšem si niekam to "mov [ecx],edx" (nachádza sa v memory viewer-u), no a potom už len dám "Search -> Find assembly code", a tam zadám "mov [ecx],edx".
Mám ale ešte nejaké otázky:
1. Dá sa nejako v memory viewer-u uložiť konkrétny opcode? Že napr. ten svoj opcode (mov [ecx],edx) si uložím, a potom ho len otvorím a načíta sa mi?
2. Môžete mi poslať nejaký návod (najlepšie aby bol v jazyku CZ/SK) na memory viewer? Skrátka aby som pochopil ako funguje, čo je to vlastne ten opcode, atď... aby som sa v tom vedel orientovať
3. V "Find assembly code" som si všimol, že sú tam aj nejaké znaky (https://ctrlv.sk/YHCa) ako sa používajú?
4. Dá sa nejako rýchlejšie nájsť nejaká hodnota, než len hľadať cez čísla prípadne decrease / increase? Napr. cez memory viewer?
5. Dajú sa v memory viewer-u zobraziť len hodnoty, u ktorých prebieha nejaká zmena? Napr. keď začnem šprintovať atď... tak to automaticky nájde danú hodnotu a vypíše mi ju