VirtualSize & SizeOfRawData

Тема в разделе "WASM.WIN32", создана пользователем vinnie_pooh, 23 сен 2004.

  1. vinnie_pooh

    vinnie_pooh New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    98
    Привет!

    У меня вопрос ко всем, кто разбирается в тонкостаях PE.

    В документации по PE говорится, что SizeOfRawData секции должно быть меньше, чем VirtualSize. Между тем мне не попадалось еще ни одного ЕХЕ, где бы это правило соблюдалось. Например, вот секции Calc.exe:
    Код (Text):
    1.  
    2. Name    VOffset     VSize       ROffset     RSize       Flags
    3. .text   00001000    [b]000126B0[/b] 00000400    [b]00012800[/b] 60000020
    4. .data   00014000    0000101C    00012C00    00000A00    C0000040
    5. .rsrc   00016000    [b]00008A70[/b] 00013600    [b]00008C00[/b] 40000040
    6.  


    Более того, я недавно писал вирус, который увеличивал последнюю секцию и выставлял новое значение VirtualSize "по правилам" - модифицированная прога отказывалась загружаться.

    Просветите, пожалуйста, лесного жителя, где же правда? Или где меня глючит?
     
  2. Funbit

    Funbit Member

    Публикаций:
    0
    Регистрация:
    13 апр 2003
    Сообщения:
    92
    Адрес:
    Russia
    а где это написано?



    и что же получится, если, у последней секции данные будут находиться в конце файла, а VSize будет больше RSize ? что будет грузиться в память ? за пределами RSize файл же кончится :)
     
  3. Foamplast

    Foamplast New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2003
    Сообщения:
    80
    Адрес:
    Russia
    "за пределами RSize файл же кончится" - а ФАСМ так неинициализированные данные определяет, чтобы новую секцию не писать. В память грузятся нули.


    Код (Text):
    1. .data
    2.  
    3. x dd size_of_initialized_data
    4.  
    5. ;-------- Size Of Raw Data
    6.  
    7. y rd size_of_uninitialized_data
    8.  
    9. ;------- Virtual Size
     
  4. vinnie_pooh

    vinnie_pooh New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    98
    Funbit



    В книге Пирогова Assembler для Windows, еще где-то, не помню.



    Все, вопрос снимается, всем спасибо, я нашел удовлетворительный ответ в "Путеводителе по написанию вирусов под Win32: 3. Заголовок PE". Правда, он противоречит источникам, о которых я говорил выше:

    В EXE VirtualSize содержит реальный размер кода или данных. A SizeOfRawData округляется, потому и больше.