C nyelvben memória szerkesztés cím alapján?










Amit írtál cheatengine, az nem igazán használ C nyelvet, egy helyen volt benne, de annak nem sok köze van a lényegi működéséhez. A nagy része c++, és pascal.
Egyébként szinte biztos is voltam benne, hogy erre kéne neked program.
Segítek: az az engine sem képes c kódból idegen program memóriáját piszkálni, mert azt bármelyik operációs rendszer letiltja. Assembly-ben közvetlenül gépi kóddal éri el a hatást, és mellette malware-szerű viselkedést mutat, ezért a vírusírtók gyakran letiltják (malware viselkedés tünetei: programok visszatérési értékét hamisítja, hogy ne return-öljenek hibával, operációs rendszeren felül memóriát ír át...)
Én azt tanácsolom, hogyha mindenképp csalni akarsz, akkor minden játékba építenek be erre módot, többnyire ingame konzol formájában, vagy konfig fájlban. Ezt használd inkább, biztonságosabb. (A windows kernel is a memóriából fut, valamit félrenyúlsz, és kék-halál, vagy rosszabb)
12. Nem, nem a csalásról van szó, akkor a Cheat Enginet használnám, ennyi, nem foglalkoznék én a C-vel.
Csak épp a memóriáról tanulok, és erről nem volt tananyag, gondoltam ezzel kiegészítem a tudásom





"Van egy címem.."
Már itt megállhatunk. Egy sima (userspace) processz csak a saját virtuális memóriáját látja, és a címek is arra vonatkoznak. Az op.rendszer (hardver támogatással) ezt fordítja fizikai címmé, de a fizikai címeket közvetlenül nem fogod tudni elérni programból. Ha kétszer indítanád a fenti kis progit, ami az általad írt memóriacímről olvas, akkor hiába ugyanaz a cím, a háttérben két különböző fizikai címről fog olvasni. (Nézz utána a címfordításnak, védett módnak, virtuális memóriának.)
A Cheat Engine pedig egy saját, kernel-space-ben futó modult használ.





"int *aP = "0060FEFC";"
Ez gondolom csak poén... :)) Az egyetlen pointer literál a null. Int vagy long (vagy inkább intptr_t) változót cast-olhatsz pointerré.





Nem értem mi a bajotok ezzel, tökéletesen csinálja amit kell, mégpedig:
létrehoz egy sztringet, ami értéke 0060FEFC.
A fordító látja, hogy pointer van, aminek egy karaktertömböt adnak át, így létrehoz a kérésnek megfelelően egy integer tömböt, majd castolja a karaktertömböt int tömbbé, és abban (lyukacsosan 4 bájtonként elhelyezve) elhelyezi a sztringet





-- "Segítek: az az engine sem képes c kódból idegen program memóriáját piszkálni, mert azt bármelyik operációs rendszer letiltja. Assembly-ben közvetlenül gépi kóddal éri el a hatást"
Ezzel nem sokat segítettél a kérdezőnek, inkább csak összekavartad. Teljesen mindegy, hogy milyen nyelv, C vagy assembly, csak rendszerhívással tudod megtenni. Nem "közvetlenül gépi kóddal". Hiába írsz ilyet, azt is "letiltja" az operációs rendszer. Eleve, ahogy előttem már írták, nem is látod, meg sem tudod címezni azt a területet a saját programodból.
Remélem ezt is te írtad:
-- "A fordító látja, hogy pointer van, aminek egy karaktertömböt adnak át, így létrehoz a kérésnek megfelelően egy integer tömböt, majd castolja a karaktertömböt int tömbbé, és abban (lyukacsosan 4 bájtonként elhelyezve) elhelyezi a sztringet"
Öö.. nem? Megtennéd, hogy beleírod a programba ezt, és megnézed, hogy mit ír ki?
printf("%d %d", aP+1, aP+2);





#17,nagy baromságot mondtál.
Mivel int* a tömb, persze hogy a %d jót ír ki +1-re és +2-re is, mert int méretnyit ugrik. Ha nem hiszel nekem, én javasolok neked egy hexdump-ot





"majd castolja a karaktertömböt int tömbbé, és abban (lyukacsosan 4 bájtonként elhelyezve) elhelyezi a sztringet"
Te ezt állítottad. Abból a sorból látni lehet, hogy nem így van. Nem értem a problémát.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!