|
|
| Посл.отвђт | Сообщен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 |