Перейти к содержанию

Узнать значение стекового адреса при срабатывании инструкции


MasterGH

Рекомендуемые сообщения

В версии CE 6.4 мы имеем возможность подсмотреть стековые значения в момент срабатывания инструкции.

 

На рисунке показано как подсмотреть стековое значения [ebp-2c]

 

post-3-0-07267400-1426779020_thumb.png

 

1. Находим адрес

2. Ставим брейкпоинт

3. Открываем MoreInfo и дизассемблер по адресу инструкции и видим например сверху стековые регистры esp или ebp. Обычно ebp, т.к. этот регистр что-то вроде базового адреса внутри стека у которого адрес верхушки стека лежит в esp

 

 

Таким образом мы можем легко узнать значение в стеке и выстроить многоуровневый указатель по этому принципу.

 

Напомню, что раньше было проблематично подсмотреть стек. Приходилось ставить условные брейкпоинты. Теперь это можно не делать. Берите этот прием на заметку. Теперь многоуровневые указатели можно будет строить куда проще.

 

 

Если есть вопросы, то пишите.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

У меня есть Вопрос. Можно ли стековое значение применять как фильтр свой/чужой ? Как стековое значение Правильно записывать в скрипт и как записать стековое значение если значение находится в многоуровневом указателе, Записывать его в оригинале или как то реструктуризововать ? Можно ли Сделать свой  фильтр   свой/чужой не меняя все поле структуры написанием 2мя разветленными фильтрами, сначала отталкиваясь от оригинального значения затем вписывая свое значение, Возможно ли такое ? 

Ссылка на комментарий
Поделиться на другие сайты

У меня есть Вопрос. Можно ли стековое значение применять как фильтр свой/чужой ?

 

Проблема практически всех "фильтров" из примеров на форуме заключается в том, что они делаются через экспериментальное определение и тестирование на протяжении от одного до нескольких уровней игры. По аналогии может быть и со стеком. Могут быть фильтры, могут работать, а могут и не работать, и может их не быть.

Тем не менее стек без преувеличения дает очень много зацепок, а точнее сравнение стеков. В нем могут находится по esp и ebp по постоянным смещениям

1) копии данных индивидуальные для игрока или группы игроков

2) указатели на структуры данных, в которых могут быть данные индивидуальные для игрока или группы игроков

3) адреса возврата по ret-ам индивидуальные для игрока или группы игроков (прыг обратно на код игрока или ботов)

Можно попробовать сделать фильтр или найти зацепки через сравнения дампов стека, но будет работать или нет это уже через эксперименты. ИМХО более надежный вариант отказаться от экспериментального фильтра в пользу вытаскивания поинтера из инструкции, которая работает только с твоим игроком или только с ботом (дружественным или не дружественным), а в инструкции работающей с ботами и своими игроком сравнивать по этому поинтеру.

 

Как стековое значение Правильно записывать в скрипт и как записать стековое значение если значение находится в многоуровневом указателе, Записывать его в оригинале или как то реструктуризововать ?

 

Записывай как хочешь, лишь бы работало. Могу предложить только избегать каких-либо указателей для универсальности работы чита на разных версиях игр. Ищи инструкции, которые работают только с игроком или только с ботами (дружественными или не дружественными)

 

Можно ли Сделать свой  фильтр   свой/чужой не меняя все поле структуры написанием 2мя разветленными фильтрами, сначала отталкиваясь от оригинального значения затем вписывая свое значение, Возможно ли такое ? 

 

К сожалению я не понял вопроса.

 

Во всяком случае, ты можешь сам узнать ответ. У тебя есть все для этого: CE, игра и твой вопрос  ;)

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.