2010-02-25 2 views
2

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

http://ampaste.net/mb42243

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

http://ampaste.net/m2a8f8887

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

Как ...

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

ответ

5

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

Предполагая, что вы находитесь в Windows, вам нужно (EDIT: вам не нужны A и B во всех случаях, но вам, как правило, нужны они) A. быть администратором, B. взять SeDebugPrivilege для вашего процесса, C, open a handle to the process, а затем D. используйте ReadProcessMemory/WriteProcessMemory, чтобы сделать то, что вы хотите.

Надежда, что помогает :)

EDIT 2: Похоже, что вы смотрите на адрес взят из дизассемблера. Если это так, то вы не можете использовать это значение адреса - изображение может быть повторно основано во время выполнения, и значение будет совершенно иным. В частности, в последних версиях Windows, которые поддерживают рандомизацию макета адресного пространства.

+0

+1, хороший полный ответ при работе с кросс-технологической памятью. – Xorlev

Смежные вопросы