В начале ovod спрашивал про маленький elf. У меня есть на 88 байт, особо не оптимизировал, уверен, что можно еще десяток байтов выкинуть.
Нашел в залежах у себя на диске, авторство не мое. Есть несколько неиспользуемых полей (например с 8 по 15 байты) в которые можно что-нибудь засунуть. 00: 7F 45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00 10: 02 00 03 00 01 00 00 00 4C 80 04 08 2C 00 00 00 20: 00 00 00 00 00 00 00 00 34 00 20 00 01 00 00 00 30: 00 00 00 00 00 80 04 08 00 80 04 08 58 00 00 00 40: 58 00 00 00 05 00 00 00 00 10 00 00 6A 24 58 CD 50: 80 89 C3 6A 01 58 CD 80 комментировать тут особо нечего, эта штука вылолняет sync, что полезно при отладке драйверов ядра 8-) вообще загрузка elf - это особая статья, особенно загрузка через интерпретатор ld-linux.so.2 (с его помощью можно сильно извратить процесс загрузки), нормальных доков по этой теме я не встречал, кроме, разве что, сорцов glibc и статеек Red Plait'а. Загрузчик же, который в ядре сидит - примитивен (см. fs/binfmt_elf.c), здесь такого "разнообразия" как в PE нет, imho.
Вот из статьи на хакере(153 байта) я сделал чтоб титле был "user32" а текст "MessageBoxA" только работает под ХР т.к "user32" без ".dll" 2019557143__pe_153_bytes.zip
Под XP есть и в 152 байта, иходник написал p0s0l с vingrad.ru (bogrus ссылку выше давал) Код (Text): ImageBase equ 400000h SectionRVA equ 1000h PE_offset equ PE_Signature - ImageDosHeader ImageOptionalHeaderSize equ ImageSectionHeader - ImageOptionalHeader HeaderSize equ HeadersEnd - ImageDosHeader SectionSize equ SectionEnd - ImageDosHeader - 1 ImportVA equ ImportBegin - ImageBase ImportSize equ ImportEnd - ImportBegin SectionStart equ ImageBase DllNameRVA equ DllName - SectionStart FirstThunkRVA equ FirstThunk - SectionStart FuncNameRVA equ FuncName - SectionStart EntryRVA equ CodeStart - SectionStart org ImageBase + SectionRVA use32 ImageDosHeader: db 'MZ' CodeStart: mov ecx, String ;5b push 0 ;2b push ecx ;1b jmp Code2 ; rb 10 PE_Signature: dd 'PE' dw 014Ch ; cpu type FuncName: dw 1 ; number of sections db 'MessageBoxA', 0 dw ImageOptionalHeaderSize dw 818Fh ; flags ImageOptionalHeader: dw 010Bh ; magic Code4: call dword [FirstThunk] ;6b ret ;1b String: db 'Hello!', 0 dd EntryRVA ; entry point RVA dd 0 ; *base of code dd PE_offset ; *base of data dd ImageBase ; image base ;ImportBegin: dd 1000h ; object align dd 200h ; file align FirstThunk: dd FuncNameRVA ; Func RVA dd 0 dw 4 ; subsys major DllName: db 'USER32' dd 2000h ; image size dd HeaderSize ImageSectionHeader: Code2: push ecx ;1b jmp Code3 ;2b db 0 dw 2 ; subsystem rb 2 dd 0 dd SectionRVA dd SectionSize ; physical size dd 1 ; physical offset Code3: push 0 ;2b jmp Code4 ;2b dd 2 ; number of RVA and sizes ImportBegin: rb 4 dd 0E0000060h ; characteristics dd ImportVA ; import dir VA dd DllNameRVA ; Dll name RVA dd FirstThunkRVA ; FirstThunk RVA ImageOptionalHeader_end: HeadersEnd: SectionEnd: