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

Вопрос по работе с Stack View.


elrione

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

Допустим, мы работаем с GameMarker, где на одной инстуркций у нас может лежать чуть ли не вся игра, это нормально для движка. Допустим, мы хотим создавая скрипт ассемблера, создать еще и фильтр через cmp, поскольку нам нужно фильтровать поток проходящий через инструкцию и срабатывать только в нужным нам момент, иначе мы попросту запишем "что-то" не туда. Для этого у нас есть инструмент "Stack view", он нам покажет что было в стеке по условному "ebp", находим что в стеке в смещений "-38", были данные "00019A16", их и будем сравнивать. Вызовем любой не занятый регист, запишем в него ebp+48 и будем сравнивать, когда сравнение было удачным - выполнем нужные нам махинации с памятью. 
Собсвтенно как это выглядит: 

Спойлер
newmem:
  push edx
  mov edx, [ebp-38]
  pushf
  cmp edx,19A16
  je Crit
  jmp code

Crit:
  popf
  pop edx
  fstp st(0)
  fld qword ptr [CritValue]
  fstp qword ptr [esi]
  pop esi
  jmp return

CritValue:
  dq (double)205

code:
  popf
  pop edx
  movsd [esi],xmm0
  pop esi
  jmp return

 

Теперь к сути вопроса, как я могу найти все вариации в смещений "ebp-38"? Ну или узнать к чему они привязаны.

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

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

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

Посмотрел я её. Версия  39 GOG

Не чего там в стеке крутить не надо.

Просто трейсиш с условием и поднимаешься вверх.  Смотришь за регистрами.

В условие трейса ставишь то что выдаёт сработавшая инструкция на адресе.

На жизни и патроны получилось так сделать.

 

найти все вариации в смещений "ebp-38"?

ищи выше по коду что пишет в ebp-38

 

UPDATE: Способом который я описывал выше получилось только на оружие сделать.

Остальное пришлось сравнивать по стеку.

 

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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

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