Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Dynamiczny i statyczny adres pamięci
#1
Cześć wszystkim, jestem nowy; Zaczynam ostatnio uczyć się podstaw hackowania gier. Mam małe pytanie dotyczące adresów pamięci:   Załóżmy, że znajduję adres pamięci o wartości takiej jak X, Y, Z Coords i są one przechowywane dynamicznie, mogę dinamically znaleźć ich adres poprzez znalezienie wskaźników. Ale co powiesz, jeśli nie znajdę żadnego wskaźnika?   Pytanie brzmi: Obecność wskaźników jest związana z kodem programisty lub jest generowana automatycznie?   np .:       Kod:   int a = 10; int * pointer = & a;   Mogę znaleźć adres "a" pamięci za pośrednictwem adresu wskaźnika w prawo?   Ale na wypadek, gdyby wskaźnik nie istniał?   UWAGA : Nigdy wcześniej nie próbowałem hackowania gier, więc nie płoncie mnie w tej głupiej wątpliwości. Proszę
Reply
#2
Wskaźniki wskazują przestrzeń w pamięci, która została przydzielona dynamicznie w czasie wykonywania. Jeśli nie możesz znaleźć statycznego wskaźnika, jesteś zbyt głęboki, cofnij się o krok (umieść na nim punkt przerwania, aby zobaczyć, skąd się go nazywa). Prawie zawsze będzie stałe odniesienie do wybranego obiektu. W twoim przykładzie nie powinno być problemu ze znalezieniem wskaźnika (zakładając, że jest to globalne, a nie wbudowane), ponieważ kompilator skompiluje ten shiz up i otrzymasz statyczny wskaźnik do "a" w stosunku do bazy modułu. Teraz, aby dostać się od wskaźnika do samego obiektu, musisz wyłuskać wskaźnik tak: Kod: int a = 10; int * pointerToA = & a; int valueOfA = * pointerToA; Jeśli chcesz debugować "valueOfA", zobaczysz, że jest 10. W wyniku dereferencji podążyłeś za wskaźnikiem i uzyskałeś wartość samego "a".
Reply
#3
Zacytować: Originally Posted by shakai Jeśli nie możesz znaleźć statycznego wskaźnika, jesteś zbyt głęboki, cofnij się o krok Nie sądzę, żeby to była całkowita prawda, można przydzielić pamięć Kod: int * pNumber = reinterpret_cast (malloc (5 * sizeof (int))); i nie mają żadnych statycznych wskaźników do niego
Reply
#4
Zacytować: Napisał IChooseYou Nie sądzę, żeby to była całkowita prawda, można przydzielić pamięć Kod: int * pNumber = reinterpret_cast (malloc (5 * sizeof (int))); i nie mają żadnych statycznych wskaźników do niego Jeśli podany przez Ciebie przykład ma charakter globalny, możesz z pewnością znaleźć adres samego wskaźnika, który możesz następnie znaleźć, aby znaleźć rzeczywisty obiekt.
Reply
#5
Zacytować: Originally Posted by shakai Jeśli podany przez Ciebie przykład ma charakter globalny, możesz z pewnością znaleźć adres samego wskaźnika, który możesz następnie znaleźć, aby znaleźć rzeczywisty obiekt. Myślę, że możesz go użyć tylko po wstrzyknięciu kodu ...
Reply




Users browsing this thread: 1 Guest(s)