Сейчас на форуме: (+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 > указатель содержит адрес другого адреса, но доступ к адресу указателя происходит только из того другого адреса, который он содержит Жесть ![]() Очень сложно понять, не понимая что вы понимаете под понятием указателя и адреса ![]() Похоже на связанный список наверно. ![]() |
|
Создано: 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 ![]() |
|
Создано: 20 ноября 2013 20:30 · Личное сообщение · #5 |
![]() |
eXeL@B —› Вопросы новичков —› Поиск указателей через Cheat Engine |