Собсно сабж. Просто 1 кб для программы, которая ничего не делает, это круто по-моему Неужели никак нельзя заставить бинарник похудеть ещё на 100-200 байт хотя бы ? Меня как бы больше не готовые решения интересуют, а сам принцип. Какой бы я exe-файл не открыл везде полно мест с нулями. Нельзя ли их как нить заюзать? Или может ещё какие-то способы есть. Если нету, то извините.
ну,убрать стаб,убрать нули между PE заголовком и первой секцией,позасовывать одни структуры PE заголовка в другие,т.е. например в DOS хидере тебе нужны только два поля первое и посленднее,тогда можно опциоанльный заголовок вместе с PE сигн. поместить в дос хидер,и чтоб не попортить дос хидер нужно так в него засунуть опц. заг. чтоб e_lfanew( так кажется ) попал на ненужные поля опц. заг. например на Minor/Major Linker Version( кажется подходили по смещению,хотя точно не помню ).
+Убрать неиспользуемые хвостовые IMAGE_DATA_DIRECTORIE's. Один может посмотреть, что делает LordPE при действии "Rebuild PE".
У меня получилось сделать 480байт не знаю может можно и меньше. Код (Text): #define WIN32_LEAN_AND_MEAN #pragma comment(linker,"/MERGE:.rdata=.text") #pragma comment(linker,"/MERGE:.data=.text") #pragma comment(linker,"/FILEALIGN:16 /SECTION:.text,EWRX /IGNORE:4078") #pragma comment(linker,"/ENTRY:X") void X(void) { //Йа Програмко } 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 ключевые моменты алигн и секции… накой оно тебе надо кстати ? )
MEPOX минимальный PE-файл 97 байт -- примеры Самый крошечный PE EXE и Выключалка для компа на 97 байт всё внутри заголовка, причем это не "программа, которая ничего не делает" а выключение компьютера и вывод MessageBox'a -- но это ручные сборки, а вот здесь уже более менее автоматизированная сборка
1nsidE Так кстати FSG делает, если не ошибаюсь. Вот у него можете поучиться ужатию заголовка. Как уже правильно сказали, последнее что можно сделать - все секции завести в одну. А вообще эта тема - горячая. Я бы советовал собрать все подобные темы в одну, выбросить из них повторы и прикрепить к форуму Virology.
97 байт - у меня НЕ запустился на XP SP1 - учитывая, что там с импортом по ординалам вместо имен, такое решение никому не нужно и можно 97 байт забыть. Где-то от 130 байт реально работают, помню, что успешно запускал на нескольких различных системах. Кстати, "все в одной секции импорта" - дает забавный эффект при попытке открытия с OllyDbg - не происходит останова на точке входа (пример в аттаче - в чем прикол, пока объяснить не могу)
А никого не смущает, что обычный размер кластера на NTFS - 4К, и любой файл, который меньше этого размера, всё равно на диске занимает эти самые 4К ?
Ursus Угу. Глупости все это. Когда бинарник выходит за 32К, эти байты значения уже не имеют =) Но почему бы тем, кто хочет, и не поразвлекаться?
>97 байт - у меня НЕ запустился на XP SP1 А у меня работает. xp sp2. Киляет систему через несколько сек(он там что дисковые буфера скидывает ?) >А никого не смущает, что обычный размер кластера на NTFS - 4К Меня в данном случае совершенно не смущает
Ursus А обычный размер файловой записи NTFS – 1k. И если все сорта атрибутов (в т.ч. таймштампы, имена файла и поток данных) помещаются в этот 1k (т.е. все атрибуты "резидентны"), то и новые кластеры незачем выделять, ага. Но, похоже, это не важно, ибо людьми здесь, как видно, движет не желание сэкономить дисковое пространство
Естественно. В импорте номера функций из длл, вместо имен. Для XP SP2. В разных версиях номера меняются, поэтому на xp sp2 работает, а на остальных кукиш. ничего себе "та же оля"... А Х-Window и KDE - по сути те же Windows? Но я вообще-то о другом - оно и под Олли нормально открывается. Просто останова на точке входа не происходит - сразу мессажбокс.
[offtop] Кстати, спасибо за ImmDbg - посмотрел, та же оля )) навороченней, правда. А вопрос снят, ничего удивительного: Олли считает. что это SFX, а у меня стояло "SFX - trace real entry". Если бы не посмотрел на ImmDbg, продолжал бы терятся в догадках =)