Сейчас на форуме: bartolomeo, -Sanchez- (+4 невидимых)

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

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

Создано: 03 апреля 2006 19:39
· Личное сообщение · #1

Взял для примера отрывок кода из книги:

b8 05 fe mov ax,0fe05h
eb fc jmp $-2
80 c4 3b add ah,03bh


Вроде бы все ясно. Вторая иснтрукция передает управление на ячейку с содержимым 05.
Т.е. следующей выполненой должная быть 3-байтная инструкция с опкодом 05 fe eb (add ax,0ebbfh),

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

jmp$-2. Текст ошибки, который мне выдал OllyDbg, следующий: "Access violation when writing to

[c480fceb]". Что-то идет не по плану...
Пользуюсь MASM версии 6.14.8444, линкер 5.12.8078. Винда - XP.

Что именно? В чем может быть проблема?

П.С.
Еще одно - в exe-шнике почему-то добавляется еще один байт перед b8 - а именно 66. Поэтому

первая интрукция получается 66b805fe, т.е. mov eax, 00000fe05h, но отладчик все равно

отображает ее как mov ax,0fe05. Почему так?



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

Создано: 03 апреля 2006 20:38
· Личное сообщение · #2

Ты бы полный исходник запостил - кто тебя знает что ты там компилишь.... А пример - рабочий, как и ожидалось. Открыл Олей нотпд, и пямо на Ентери Поинте разместил твой пример. Ни каких эксепшенов - не наблюдал.



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

Создано: 03 апреля 2006 20:45
· Личное сообщение · #3

Забыл сказать - сатанинсое число 66 - Это префикс переопределения размера операнда


 eXeL@B —› Вопросы новичков —› Не получается перекрывающий код...
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати