Сейчас на форуме: _MBK_, asfa (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Неправильный адрес
Посл.ответ Сообщение

Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 июня 2009 18:19
· Личное сообщение · #1

Восстанавливаю украденные виртуальной машиной инструкции. Захожу в нее, делаю что надо и адреса этих инструкций получаю. Дальше, вроде-бы, нужно заменить нужными инструкциями с найденными адресами инструкции VM. Но что за ерунда?! Вот допустим: команда VM - call 00bc0000. Я нашел, что украдена (call) и нашел нормальный адрес - 01002b27. В скрипте пишу
...... mov [addr],F9 - опкод инструкции jmp
inc addr
mov [addr],NewAddr ....... - это переменная, где хранится (01002b27)
А в результате в проге появляется вовсе не jmp 01002d27, а прыжок на какой-то иной странный адрес. Почему так?



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 17 июня 2009 20:19 · Поправил: tihiy_grom
· Личное сообщение · #2

потому что это оля интерпретирует эту команду как "jmp 01002b27", а ты, если пишешь в dword конкретный адрес, рассчитывай его как смещение конечный адрес - текущий адрес - 5




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 18 июня 2009 18:13
· Личное сообщение · #3

К слову сказать, F9-ни разу не jmp. Не знаю, где опечатка, но принять к сведению стоит.



Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 июня 2009 23:03
· Личное сообщение · #4

Спасибо. Вот что значит невнимательность. В одном случае учел такую петрушку, а в этом - нет. Буду исправляться...


 eXeL@B —› Вопросы новичков —› Неправильный адрес
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати