Получение ptr из адреса памяти с помощью c ++ - PullRequest
2 голосов
/ 26 февраля 2010

Я пытаюсь получить версию движка игры из глобального указателя, но я довольно новичок в этом. Вот очень маленький пример, который я нашел ...

http://ampaste.net/mb42243

И это разборка для того, что я пытаюсь получить, указатель (gpszVersionString) - это выделенная строка (строка 5)

http://ampaste.net/m2a8f8887

Итак, что мне нужно выяснить, так это в основном использовать примерный подход, который я нашел, чтобы получить его, нужно ли мне в основном отсканировать первую часть функции и найти смещение этой строки?

Как ...

Подпись памяти - / x56 / x8B / x35 / x74 / xD5 / x29 / x10 / x68 / x00 / xA8 / x38 / x10 Тогда смещение, чтобы достичь этой линии? (не уверен, как найти смещение)

1 Ответ

5 голосов
/ 26 февраля 2010

Вы не можете сделать это напрямую. Адресное пространство процесса полностью уникально для вашего процесса - 0xDEADBEEF может указывать на «Собаку» в одном процессе, а 0xDEADBEEF может указывать на «Кошку» в другом. Вам придется совершать вызовы операционной системы, которые позволят вам получить доступ к адресному пространству другого процесса, и даже тогда вам придется угадывать. Во многих случаях это местоположение будет отличаться при каждом запуске приложения - вы не можете предсказать, каким будет макет времени выполнения процесса во всех случаях.

Предполагая, что вы находитесь в Windows, вам нужно (РЕДАКТИРОВАТЬ: вам не нужны A и B во всех случаях, но они обычно нужны вам) A. быть администратором, B. взять SeDebugPrivilege для вашего процесса C, откройте дескриптор процесса , а затем D. используйте ReadProcessMemory / WriteProcessMemory , чтобы делать то, что вы хотите.

Надеюсь, это поможет:)

РЕДАКТИРОВАТЬ 2: Похоже, вы смотрите на адрес, взятый из дизассемблера. Если это так, то вы не можете использовать это значение адреса - изображение может быть заново основано во время выполнения, и значение там будет совершенно другим. Особенно в последних версиях Windows, которые поддерживают рандомизацию расположения адресного пространства.

...