Ускоритель Marketscore - сервис, практически вдвое увеличивающий в Интернете скорость работы вашего браузера. В среднем, скорость загрузки вэбстраниц с графикой и текстом ускоряется на 75%. 
Особенно заметен выигрыш, если у вас медленный модем или вы выходите в Интернет на маленьких скоростях (до 56 Кб/сек).
Подробнее...

реклама у нас

***

Вездесущий EXE

Руслан РИЗВАНОВ

И вправду, игры, серьезные (и не очень) программы, так сказать, используют этот формат и без него обойтись не могут. Попробуйте-ка запустить программу под Windows, у которой нет EXE-файла — нонсенс. Это во многих случаях, по сути дела, может означать, что нет и самой программы. Сколько уже говорилось о многочисленным графических, звуковых форматах, а о том, в каком формате содержатся данные в файле с расширением .exe, — ни слова. И поэтому просто так, не корысти ради, я полез в Сеть, чтобы узнать побольше о том, с чем каждый день приходится работать. И теперь хочу поделиться полученными сведениями с Вами, многоуважаемые читатели. Честно скажу, я не системный программист и не писатель вирусов, чтобы знать все о содержимом этих файлов, поэтому в моем материале вы не найдете детальной спецификации EXE (PE), а лишь только описание темы с точки зрения пользователя, максимум — прикладного программиста.

Несмотря на то, что файлы имеют расширение .exe, данные, хранящиеся в них, могут быть представлены в структуре различных форматов. Один из таких форматов называется PE Portable Executable (переносимый исполняемый). Изначально он появился в ОС Windows NT, а затем перекочевал и в Windows 9x. Выполнен он в соответствии со спецификацией COFF (общего формата объектных файлов), распространенной в Unix-системах, но сохранил некоторую совместимость с форматом ДОС (об этом далее). 
Рассмотрим по порядку ее элементы. Первым идет, как ни странно, заголовок (MZ) MS-DOS. Он предназначен для определения совместимости с используемой ОС. Вы, может быть, замечали, что при запуске exe-файла в формате PE из ДОС выводится текст: «This programm must be run under Win32». Это результат работы так называемой stub-программы. Она представляет собой программу реального времени, совместимую с ДОС и вносимую в EXE(PE) при компиляции (вернее, при линковке). Если б ее не было, ДОС пытался бы прочесть данные, что могло привести к ошибке или сбою. При запуске же под Windows stub-программа пропускается. Далее в структуре следует заголовок PE. Он определяет начало PE-файла и содержит в себе общую информацию о нем (наличие отладочной информации, тип машины, на которой было создано приложение, и пр.). После этого в PE идут заголовки сегментов и собственно сегменты. Именно в сегментах и хранится все содержимое файла. Вы можете увидеть названия некоторых сегментов, открыв EXE(PE) в текстовом вьювере (в FAR, VC). Приложения могут иметь 9 сегментов: .text (сегмент исполнимого кода); .bss (содержит данные приложения, в том числе и переменные); .rdata (информация только для чтения — константы и пр.); .data (содержит глобальные переменные); .rsrc (сегмент ресурсов — объектов (рисунков, строк, курсоров, иконок и пр.), внедряемых при компиляции в exe-файл и используемых программой из этого файла); .edata (сегмент экспортируемых данных); .idata (сегмент импортируемых данных); и .debug (сегмент отладочной информации, которая может храниться и в отдельных файлах). Думаю, из названий сегментов ясно, что и для чего. Более детальное описание этих сегментов займет много места и будет интересно разве что системным программистам и вирусописателям. Для последних, кстати, в Интернете даже существуют специальные описания PE и возможностей его заражения, одна из которых состоит в том, что тело вируса частями распределяется по свободному пространству сегментов, при запуске оно собирается воедино программой, находящейся, например, в месте stub, и передает управление основной программе exe-файла. Это, конечно, общеизвестная информация. Но надеюсь, вы не займетесь написанием вирусов. А то известны такие «герои» — нахватались кой чего в вузах, и давай валять всякую гадость — с точки зрения программирования полнейший примитив, только людям нервы треплет… Теперь, после небольшого рассказа о формате PE и о содержании EXE-файлов в этом формате, логично перейти к рассмотрению способов коррекции и трансформации этого самого содержания.

Редакторы ресурсов

Как уже говорилось выше, в EXE-файле (а также и в DLL) могут содержаться ресурсы. Обычно в профессиональных коммерческих проектах все данные (текстовые сообщения, курсоры, диалоговые окна и пр.), используемые в программе, хранятся именно в них. Это позволяет, к примеру, не прибегая к перекомпиляции исходного текста, создавать версии программы на различных языках. Достаточно лишь перевести тексты и сообщения в ресурсах — и все. Это в состоянии сделать даже человек, далекий от программирования. Для такой коррекции используются редакторы ресурсов. В Интернете развелось много программ подобного рода. Предлагаю вашему вниманию одну из них. Зовут ее Resource Hacker (работает под 9х, про 2000/ХР ничего не знаю). Обитает по адресу http://rpi.net.au/~ajohnson/resourcehacker и в других не столь отдаленных местах Сети. Это один из наиболее простых в использовании и достаточно функциональных редакторов ресурсов. И сразу, без лишних слов, давайте перейдем к делу — издевательству над сообщениями горячо любимой ОС Windows. Предлагаю изменить текст диалогового окна, возникающего (иначе это не назовешь :-)) при удалении группы файлов. Он, как и все окно, находится в файле shell32.dll (Windows/System). Предупреждаю: за возможные последствия автор статьи ответственности не несет! Так вот, загрузите его в редактор ресурсов, перейдите в секцию Dialog, а в ней, в разделе 1049 (по крайней мере у меня он находится там), щелкните по единственному значку — появится то самое диалоговое окошко. Далее щелкните по его элементу (тексту или кнопке), и в редакторе ресурсов в секции, содержащей параметры и текст окна, соответствующая этому элементу строчка выделится красной звездочкой (слева). Измените текст на свой, нажмите кнопку Compile Script (чтобы увидеть внесенные изменения) и сохраните все в файл с таким же именем (shell32.dll), но в другом месте. Теперь необходимо скопировать этот файл в директорию Windows/System и заменить тот, что там уже находится. Что, кричит система, понимаешь ли, сопротивляется? Но ничего — мы ее сейчас через ДОС… Постарайтесь с помощью загрузочного диска или еще как-нибудь перезагрузиться в ДОС — там все скопируется и заменится без проблем. Теперь перезагрузитесь в Windows и попробуйте удалить группу файлов (Shift+Del)… 

Сжатие EXE

Еще с того же ДОС'а известны программы, сжимающие данные внутри EXE-файла и при этом сохраняющие его способность запускаться и исполняться. Под Windows такие программы тоже есть. Называются UPX (Ultimate Packers for eXecutables). Они позволяют сжимать данные внутри EXE (различных форматов, в т.ч. и PE) и DLL . Это очень хорошо, например, при создании Autorun'ов к дискам (быстрее ведь загружается и в то же время занимает меньше места) и в других целях, где обычный архиватор не подходит. Кстати, может быть, вы видели потрясающие демо-программы размером до 64 Кб, но притом вытворяющие чудеса при помощи OpenGL или Direct3d и сопровождающие это все музыкой (посмотрите демку SQWISH — на http://www.intercon.ru/~and). Так вот, они тоже сжаты UPX'ом. Можете поискать этого рода программы в Интернете по слову «UPX» или на сайте http://www.torry.ru (поиск по слову «UPX»). Мне приглянулась программка, расположенная по адресу http://upx.sourceforge.net. Она работает с командной строки, поддерживает очень большое количество форматов EXE, относительно долго сжимает, зато сверхбыстро распаковывает (что и требуется).

Источник: http://www.mycomp.com.ua/ 

 


Copyright © "Internet Zone"info@izcity.com 
Копирование и использование данных материалов разрешается только в случае указания на журнал "Internet Zone", как на источник получения информации. При этом во всех ссылках обязательно явное указание адреса вэб-сайта http://www.izcity.com/.
При наличии у копируемого материала авторов и источника информации - их также нужно указывать, наряду со ссылкой на нас. Подробнее условия использования материалов смотрите здесь.