Форум программистов, компьютерный форум, киберфорум
Программирование драйверов
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 26.08.2013
Сообщений: 161

Определить, является ли файл исполняемым

11.09.2017, 17:36. Показов 1604. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Есть в с++ очень хорошая функция - SHGetFileInfo, с ее помощью, в частности, можно определить является файл исполняемым. Аналога в режиме ядра я не нашел, но могу предположить, что определить это можно по первым двум байтам файлы:

MZ = 0x5A4D - DOS.
NE = 0x454E - OS/2.
LE = 0x454C - OS/2 или VXD.
PE = 0x4550 - Win32/NT.

Скажите, это правильный подход? Покрывает ли приведенный список все возможные варианты исполняемый файлов? Если нет, то как можно отличить запускается *.exe или, например, *.txt?

Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.09.2017, 17:36
Ответы с готовыми решениями:

Как определить является ли файл исполняемым?
Собственно нужно написать программу, которая при запуске в текущей папке удаляла все неисполняемые файлы и оставляла исполняемые. Как можно...

Определить, что файл является исполняемым и запустить его
Вот такой вот вопрос, как мне определить исполнительный файл. Задача такая, нужно написать программу которая запускает исполнительные файлы...

Исполняемым файл jar, не работает
День добрый. Есть утилитка, которая обрабатывает табличные файлы dbf, использует библиотеку DBF_JDBC30_OK, рабоче через hxtt и т.д. Так...

3
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
11.09.2017, 18:59
Цитата Сообщение от shtuceron Посмотреть сообщение
могу предположить, что определить это можно по первым двум байтам файлы:
MZ = 0x5A4D - DOS.
NE = 0x454E - OS/2.
LE = 0x454C - OS/2 или VXD.
PE = 0x4550 - Win32/NT.
Скажите, это правильный подход?
Нет.
Начнем с того, что в Win32 большинство исполняемых файлов начинаются с 'MZ'. Хотя это не DOS.

Цитата Сообщение от shtuceron Посмотреть сообщение
Если нет, то как можно отличить запускается *.exe или, например, *.txt?
Файл открывается с правами на выполнение, а затем для него срабатывает
IRP_MJ_ACQUIRE_FOR_SECTION_SYNCHRONIZATI ON с PageProtection == PAGE_EXECUTE.
Это если в минифильтре.

Ну и потом, .txt не запускается в традиционном смысле этого слова.
Запускается ассоциированная с ним программа, которая загружает .txt.

А для exe/dll/sys/ocx/etc еще срабатывают соответствующие Ps-калбэки...
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
11.09.2017, 19:41
Цитата Сообщение от shtuceron Посмотреть сообщение
Покрывает ли приведенный список все возможные варианты исполняемый файлов?
Нет. Более того в общем случае этого и не сделать. Исполняемый COM-файл никак не отличить от неисполняемого, кроме того, что его длина будет меньше 64К (точнее некоего числа, которое чуть ниже 64К). Грубо говоря, любой файл подходящей длины можно переименовать в .COM и запустить.

Т.е. если файл по структурам в его начале определяется как исполняемый, то это так. Но никак в общем случае нельзя определить, что файл НЕ является исполняемым.
0
0 / 0 / 0
Регистрация: 26.08.2013
Сообщений: 161
12.09.2017, 17:15  [ТС]
IRP_MJ_ACQUIRE_FOR_SECTION_SYNCHRONIZATI ON подходящее решение, спасибо.

Но с .com файлами возникла небольшая засада. Запускаю их через команду "debug path_to_file", затем "g" (на выполнение). В логах даже нет упоминания, что .com файл запустился. Это особенность работы IRP_MJ_ACQUIRE_FOR_SECTION_SYNCHRONIZATI ON?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.09.2017, 17:15
Помогаю со студенческими работами здесь

Как сделать файл исполняемым?
Доброго времени суток всем. Не могу делать файлы исполняемыми и собственно запускать. Есть файл созданный в Qt Creatore, его нужно...

Сделать файл исполняемым и вывести его в консоли
Здравствуйте. Подскажите пожалуйста я уже не знаю что делать, надо сделать файл исполняемым и вывести его в консоли убунту. Сохранила файл...

Ошибка "exe не является исполняемым файлом"
При запуске программы выдает вот такую ошибку, раньше было все нормально, не знаю что делать, уже часов 5 роюсь в инете инфу нормальную не...

Определить, является ли файл текстовым
Добрый день! Есть ли какой-нибудь способ определить является файл текстовым или нет?

Как определить, является ли файл пустым?
Как проверить и записать такое: если файл не содержит ни одного символа (ни одной строки???), вывести сообщение ELSE сделать что-то другое,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru