C++ - Odczytywanie wartości pamięci a dynamiczny adres.

0

Witam, piszę aplikację, która ma ingerować w inny proces i odczytywać mi pewną zawartość umieszczoną pod danym adresem. Wszystko działa tak jak trzeba, lecz aplikacja ma pewną niedogodność. Mianowicie, adres spod którego mam odczytywać wartość znajduję za pomocą Cheat Engine. Następnie wpisuję go do funkcji ReadProcessMemory i kompiluję projekt. Po restarcie procesu adres zmienia się i znów muszę odczytywać go używając Cheat Engine. Na dłuższą metę, jest to sposób niezwykle męczący, dlatego chciałbym, aby adres ten był odczytywany automatycznie po starcie programu. Czytałem coś o base address i offsetach/pointerach, ale mój poziom wiedzy nie jest wystarczający, by samemu rozwiązać ten problem. Proszę o pomoc.

0

Base address będzie potrzebny przy ASLR.

Jeśli chodzi o sam adres to jest to dosyć trudna sprawa. Może on być bardzo mocno zagnieżdżony, i obiekt najwyżej w hierarchii może być w dwóch miejscach: globalny wskaźnik (stały adres) na ten obiekt, lub na stosie. Jeśli jest to stos to sprawa jest bardzo skomplikowana, i bez inline hooków nie dasz rady raczej. Jeśli chodzi o globalny wskaźnik, to wystarczy go znaleźć, i się od niego odpowiednio odnieść.

0

Na windzie (bo na nixach to na pewno) chyba da się też całkowicie wyłączyć ASLR.
http://stackoverflow.com/questions/9560993/how-do-you-disable-aslr-address-space-layout-randomization-on-windows-7-x64

1 użytkowników online, w tym zalogowanych: 0, gości: 1