Итак, посмотрел исходники, гайды и тп, везде оффсеты(адреса) были прописаны сразу, а что делать, если адрес динамический и при каждом перезапуске меняется?!
Может лучше потратить некоторое время на поиск указателя?
Дело скучно, не спорю, но зато ты будешь просто читать из статической памяти адрес массива байтов,
И сразу переписывать его.
Вместо того что бы при запуске ждать когда же оно пройдет адресное пространство игры.
Что касается алгоритма поиска - [Ссылки могут видеть только зарегистрированные пользователи. ] download->sourcecode, прада на дельфях
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Может лучше потратить некоторое время на поиск указателя?
Как это сделать? Желательно пример, просто мне еще надо будет некоторые значения менять, но они появляются только после 10 выстрелов мимо например....=(
Как это сделать? Желательно пример, просто мне еще надо будет некоторые значения менять, но они появляются только после 10 выстрелов мимо например....=(
Как найти указатель статей полно, на жуке в том числе они должны быть.
Если вкратце - через тот же [Ссылки могут видеть только зарегистрированные пользователи. ] находишь нужное значение, врубаешь
дебаггер и проверяешь значения регистров во время выполнения каких-либо
действий(дебаггер заботливо запишет для вас) с этим значением (выстрелил - уменьшился счетчик патронов)
Во всяких игрушках с DynamicMemoryAllocation эти
операции выполняются не напрямую, а через поинтеры, для безопасности.
-> В регистрах проца на момент выполнения этой операции будут храниться адреса переменных.
Что самое страшное адреса бывают мм.. "вложенными".
Т.е. есть в стат. памяти указатель, который содержит адрес другого указателя в динамич. памяти,
тот в свою очередь может содержать адрес нужной переменной.
Плюс надо учесть, что некоторые значения могут быть записаны не по самому адресу, а по адресу со смещением (оффсет)
- я вот с ними всегда путаюсь, несмотря на напоминания чит энджина)
Тебе вобщем нужно от этой переменной "пройти" до адреса в стат. памяти,
Выписать его на бумажечку, и в программе ты будешь делать вот что:
/*vamemoryObj - экземпляр лабы VAMemory,
offset - оффсет первого указателя относительно начала адресного пространства процесса*/
IntPtr mainAddress = (IntPtr)(vamemoryObj.BaseAdress + offset);
//читаем адрес из указателя
IntPtr secondPointer = vamemoryObj.ReadInt32(mainAddress);
//допустим переменная имеет тип int и лежит по адресу
//записанному в secondPointer + оффсет скажем в 80 б. изменим ее на значение
//введенное юзером:
bool result = vamemoryObj.WriteInt32(secondPointer + 80, int.Parse(Console.ReadLine()));
P.S. пример как понимаешь обобщенный, и на точность и нормальную работоспособность не претендует.
Да и собственно алгоритм поиска адреса описан не слишком красиво, но в сети лежит большое количество примеров.
Да и, в случае если раньше доводилось работать с winApi, то почитай, хотя бы основные моменты,
"[Ссылки могут видеть только зарегистрированные пользователи. ]" Джеффри Рихтера
- замечательная книга (правда я никак ее не дочитаю).
P.P.S. Извиняюсь за оговорки - если что не так написал - поправьте.. А то сплю я) Года 3-4 сплю)
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось •theSaboteur•; 24.11.2011 в 22:48.