Как определить является ли файл исполняемым?
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Согласен. Но что топик-стартеру вообще надо было?
Исполяемые - это всё, что с кодом, который можно запустить или непосредаственно, или от имени другого процесса. Так что библиотеки (но только dll) - исполняемые, а баты - нет, так как в них вообще нет кода, а есть только инструкции операционки. Баты - это скорее сценарии. Так что .exe, .com и .dll, но ничего другого.BBB писал(а):Тогда уже еще *.bat, *.cmd
А *.DLL относить к исполняемым?
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
А как же SYS, VXD?
It's a long way to the top if you wanna rock'n'roll
Это вообще вайлы конвигурации. Ищи те, что имеют код. И научись отличать исполняемые файлы от запускаемых. Запускаемым может быть и вордовый текст, если расширение .doc ассоцировано с редактором. А исполняемые исполняются не другой программой, а процессором. .dll исполняется процессором, хотя непосредственно и не запускается. .com и .exe исполняются процессором и запускаются непосредственно. Всё остально исполняется программами. Если же иметь в виду программны файлы, то это всё, что содержит программы и их фрагменты. Тогда баты, скрипты, файлы с макросами и тому подобные файлы тоже программные. Но документы только с содержанием, но без поведения приложений всётаки не являются программными файлами. К программным же следует отнести и файлы с исходными текстами программ, так что, список расширений растёт до полной необозримости. С исполняемыми проще. В принципе библиотечные файлы можно и не относить к исполняемым на том основании, что они не являются запускаемыми (не могут быть запущены с пользовательского интерфейса операционной системы). Но .com и .exe - всё равно исполняемые. .lib тоже библиотечные, следовательно программные, но не исполняемые, так как для запуска должны внедряться в другие файлы на этапе их (эти других файлов) разработки.somewhere писал(а):А как же SYS, VXD?
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ну хз, загляни на досуге в %windir%\system32\drivers, на 95% файлы SYS по сути те же DLL и хедер у них Portable Executable, загружаются точно также через LoadLibrary ядром ОС. Аналогично могут быть загружены прикладной программой. Тогда давайте уж и DLL тоже к "файлам конфигурации" отнесем, потому как способ загрузки SYS и DLL идентичен. VXD - тоже самое." писал(а):Это вообще вайлы конвигурации.
It's a long way to the top if you wanna rock'n'roll
А в DOSе? Учти, что эти оси односторонне совместимы и попробуй растолковать, как в таком случае винда отличит свои сисы от старых. А то что в LoadLibrarry можно пихать что попало и всё будет работать при условии, что внутри файл всётаки динамический и библиотечный, так это давно известно. Если винде явно указать, чем грузить файл, то она вообще забывает про их типы. Попробуй на досуге переименовать какую-нибудь библиотеку в .txt, а потом учесть переименование в своей приладе." писал(а):%Ну хз, загляни на досуге в %windir%\system32\drivers, на 95% файлы SYS по сути те же DLL
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Вспомил еще, что скрин-сейверы имееют расширение, если правильно помню, *.SCR, но по содержимому это EXE-файл.
Тогда и .src - исполняемые." писал(а):Вспомил еще, что скрин-сейверы имееют расширение, если правильно помню, *.SCR, но по содержимому это EXE-файл.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Нужно было ровно то, на что я сам позже и ответил. Материал по теме полезный можно посмотреть здесь:_SG писал(а):Согласен. Но что топик-стартеру вообще надо было?
http://www.insidepro.com/kk/019/019r.shtml
http://www.insidepro.com/kk/018/018r.shtml
Алгоритм следующий:
1. Считываем DOS-заголовок, проверяем наличие MZ-сигнатуры.
2. Смещаемся до PE-заголовка, считываем и проверяем наличие соответствующей сигнатуры. Не забывая проверять, чтобы смещение не вылезло за пределы файла.