проблемка

Тема в разделе "WASM.BEGINNERS", создана пользователем La_plaza, 1 окт 2008.

  1. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    вот короче проблема:
    Код (Text):
    1. mov eax,dword [ebp-0x28] ; указатель на .reloc допустим
    2. mov ebx,[eax+IMAGE_SECTION_HEADER.PointerToRawData]
    3. mov edx,[eax+IMAGE_SECTION_HEADER.SizeOfRawData
    4. add eax,dword [ebp-2C] ; [ebp-0x2C]=MZ
    5. add eax,edx
    собственно что я получил ?
    я спустился в конец секции

    далее я записываю в конец секции свой код, потом я иду в .CODE и нахожу 5 byte, перезаписываю первый байт на E8, а вот далее начинается...

    1)когда я высчитываю адресс следующим путем:
    адресс куда нужно прыгнуть минус (адресс 5 байт+5), то при просмотре инфицированного файла получается следующее: я не допрыгиваю т.е мой код в расширенной секции лежит много вперед, нежели я прыгаю. вотъ

    вопрос: как правильно прыгнуть в другую секцию из .CODE к примеру ?
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    La_plaza
    Непонятно.
    Наверно EntryPoint ?
    Видимо это смещение в инструкции Call near ?
    Куда переход исполняется ?

    Если между секциями то необходимо пересчитать размер секций в памяти.
    В файле выравнивание секций на FileAlignment, а в памяти на SectionAlignment.
     
  3. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    гм, посмотрел в код, там получается что я сначала все позаписывал, а потом уже делал выравнивание
     
  4. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    как думаешь, это из-за этого у меня не получается ?
    т.е сначала я должен записать код в секцию, потом я должен все повыравнивать ,а уж только потом я уже начинаю высчитывать смещение прыжка. Так получается ?
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Сначала посчитать нужно, потом писать.
    Код не вижу.
     
  6. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    ха, ну для того, чтобы выровнять секцию в нее нужно вначале записать, а потом просчитывать прыжок. Верно ли я считаю ?
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Выравнит страницу в памяти загрузчик.
    Например, если запись по ModuleEntryPoint, то смещение можно посчитать так: (RVA_Handler - RVA_EntryPoint - 5)
     
  8. oxcc

    oxcc New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2008
    Сообщения:
    51
    запусти под олькой и посчитай %)
     
  9. La_plaza

    La_plaza New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    95
    ну так же и считал