Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2011, 20:02   #11
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Стрелка

Цитата:
Сообщение от mss Посмотреть сообщение
Ну и причем здесь ReadProcessMemory ?
Она исправно выполняет свю задачу.
Вопрос был в "хитростях использования" ReadProcessMemory для получения нужного результата. Собственно он отображен во второй части названия темы.
Lime вне форума Ответить с цитированием
Старый 16.08.2011, 22:15   #12
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Для дальнейших недоразумений скорректирую свой вопрос:

"Каким образом можно найти аргумент lpBaseAdress после перезапуска программы для получения функцией ReadProcessMemory соответствующих (надлежащих, идентичных с предварительно полученными) результатов?"
Пример: Запустил программу "цель", нашел нужный адрес, прочитал значение записал его в блокнот. Перезапустил программу, нашел новый адрес нужного значения, прочитал значение, сравнил. Вероятно для поиска нового адреса придется пользоваться все той-же функцией, но "откуда начинать" и "как организовать" не понятно.

Последний раз редактировалось dr.Chas; 17.08.2011 в 01:30.
Lime вне форума Ответить с цитированием
Старый 16.08.2011, 22:43   #13
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Нормальный вопрос. ReadProcessMemory - это инструмент, можно считать, вы им пользоваться умеете. Вам надо научится искать указатели. Artmoney с этой задачей не очень справляется, он максимум ищет 1 уровень указателя. Не нашли вы указатель потому, что возможно указатель указывает на какой-то объект, где значение опыта является частью этого объекта (структуры). Чтобы выйти на это значение надо знать указатель, а также смещение, как выше было отмечено.

Хотите "правильно" научится искать указатели - придется осваивать риверсинг программ.

1. Попробуйте использовать поиск указателей не на один адрес, а на блок памяти, а потом отсеиваете. Это что касается ArtMoney
2. http://chemax.ru/articles/tutorial_dma_nondma.php - вот здесь есть статья (поиск поинтера) как искать указатель на примере игры Red Alert2, с исходником. Попытайтесь понять суть поиска, сами программные средства можно разные применять.
3. Из отладчиков советую использовать IDA PRO.
4. А что за игра-то?
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 17.08.2011, 00:36   #14
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

2 Larboss
Спасибо за совет, о использовании и поисках указателей в данной узкой теме (если говорить о играх) поведал tutorial программы Cheat Engine где в 8ми шагах рассказывалось от поиска адреса конкретного значения до Code Injection (на asm с помощью все той-же программы) и 4-х pointer to pointer ... С практическим использованием рассказанного на тестовой программе. Выглядело как квест

На англоязычных форумах описывается структура данных а так-же множество смещений после адреса структуры которые ведут к нужным мне данным, но практически во всех вариантах "принцип поиска" не понятен т.к. используются не выложенные dll/описания функций классов, + ко всему написано на "скриптовых языках". Возможно создам отдельную тему для "конвертации" этого индусского добра в псевдокод)

Ну и собсна артмани я использовал для поиска, ибо других инструментов под рукой нет.
Игра - не хочу заострять внимание на ней
Lime вне форума Ответить с цитированием
Старый 17.08.2011, 01:04   #15
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Вам нужно что? Понять принцип поиска указателей или решить вашу конкретную задачу текущую?
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 17.08.2011, 01:08   #16
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Как я понял без теории сложно на практике. Я хочу понять принцип поиска указателей и при этом написать работающий пример для моей задачи.
Lime вне форума Ответить с цитированием
Старый 17.08.2011, 01:32   #17
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

http://exelab.ru/f/index.php?action=...orum=6&page=-1 - мб и поможет.

Принцип, грубо говоря, такой: найти адрес значения (можно Артмоней использовать), поставить на этот адрес брейкпоинт (точка остановки) и в отладчике смотреть, "кто" ссылается на этот адрес. В ссылке, относящиеся к RedAlert 2, принцип описан.

Потребуется:
1. Минимальные знания для работы с отладчиком.
2. Знания для создания трейнеров.

В общем, гуглите=)
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 17.08.2011, 02:25   #18
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Получается примерно то-же самое что и в приведённых Вами ссылках.
Выстраиваются "цепочки" адресов и указателей и на каком-то этапе доступ к адресу имеют слишком много мест откуда они меняются. (к примеру указательN меняется/читается в 10ти местах на ASM.. и тут уже совсем не понятно что искать дальше

Зарубежные "коллеги" решили данныю задачу путём поиска структуры данных (данных о персонаже), и после нахождения адреса этой структуры дальше идут константы отступы прибавив которые к адресу найденной структуры можно сразу добратся до адресов нужных мне значений. Но как я уже говорил поиск этой структуры мне совсем не понятен.
Lime вне форума Ответить с цитированием
Старый 17.08.2011, 09:52   #19
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Названные вами "отступы" на самом деле называются смещением. Я больше склоняюсь к тому, что зарубежные коллеги получили указатель на структуру, искав какое-то значение этой структуры. А затем, найдя его адрес, вычли из него нужное смещение. Например, [[A+0x18h]+0x20h]+0x23h], где А - адрес структуры.

PS. Желательно бы, чтобы вы сказали, что это за игра такая. Когда больше информации - больше можно подсказать. У меня есть скайп, можете "постучать", вечерком буду там.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 17.08.2011, 13:45   #20
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Ну отступы, смещения, оффсеты - главное чторбы смысл был понятен

Здесь пример нахождения адресса, но не совсем понятно "адрес" процесса (апсурд же, ведь PID указывается изначально) либо адрес нужной структуры в процессе (снова апсурд, зачем сравнивать имя "exe файла" если PID уже известен), даи сама структура созданная в этом примере смахивает на описание процесса после CreateToolhelp32Snapshot. http://delphiworld.narod.ru/base/get...processes.html Тут много применений под "нужды" автора.
Lime вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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