Как бы урезать место, отжираемое PE форматом.

Тема в разделе "WASM.BEGINNERS", создана пользователем MEPOX, 2 сен 2009.

  1. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Собсно сабж. Просто 1 кб для программы, которая ничего не делает, это круто по-моему :)
    Неужели никак нельзя заставить бинарник похудеть ещё на 100-200 байт хотя бы ?
    Меня как бы больше не готовые решения интересуют, а сам принцип. Какой бы я exe-файл не открыл везде полно мест с нулями. Нельзя ли их как нить заюзать? Или может ещё какие-то способы есть. Если нету, то извините.
     
  2. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    При компиляции файла выстави минимальное выравнивание.
     
  3. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    ну,убрать стаб,убрать нули между PE заголовком и первой секцией,позасовывать одни структуры PE заголовка в другие,т.е. например в DOS хидере тебе нужны только два поля первое и посленднее,тогда можно опциоанльный заголовок вместе с PE сигн. поместить в дос хидер,и чтоб не попортить дос хидер нужно так в него засунуть опц. заг. чтоб e_lfanew( так кажется ) попал на ненужные поля опц. заг. например на Minor/Major Linker Version( кажется подходили по смещению,хотя точно не помню ).
     
  4. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    +Убрать неиспользуемые хвостовые IMAGE_DATA_DIRECTORIE's. Один может посмотреть, что делает LordPE при действии "Rebuild PE".
     
  5. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Flint_ta это уже знаю.
    1nsidESol_Ksacap сейчас пойду разбираться что это такое и как это делать :)
     
  6. Sekator

    Sekator New Member

    Публикаций:
    0
    Регистрация:
    30 авг 2009
    Сообщения:
    7
    У меня получилось сделать 480байт не знаю может можно и меньше.


    Код (Text):
    1. #define WIN32_LEAN_AND_MEAN
    2.  
    3. #pragma comment(linker,"/MERGE:.rdata=.text")
    4. #pragma comment(linker,"/MERGE:.data=.text")
    5. #pragma comment(linker,"/FILEALIGN:16 /SECTION:.text,EWRX /IGNORE:4078")
    6.  
    7.  
    8. #pragma comment(linker,"/ENTRY:X")
    9.  
    10.  
    11. void X(void) {
    12.  
    13.         //Йа Програмко
    14.  
    15. }
    cl /O1 /Os /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /MD /nologo /c minic.cpp
    link /OUT:"minic.exe" /INCREMENTAL:NO /NOLOGO /NODEFAULTLIB /SUBSYSTEM:WINDOWS /OPT:REF /OPT:NOWIN98 /OPT:ICF /MACHINE:X86 minic.obj

    Работает на VC6 ключевые моменты алигн и секции… накой оно тебе надо кстати ? )
     
  7. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    strip, для тех кто в unix-е.
     
  8. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    MEPOX
    минимальный PE-файл 97 байт -- примеры Самый крошечный PE EXE и Выключалка для компа на 97 байт всё внутри заголовка, причем это не "программа, которая ничего не делает" а выключение компьютера и вывод MessageBox'a -- но это ручные сборки, а вот здесь уже более менее автоматизированная сборка
     
  9. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    1nsidE
    Так кстати FSG делает, если не ошибаюсь. Вот у него можете поучиться ужатию заголовка.
    Как уже правильно сказали, последнее что можно сделать - все секции завести в одну.
    А вообще эта тема - горячая. Я бы советовал собрать все подобные темы в одну, выбросить из них повторы и прикрепить к форуму Virology.
     
  10. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    97 байт - у меня НЕ запустился на XP SP1 - учитывая, что там с импортом по ординалам вместо имен, такое решение никому не нужно и можно 97 байт забыть. Где-то от 130 байт реально работают, помню, что успешно запускал на нескольких различных системах.

    Кстати, "все в одной секции импорта" - дает забавный эффект при попытке открытия с OllyDbg - не происходит останова на точке входа ;) (пример в аттаче - в чем прикол, пока объяснить не могу)
     
  11. Ursus

    Ursus Member

    Публикаций:
    0
    Регистрация:
    15 мар 2006
    Сообщения:
    238
    Адрес:
    Russia
    А никого не смущает, что обычный размер кластера на NTFS - 4К, и любой файл, который меньше этого размера, всё равно на диске занимает эти самые 4К ?
     
  12. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Ursus
    Угу. Глупости все это. Когда бинарник выходит за 32К, эти байты значения уже не имеют =) Но почему бы тем, кто хочет, и не поразвлекаться?
     
  13. _Sl4yer

    _Sl4yer New Member

    Публикаций:
    0
    Регистрация:
    2 мар 2009
    Сообщения:
    55
    ммм... у меня в ImmDbg все нормально открылось. По -сути та же оля. Или же вы второй открываете?
     
  14. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    >97 байт - у меня НЕ запустился на XP SP1
    А у меня работает. xp sp2. Киляет систему через несколько сек(он там что дисковые буфера скидывает ?)

    >А никого не смущает, что обычный размер кластера на NTFS - 4К
    Меня в данном случае совершенно не смущает :)
     
  15. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Ursus
    А обычный размер файловой записи NTFS – 1k. И если все сорта атрибутов (в т.ч. таймштампы, имена файла и поток данных) помещаются в этот 1k (т.е. все атрибуты "резидентны"), то и новые кластеры незачем выделять, ага. Но, похоже, это не важно, ибо людьми здесь, как видно, движет не желание сэкономить дисковое пространство :)
     
  16. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Естественно. В импорте номера функций из длл, вместо имен. Для XP SP2. В разных версиях номера меняются, поэтому на xp sp2 работает, а на остальных кукиш.

    ничего себе "та же оля"... А Х-Window и KDE - по сути те же Windows?
    Но я вообще-то о другом - оно и под Олли нормально открывается. Просто останова на точке входа не происходит - сразу мессажбокс.
     
  17. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    [offtop]
    Кстати, спасибо за ImmDbg - посмотрел, та же оля :))) навороченней, правда.

    А вопрос снят, ничего удивительного: Олли считает. что это SFX, а у меня стояло "SFX - trace real entry". Если бы не посмотрел на ImmDbg, продолжал бы терятся в догадках =)
     
  18. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    а чем так хорош этот ваш ImmDbg, кроме фич для поиска уязвимостей?