|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 11, 2003 18:53:19 Где-то(уже не помню где...) слышал о таком приеме - между дос заголоком и IMAGE_NT_HEADERS32 есть пустое пространство, обычно около 430 байт. Все бы хорошо, НО это пространство, коню понятно, не принадлежит ни какой из секций, поэтому я чего-то затрудняюсь найти RVA его начала, а ведь, именно RVA нужен EntryPoint'у. Я видел несколько алгоритмов нахождения RVA по фаиловому смещению и все они упирались в перебор секций. Да и я, наверное, плохо понимаю смысл слова RVA. Вот, что пишет Hard Wizard: "RVA есть относительный адрес ссылающийся на Image Base". Что значит ссылающийся? Не могли бы вы сказать по-конкретнее, что такое RVA. |
|
|
Дата: Авг 11, 2003 18:57:35 R4DX Почитайте Володину статью (NEW) |
|
|
Дата: Авг 11, 2003 19:00:02 · Поправил: Безпощадный даос Есть слово, которое часто используется по отношению к формату PE: RVA. RVA расшифровывается как относительный виртуальный адрес (relative virtual address). Вы знаете что такое виртуальный адрес. Сложное, на первый взгляд, словосочетание RVA служит для обозначения простой концепции. Просто представьте, что RVA - это расстояние до ссылающейся точки в виртуальном адресном пространстве. Я уверен, что вы знакомы с файловым смещением: RVA точно тоже самое, что и файловое смещение. Тем не менее, RVA задается относительно положения в виртуальном адресном пространстве, а не файла. Я покажу вам пример. Если PE-файл загружается по адресу 400000h в виртуальном адресном пространстве и программа начинает выполняться с адреса 401000h, мы можем сказать, что программа начинает выполняться с RVA 1000h. RVA определяется относительно стартового виртуального адреса модуля. Копирайты: (С) Iczelion (автор туториалов). См. http://www.win32asm.cjb.net (С) Aquila (перевод на русский). См. http://www.wasm.ru Модератор: В теге CODE перенос слов не осуществляется |
|
|
Дата: Авг 11, 2003 19:01:10 Это уменя глюк такой, или так изадумано было, что строка не заворачивается? |
|
|
Дата: Авг 11, 2003 19:07:35 Чего-то я совсем запутался :). Значит RVA gолностью зависит от VA и базового адреса модуля. Но как же определить VA по фаиловому смещению? |
|
|
Дата: Авг 11, 2003 19:27:38 А, все - дошло :). В этом случае фаиловое смещение = RVA! Я в этом в SoftIce'е убедился. Спасибо всем за ответы. |
|
|
Дата: Авг 11, 2003 19:28:07 |
|
|
Дата: Авг 13, 2003 14:38:24 Ребят, я не стал создавать новую тему, потому что часть ситуации объяснил здесь, поэтому не обессудьте(я правильно написал? :)). Проблема в следующем - я сделал код, который записывает куда я хотел(см. первое сообщение) jmp EntryPoint. Тобишь ничего не делает, только передает управление на точку входа. Только вот в чем проблема - инфицированная программа рушиться. Когда я ее под SI посмотрел, оказалось, что выполняется мой код(E900100000), НО в SI управление после этой команды передается в 00401045, а не в 004010000(база+смещение). Может я чего не знаю? Код тут не столь важен, но если потребуется, то покажу и код. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.065 |