![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
![]()
Доброго времени суток!
Есть 3D игра, есть куча параметров которые мне нужно считывать из её процесса. С помощью ArtMoney я нахожу адресс нужного мне значения, считываю его такой простенькой процедурой: Код:
Вопрос собственно в том: как найти этот и многие другие адреса из которых мне нужно считывать данные без 5-тичасового поиска с помощью сторонних программ... А так-же хотелось бы найти какую-нибудь статью по работе с памятью чужих процессов с примерами и пояснениями. Всем спасибо за ответы! |
![]() |
![]() |
![]() |
#2 |
Недо
Участник клуба
Регистрация: 11.08.2011
Сообщений: 1,394
|
![]()
Дело в том, что игры используют DMA (большинство). Динамически распределяется память, поэтому при каждом перезапуске адрес меняется. Вам необходимо найти указатель на адрес, т.е. будет 2 вызова ReadProcessMemory: первым вы получите адрес значения, а вторым собственно значение. О том как искать указатели (или создание трейнера DMA) и что это такое, спросите в гугле, "под рукой" нет ссылки для вас.
1. Chemax.ru - тут найдете примеры трейнеров с описанием, раздел "статьи". 2. CheatEngine - прога, вроде бы умеет искать указатели.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Последний раз редактировалось Larboss; 16.08.2011 в 01:38. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
эмм DMA?(Direct Memory Access)
с остальным согласен. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
В этом контексте, видимо, DMA = Dynamic Memory Allocation.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
![]()
Спасибо за подсказки, вот я наткнулся на эту страничку http://www.artmoney.ru/manual/russian/dma.htm но найти "указатель на указатель" по инструкции мне так и не удалось
![]() P.S. "проблема" возникает на шаге Отсеивание указателей когда я пытаюсь отсеить указатели из блока памяти , чтобы найти тот который ведет к текущему адресу с опытом. В 1вом-же поиске после отсеивания находится 0 указателей. Cheat Engine, tutorial 6 шаг: Цитата:
![]() ADD: Т.К. Адреса с "опытом" было 2, после некоторых попыток и манипуляций со вторым я всетаки нашел pointer+offset которые дают соответствующее с игрой значение текущего опыта однако после "перезапуска" адреса сменились снова ... Возможен ли вариант "тройных указателей" ? ![]() Последний раз редактировалось Stilet; 16.08.2011 в 21:03. |
|
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
![]() |
![]() |
![]() |
#7 | |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Двойных, тройных, n-ых... Это запросто может быть поле какой-то структуры, находящейся в экземпляре какого-то объекта в списке, например
![]() Цитата:
пыщь
|
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 815
|
![]()
JTG, тогда возможно ли вообще решить поставленную задачу?
|
![]() |
![]() |
![]() |
#9 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Не порывшись отладчиком, трудно сказать. Решить-то однозначно можно, только решения "в лоб" может не быть и придётся заниматься реверсингом программы.
пыщь
Последний раз редактировалось JTG; 16.08.2011 в 19:42. |
![]() |
![]() |
![]() |
#10 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]()
Ну и причем здесь ReadProcessMemory ?
Она исправно выполняет свю задачу. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ReadProcessMemory/Не понятные явления | coNsept | Общие вопросы C/C++ | 2 | 31.07.2011 19:33 |
Меняющийся контент | 9GYAR | HTML и CSS | 3 | 20.07.2011 16:01 |
ReadProcessMemory+TMemoryStream | Bad-XxX | Общие вопросы Delphi | 2 | 10.10.2010 20:11 |
Проблема с FindFirst, как указать меняющийся путь? | _SacreD_ | Общие вопросы Delphi | 12 | 26.12.2007 16:14 |