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

 WASM Phorum —› WASM.VIROLOGY —› RVA

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

R4DX
Это не VA зависит от RVA, а VA от RVA :)))
http://www.wasm.ru/article.php?article=packlast01


Дата: Авг 13, 2003 14:38:24

Ребят, я не стал создавать новую тему, потому что часть ситуации объяснил здесь, поэтому не обессудьте(я правильно написал? :)).
Проблема в следующем - я сделал код, который записывает куда я хотел(см. первое сообщение) jmp EntryPoint. Тобишь ничего не делает, только передает управление на точку входа. Только вот в чем проблема - инфицированная программа рушиться. Когда я ее под SI посмотрел, оказалось, что выполняется мой код(E900100000), НО в SI управление после этой команды передается в 00401045, а не в 004010000(база+смещение). Может я чего не знаю? Код тут не столь важен, но если потребуется, то покажу и код.


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