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

Арифметическое смещение


Гость

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

Доброго всем :)

Наткнулся на такую инструкцию: mov [ecx+ebp*8],edx

Собственно, ищу указатель на адрес, и напоролся на этого "зверя". Как узнать, какой именно здесь указатель?

8 или нужно сложить ecx и ebp и умножить на 8? Или как?

P.S.

Да, знаю что можно через АА скрипт сделать, и не париться. Но не хочется, так сказать, терять "сноровки" в других методах взлома, и хочется узнать что-то новое :)

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

1. Я уже в какой-то из тем писал, что такие инструкции чаще всего встречаются при переборе элементов массива. Но это, конечно, не факт, что в данном случае оно так.

2. По правилам математики, умножение обладает более высоким приоритетом, следовательно, в данном случае в ecx лежит "база", а ebp*8 - это смещение. То есть, получается, что в ecx - адрес первого элемента массива, в ebp - индекс текущего элемента массива, а 8 - это размер одного элемента массива.

3. Что нужно сделать? Нужно отследить состояние регистра ebp в момент выполнения и затем умножить его содержимое на 8. Тогда и получится "база" (ecx) + смещение (ebp*8).

Надеюсь, понятно объяснил.

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

  • Xipho закрыл тема
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

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

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