Добавить секцию в РЕ

Тема в разделе "WASM.BEGINNERS", создана пользователем maestro-ant, 28 янв 2007.

  1. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    Добавляю секцию в ехе. В некоторых файлах после добавления затирается кусок первой секции. Как правильно это обойти? ..подвигать все секции и править IMAGE_SECTION_TABLE?
     
  2. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    maestro-ant либо двигать все секции на диске, либо укоротить за счёт чего-нибудь заголовок(к примеру подвинуть пе заголовок к 40Н, или переместить заголовки секций на таблицу дерикторий), либо не трогать файл.
     
  3. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    куда добавляешь? в начало/конец/середину?
    возможно, здесь ты найдешь ответ на вопрос:
    http://kpnc.opennet.ru/virii.win32.ex.zip
    http://kpnc.opennet.ru/virii.win32.ex.2.zip
     
  4. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    maestro-ant

    Секцию куда добавляешь? В конец?

    Скорее всего, именно так.

    Выход уже правильно указал asd: или все двигаешь (с пересчетом адресов), либо уменьшаешь заголовок. Если выбираешь последнее решение, то:

    1. Иправить лучше положение начала IMAGE_NT_HEADERS32 (подвинуть ближе к заголовку DOS.
    2. После этого в заголовке DOS исправь поле e_lfanew.

    Все. Это в том случае, если есть куда двигать. Если нет - либо забудь и не заражай такой файл, либо двигай все ))) Но последнее- гемор. (
    .
     
  5. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    Добавляю в конец файла. Так как я пишу криптор, то нужно сделать, чтоб добавить можно было в любой файл. Раньше с этим дела не имел.. так что всётаки проще сдвинуть все или укорачивать заголовок?
    Если двигать, то как бороться с адресацией?
     
  6. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    Проще сдвинуть заголовок, если такая возможность есть. Однако, что-то мне подсказывает (проведи ряд опытов, проверь сам) что такая возможность будет не всегда.

    Поэтому в данном случае универсальный выход - полностью пересобирать файл. Я так делал, когда писал свой криптор )))) С адресацией бороться не нужно, надо все адреса проставить заново ))) Если надо подсказать как - обращайся.
     
  7. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    maestro-ant
    Ты пишешь криптор,значется так!!!
    1. Делай бекап оригенала
    2. Открываешь по записи и перемещаешь от того адреса где новая структура секции, на ее размер.
    зы: если не ошибаюсь, то одна стуктура должна быть пустая, то и это учти

    Можешь переименовать этот файл,добавив к имени .bak, создать новый с именем оригенала без .bak. и уже там извращаться как хочешь, т.е. копирование нужных, добавление новых, снова копирование(кода, импорта, экспорта и т.д) а уже потом правка заголовков.
     
  8. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    maestro-ant
    какой-то у тебя странный криптор...
    посмотри как exe-пакеры работают.
    короче, они восстанавливают образ оригинального PE в памяти.
     
  9. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    В догонку: если уж пишешь криптор, размер секций на диске после шифрования 100% изменится. Так что все равно править таблицу секций. Лучше пересобрать.

    Не вижу аргументов против.
     
  10. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    maestro-ant
    Забыл сказать, ты можешь поправить заголовок УЖЕ существующей секции. Зачем же создавать новую? Секция всего лишь делит файл на части, а логики ни какой не несет!!! Ей глубоко фиолетово, что в секции , импорт, экспорт или там висит код вируса или же шифрованные данне? Ей это по барабану!!!
     
  11. Headerx

    Headerx Moore

    Публикаций:
    0
    Регистрация:
    2 янв 2007
    Сообщения:
    64
    Адрес:
    Atyrau
    а как же смещение вы хоть о нем не забыли?
     
  12. Headerx

    Headerx Moore

    Публикаций:
    0
    Регистрация:
    2 янв 2007
    Сообщения:
    64
    Адрес:
    Atyrau
    а как же смещение вы хоть о нем не забыли?
     
  13. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    ..так так.. насколько я понимаю подходит только один вариант..
    Для этого надо передвинуть секции на 40 байт(размер заголовка секции) и поправить заголовок каждой секции. а непотеряет ли тогда этот файл работоспособность? адресация не изменится? если да то как выйти из этого положения?
     
  14. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    maestro-ant
    Нет, адресация у тебя не изменится!!! Так как в файле физические адреса и при выполнении будут виртуальные !
     
  15. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    Заголовок в памяти всеравно выравнивается до 1000h так что можеш увеличивать его размер до 1000h и работоспособность не потеряется.
     
  16. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    Всем спасибо!
     
  17. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    PaCHER
    <Заголовок в памяти всеравно выравнивается до 1000h так что можеш увеличивать его размер до 1000h и работоспособность не потеряется.>

    Как сомнительно сие утверждение. Посмотри w2ksp4 ntoskrnl.exe к примеру. И это стоит учитывать всё-таки.
     
  18. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    Ппц тут насоветовали :))
    1. Надо проверить, а не лежат какие-нить директории в месте куда ты пишешь заголовок. Обычно туда любят писать Bound Import, который в принципе можно прибить, ну а если делать по уму то перетащить в свою секцию. Если на этом месте нет директорий, то переходим к пункту 2.
    2. Смотрим SizeOfHeader. Если наш заголовок ложится в пределах SizeOfHeader, то все можно писать. Если SizeOfHeader меньше, то переходим к п.3.
    3. Смотрим RVA первой секции. Если оно больше чем наш новый SizeOfHeader (он будет равен концу заголовка новой секции), то нам повезло и можно вклинить наш заголовок между старым заголовком и первой секцией - для этого нужно физически "раздвинуть" файл в этом месте и вписать туда заголовок новой секции. При этом не забываем учесть это сдвиг в физических смещениях всех секций.
     
  19. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    Да, стоит :) но это не совсем стандартный файл