Przydzielanie pamięci dla programu

Przydzielanie pamięci dla programu
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam. Jako, że ostatnio zainteresowałem się technika incjection, to mam parę pytań z podstaw. Przeczytałem parę stron na ten temat i nie mogę zrozumieć paru rzeczy. Najpierw musimy znaleźć adresy poszczególnych interesujących nas zmiennych. Czy przypadkiem nie jest tak, że za każdym razem system operacyjny przydziela nam inne "miejsce" w pamięci? Czy jest jakiś stały adres względem którego można potem dostać się do tych konkretnych zmiennych? Czy jest jakaś uniwersalna metoda za pomocą której możemy te zmienne znaleźć ? To na razie tyle pytań :P Proszę o pomoc i pozdrawiam.

Ktos
  • Rejestracja: dni
  • Ostatnio: dni
1

Za każdym uruchomieniem programu zmienne będą w różnych adresach. Albo nawet i gorzej.

Dawno temu, jak używałem trainera do gier, to działało to tak, że jeżeli wartość np. złota była 1000, to się szukało w pamięci gdzie jest 1000, potem zmieniało złoto na 900, szukało gdzie spośród tych adresów znalezionych wcześniej teraz jest 900 i tak dalej. I miało się adres w pamięci, więc można go było zmanipulować już ręcznie.

  • Rejestracja: dni
  • Ostatnio: dni
0

No właśnie. Ale w takim razie jak działają te wszystkie trainery? Skąd wiedzą gdzie w pamięci będzie akurat ta liczba złota skoro za każdym razem ląduje w innym miejscu? Chyba jakiś adres musi być stały bo jak inaczej to wszystko działa...

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
2

@tomek773 a pomyślaleś o tym że są pewne "stałe" markery w pamięci? Pewne wartości które zawsze są takie same i znajdują się "obok" tego co cię interesuje? ;)

  • Rejestracja: dni
  • Ostatnio: dni
0

Hmm ale dalej nie rozumiem... Skoro są jakieś 'znaczniki' to wciąż; skąd wiemy pod którym znacznikiem znajdą się dane naszego programu. Może polecicie jakąś stronę na której bym mógł poczytać o tej konkretnej rzeczy ?

Nie mogę edytować, a dopiero teraz zobaczyłem post powyżej. Dzięki za link, może mi się coś rozjaśni.

mr_jaro
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Grudziądz/Bydgoszcz
  • Postów: 5300
0

Może się nie znam ale ja robiłem pobieranie na bieżąco programem pewnym wartości z pewnej gry i adresy które podejrzałem w pamięci Cheat Engine`m się nie zmieniały. Prawdopodobnie były to jakieś statyczne wartości no ale dało radę.

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
0

Zobacz sobie kod trainera w WinAPI do Max Payne na moim blogu. Tam dobrze widač wyszukiwanie jak to tutaj nazwano markera, bo jeden z adresów pointerów o ile dobrze pamiętam do energii ustalony pod Cheat Engine jest zmienny i znajduje się w pewnym stałym przesunięciu od charakterystycznego ciągu bajtów. A pozostałe rzeczy to stałe adresy pointerów ustalonych pod Cheat Engine w standardowy sposób opisany w Google. Kod jest w Delphi, ale wedle mnie nie jest on skomplikowany, więc idzie się połapać.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.