PE и все что связано с его структурой.

Тема в разделе "WASM.ASSEMBLER", создана пользователем Morskoivolk, 5 май 2007.

  1. Morskoivolk

    Morskoivolk New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2007
    Сообщения:
    85
    Если вы хорошо разбираетесь в структуре PE-файла, то помогите.

    В общем имеется программа с DOS-STUBOM размером 4 байта, который прилинковывается к проге. Далее идет PE-заголовок....начинаясь 45,50,00,00 и т.д.
    Но в этом PE-заголовке мне нафиг не нужны все атрибуты.....практически половина: Time/Date Stamp, Pointer to Simbol table, Number of Simbols, Major Linker Version, Minor Linker Version.....и многое многое другое.
    Такие секции как секция ресурсов, экспорт, данные и нек другие отсутсвуют вообще.
    Скажите как можно удалить лишние атрибуты PE-заголовка (про таблицу секций я пока речи не веду), которые перечислены выше? и в какой проге это можно сделать?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А в чем вопрос то состоит? :)
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    никак.
     
  4. Morskoivolk

    Morskoivolk New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2007
    Сообщения:
    85
    почему никак? Т.е. загрузчику PE-файлов нужны все эти атрибуты и без них он не может жить?
    вот ссылка там где PE уменьшают до 97 байт http://www.phreedom.org/solar/code/tinype/
    Все еще невозможно???
     
  5. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    А кто сказал, что они там для тебя? :)
     
  6. Morskoivolk

    Morskoivolk New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2007
    Сообщения:
    85
    люди, я прошу реально помочь, тем кто может это сделать, а не флудить в теме.
    Может и не для меня, только пусть они будут у тех , кому нужны, а мне они нафиг нужны.


    Можно по теме????
     
  7. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    можно обнулить, удалить нет
     
  8. Morskoivolk

    Morskoivolk New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2007
    Сообщения:
    85
    понятно, значит только обнуление подходит?
    но размер тот же останется получается.....хреново.
    Просто в ссылке, которую я давал выше, там PE руками собран, и без этих секций. Т.е. их там нету вообще. просто там используется nasm, а я знать не знаю как работать в nacm, потому что сижу на МАСМ.
    Там хитро сделано, что загрузчику хорошо, когда он грузит эти файлы.
    Может кто нибудь подкинет идею, как такое перелапатить на МАСМ?
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    да по пружнему ответ тот же - никак.
     
  10. Morskoivolk

    Morskoivolk New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2007
    Сообщения:
    85
    n0name
    Объясните тогда почему?
     
  11. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Руками - да, но все эти поля там остались. Просто используются по другому. Почитай, там же подробно описан процесс... (особенно смотри на комментарии к сорцам)
     
  12. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    потому что заголовок имеет фиксированный размер.
     
  13. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    тема неоднократно поднималась, и ей неверно интересовался любой здешний завсегдатель (поднимая при этом новый топ Х-)), то что там написано 133 в большинстве современных ос, не запустится, (к примеру xp x64 sp1, w2k3 sp1), гарантированно грузится только выровненный файл по 200h. А теперь прикинем сколько у нас получается по минимуму. Кста дос стаб это немного не то, самая первая структура IMAGE_DOS_HEADER, в которой на валидность проверяются только два первых байта и e_lfanew, по которому распологается сигнатура 'PE', это начало IMAGE_NT_HEADERS[64], в котором после сигнатуры идут две стуртуры IMAGE_FILE_HEADER, IMAGE_OPTIONAL_HEADER[64], первая имеет фиксированный размер, а вот размер второй указывается в первой) что там можно уменьшить? - массив IMAGE_DATA_DIRECTORY, его можно вообще удалить (но если мы так сделаем то мы лишимся стандартного импорта, и все апи прийдётся получать самому) короче в итоге: 4 байта (MZ..) + 18h (PE signature + Fileheader) + 6сh OPTIONAL_HEADER + (хотябы одна секция + 10h нулей за ней) 28h +10h + твой код = C0h + твой код тока самое обидное что нада размер файла выровнять по 200h (512 байт) :dntknw: так что ... мораль грузинский басни прост )
    а ваще для лучшего понимая действительности советую открыть winhex и набрайть файл ручками там ещё обязательное поле Major\Minor Linker version, а поля типа TimeDataStamp, BaseOfCode, BaseOfData, Checksum и много других не критически важных можно дзенски обнулять :)
    ЗЫ если в цифрах напутал меня не бить )
     
  14. Morskoivolk

    Morskoivolk New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2007
    Сообщения:
    85
    но какой резон тогда обнулять неиспользуемые секции, если на размер файла это никак не повлияет? тогда уже по мойму все равно, есть они там в обнуленном состоянии или нету вообще....
    Т.е. реально можно обрезать только DOS_Header получается, сократив его до 4 байт...
     
  15. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Morskoivolk
    http://www.wasm.ru/forum/viewtopic.php?pid=160056#p160056
    экспериментируйте, правда пример под fasm ;)
     
  16. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    DOSHeader имеет тоже фиксированный размер и сократить его ты не сможешь.
     
  17. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    n0name это конечно да :) но можно наложить IMAGE_NT_HEADERS на него, тем самым достигается его сокращение, а e_lfanew припадёт например на поле BaseOfDAta, никем не используемое
     
  18. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    В общем ответ один - перекрытие структур формата PE.
     
  19. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    rain
    угу, конечно, но размер то от этого не изменяется, поля все те же сохраняются.
     
  20. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    сокращение не достигается, упаси Боже думать о том, что ты меняешь размер этой структуры )))
    просто поля одной структуры одновременно являются и полями другой, таким образом размер суммы этих структур меньше суммы размеров каждой.