Самый крошечный PE EXE

Тема в разделе "WASM.RESEARCH", создана пользователем overfault, 22 сен 2007.

  1. overfault

    overfault New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2005
    Сообщения:
    22
    Вот на досуге попробовал создать минимальный рабочий PE EXE файл. Затея по сути бесполезная, но забавная...
    При помощи пары хитрых извращений удолось создать файл размером всего 172 байта,
    содержащий всего одну инструкцию - 0xС3(ret). Все лишнее затерто нулями.
    Возможно разместить минимум 16 байт полезного кода.
    Меньше пока никак. попробуйте, может кому-то удасться.
    (COM/DOS_EXE/CAB_DROP и прочие форматы не предлагать ;)

    P.S. решил, что WASM.RESEARCH вполне подходящий раздел.
    Если тему перенесут WASM.HEAP я не обижусь ;)
     
  2. overfault

    overfault New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2005
    Сообщения:
    22
    упс... в поиск забыл глянуть
    как мне уже подсказали, тема была

    рекорд - 97 байт
    http://www.phreedom.org/solar/code/tinype/
     
  3. krava

    krava New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2005
    Сообщения:
    8
    Какой ужос =) Интересно она тож ниче тож сразу возращает?
     
  4. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Написал сегодня, минимальный MessageBox на 97 байт. Проверил на XP SP2 и XP HomeEdition. tiny97.exe настраивается на конкретную сборку через hiew -- у меня kernel.exe выдает адрес LoadLibraryA=7C801D77h и MessageBoxA=77D7050Bh
    поэтому по адресам
    Код (Text):
    1. 40001E: E8541D407C; call 7C801D77
    2. 400023: ...;<-7C401D54+400023=7C801D77
    3. ...
    4. 400030:E8D6049777; call 77D7050Bh
    5. 400035:...;<-779704D6+400035=77D7050Bh
     
  5. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Автоматизировал процесс создания TinyMessageBox, сорц и ехе в аттаче:)
     
  6. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Сегодня доделал программу, которая создает каркас оконного приложения размером в 265 байт. Работает под Win XP SP2. Сорц и ехе в аттаче. Думаю, что это не предел;)
     
  7. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Создаем каркас оконного приложения размером в 256 байт. Работает под Win XP SP2 и XP Home Edition. Сорц и ехе в аттаче.
     
  8. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Каркас оконного приложения - размер 241 байт. Работает под Win XP SP2 и XP Home Edition. Сорц и ехе в аттаче.
     
  9. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Каркас оконного приложения - размер 223 байта. Работает под Win XP SP2 и XP Home Edition. Сорц и ехе в аттаче.
     
  10. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Каркас оконного приложения - размер 218 байтов! Меньше не сжимаетцо:dntknw: Работает под Win XP SP2 и XP Home Edition. Сорц и ехе в аттаче.
     
  11. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Mikl__, очень интересно !
    А вы заметили, что Process Explorer (11.04) в TinyWin218.exe не находит строчки "user32" ?
     
  12. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    kero
    Наверное, дело в том, что Process Explorer не видит завершающего нуля и поэтому не воспринемает "user32" как строку. А вот почему по смещению 0xAC от 'PE'00 должен быть ноль? Иначе программа под Home Edition работает нормально, а под XP SP2 выдает "Ошибка при инициализации приложения (0xC0000005)" Может быть кто-то сможет ответить?
     
  13. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Mikl__
    а почему в аттаче exe весит 960?
     
  14. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    n0name
    Потому что это "родительский" файл, который определяет конкретные адреса LoadLibraryA, CreateWindowExA, DefWindowProcA, DispatchMessageA, GetMessageA, PostQuitMessage и RegisterClass и подставляет их значение в "дочерний" файл TinyWin218
     
  15. n0name

    n0name New Member

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

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Никогда не говори никогда! Каркас оконного приложения - размер 206 байтов! Работает под Win XP SP2 и XP Home Edition. Сорц и ехе в аттаче.
     
  17. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Садисты =)
     
  18. drmist

    drmist New Member

    Публикаций:
    0
    Регистрация:
    31 май 2005
    Сообщения:
    112
    Писать шеллкоды минимальной длины имхо полезнее. Проги размером меньше килобайта все равно только в XP и может иногда в Win2k пашут.

    Кто-нибудь может уложить шеллкод, показывающий MessageBox "Hellow, World!" менее, чем в 393 байта? У меня так, оптимизировать особо не пытался. Без прерываний и sysenter в коде и без обрезаных проверок, короче чтоб все по правилам :)
     
  19. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    когда то в васм рассылке конкурс на такой шеллкод был. только не hello world, а просто MessageBox. жаль не сохранилось ;(
    я помню почти все время мои варианты отсеивали, то им использование ординалов не нравилось, то sysenter :P
    nobody я помню там тоже участвовал.
     
  20. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907