· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Возвращение управления в PE

Посл.отвђт Сообщенiе


Дата: Июн 1, 2004 14:53:15

Здравствуйте

Написал прогу для добавления своего кода в PE. А в документации сказано, что управление передается на старую точку входа командой
--> JMP смещение
Также говорится, что:
старая_точка_входа=ImageBase+EntryPoint
Таким методом не получается вернуть управление.
Добавление кода в PE производится методом добавления в свободное место последней секции. На новую точку входа попадпет нормально, а вот со смещением проблема. Подскажите пожалуйста что не так ?


Дата: Июн 2, 2004 00:38:28

ты относительное смещение задаешь ?
смещение для jmp (опкод E9)
задается так:

jmp_offset: jmp (destination_offset-(jmp_offset+5))

+5 - это длина jmp (E9 и 4 байта адрес)

например, чтобы с адреса 0x500000 прыгнуть на адрес 0x400000, надо написать так:

(0x400000-0x500000+5) = 0xFFEFFFFB

и соответственно:

500000: E9 FB FF EF FF

или у тебя не в этом проблема ?


Дата: Июн 2, 2004 09:25:24

Может и в этом :) если бы точно знал... так проблема вот в чем:
1) Нахожу в последней секции место
2) Рассчитываю туда смещение
3) Записываю в заголовок новую точку входа (указывает правильно)
теперь собственно проблема:
4) У меня есть сохраненная точка входа и мне нужно просто передать на нее управление. Опкодом E9. Старая точка входа указывала в другую секцию. Теперь вопрос: как из старой точки входа рассчитать смещение ?


Дата: Июн 2, 2004 11:42:15

дык я же привел пример! вместо 0x400000 подставь сюда OEP, вместо 0x500000 соответственно EP... и вычисли относительное смещение...


Дата: Июн 2, 2004 14:33:45

Спасибо, все уже ОК :)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.408