| Сейчас на форуме: (+7 невидимых) |
| eXeL@B —› Вопросы новичков —› Поиск указателей через Cheat Engine |
| Посл.ответ | Сообщение |
|
|
Создано: 20 ноября 2013 03:20 · Поправил: 339970 · Личное сообщение · #1 Попытался пройти по дереву указателей и найти статический указатель к одной игре через Cheat Engine 6.2. На третьем уровне указателей споткнулся о такую штуку, что указатель содержит адрес другого адреса, но доступ к адресу указателя происходит только из того другого адреса, который он содержит: все равно что А указывает на Б, но к А обращается только Б. Выглядит как инструкция "mov esi, [esi]" Скрин приложен, там обведена кружками и стрелочками с нумерацией логика моих действий: 1. Ввожу в поиск значение указателя третьего уровня, из которого было обращение к указателю второго уровня 2. По значению нахожу адрес 3. Добавляю этот адрес для ослеживания 4. Запускаю отладчик и меняю значение, чтобы узнать, кто и откуда обращается к отслеживаемому адресу указателя третьего уровня 5. Получаю обращение из инструкции "mov esi, [esi]", но при этом регистр esi содержит то же самое значение указателя второго уровня, через которое я вышел на указатель третьего уровня Пробовал все перезапускать, комбинация отступов сохраняется (+10, +8, +0), адреса естественно меняются, и аналогично на указателе третьего уровня такая же проблема. В ассемблере я полный нубас, хоть и изучаю потихоньку. ![]() |
|
|
Создано: 20 ноября 2013 05:31 · Личное сообщение · #2 > указатель содержит адрес другого адреса, но доступ к адресу указателя происходит только из того другого адреса, который он содержит Жесть ![]() Очень сложно понять, не понимая что вы понимаете под понятием указателя и адреса ![]() Похоже на связанный список наверно. | Сообщение посчитали полезным: 339970 |
|
|
Создано: 20 ноября 2013 11:37 · Поправил: 339970 · Личное сообщение · #3 Спасибо, опыта нет, но продолжаю разбираться. Дорогу осилит идущий. Моя задача - используя возможности Cheat Engine найти статические (то есть, не меняющиеся после перезапуска игры), указатели на различные переменные (типа там хп, мана, патроны). Исследуеммая программма написана на C++, с использованием указателей, поэтому я так их пониманию, как переменные, содержащие адреса в памяти. Алгоритм действий такой, что я отслеживаю, с каких адресов игра пишет в отслеживаемый адрес (поначалу это найденная переменная, а потом другие указатели), через опцию в CE "Find out what acsesses this address", и затем начинаю последовательно отслеживать каждый найденный адрес, развлетвляясь? если таких найденных адресов несколько. ![]() |
|
|
Создано: 20 ноября 2013 18:11 · Поправил: DenCoder · Личное сообщение · #4 339970 пишет: указатели на различные переменные (типа там хп, мана, патроны). Как правило, отдельно на каждую характеристику/свойство указателей не делают. Ввиду более чем 30-летней практики , скорее вы найдёте указатели на объекты структур/классов. Как правило, постоянные или редко меняющиеся характеристики типа имени персонажа, цвета, расы, касты... находятся в объекте одной структуры (на него должен быть указатель). Динамические объекты типа боеприпасов, артефактов..., которые могут находиться, кончаться, теряться, ломаться, улучшаться, обмениваться - в другом объекте. В последнем случае как минимум по указателю на каждый имеющийся в наличии объект внутри другого объекта. Совокупность постоянных и динамических объектов могут быть в одном объекте, описывающем персонажа в каждый момент времени. В зависимости от реализации и применённой техники всё может быть куда сложнее. Даже пустой слот может иметь постоянный указатель в объекте персонажа. Я бы начал со списка объектов, у которых есть названия ![]() И да, объекты могут объединяться в списки. В этом случае обычно в начале (но необязательно так!) один или два указателя на соседние объекты такой же структуры, может быть указатель на родительский, на дочерние, на зависимые, от кого зависит и т.п. Применяются также списки с хедером, в котором если список пуст, оба указателя указывают на тот же адрес, содержащий их. ----- IZ.RU | Сообщение посчитали полезным: 339970 |
|
|
Создано: 20 ноября 2013 20:30 · Личное сообщение · #5 |
| eXeL@B —› Вопросы новичков —› Поиск указателей через Cheat Engine |









Для печати