Войти

Показать полную графическую версию : [решено] Переименовать EXE в BAT


PavlovAV
07-04-2014, 19:37
Добрый день всем!

Только зарегистрировался, первый раз пишу, сильно не пинайте))
Сегодня узнал, что если переименовать файл *.exe в *.bat, то винда без проблем запускает его.
Пробовал на простенькой игрушке, типа пасьянса марьяж.
Как ни странно - работает.
Подскажите, это извращение?)))
PS история:
Техподдержка (сторонняя организация) обычно присылала запросы к БД Oracle в виде двух файликов, bat и sql,
но сегодня почему-то прислали exe с файлами параметров (sql-запросы).
Попросил прислать bat, они тупо переименовали и прислали тот же файл изменив его тип (размер и содержимое файла те-же).
Мне очень не хочется, чтобы присылали "не известно что", народ посоветовал фразу "пришлите файл с открытым кодом",
думаю что это единственный вариант.

Iska
07-04-2014, 20:04
Подскажите, это извращение?))) »
Нет. Считайте «фича».

P.S. Собственно, для возможности исполнения файла PE-формата расширение вообще не играет никакой роли — см. пример с методом «.RunApplication()» здесь: VBScript: некоторые интересные объекты Automation — Серый форум (http://forum.script-coding.com/viewtopic.php?id=4489).

yurfed
07-04-2014, 21:10
Считайте «фича». »Да какая это фича? Изврат полный :)
Собственно, для возможности исполнения файла PE-формата расширение вообще не играет никакой роли »А если он без расширения и не имеешь понятия как выглядит заголовок того или иного файла, будешь долго думать чем открыть. Windows не умеет принимать решения с различными известными ему файлами, но отличными расширениями.
Например в Linux'е подсунь MP3 файл с расширением TXT или вообще без расширения, он тут же откроет его в проигрывателе и не будет "кочевряжится" с Блокнотом.
Windows к расширениям очень привязан (хотя BAT и CMD можно запустить. Они отрабатываются как исполняемые). Опять, те же "Лини" смотрят на содержимое заголовка, а не в "хвост" имени.
Мне очень не хочется, чтобы присылали "не известно что" »Если сами не можете определиться с содержимым файлов, воспользуйтесь программой
http://i019.radikal.ru/1404/69/9049607051f8.png (http://softq.org/ftv)

Iska
07-04-2014, 22:06
А если он без расширения и не имеешь понятия как выглядит заголовок того или иного файла, будешь долго думать чем открыть. Windows не умеет принимать решения с различными известными ему файлами, но отличными расширениями. »
Это Вы про Проводник говорите. А я — именно про возможность исполнения файла.

Например в Linux'е подсунь MP3 файл с расширением TXT или вообще без расширения, он тут же откроет его в проигрывателе и не будет "кочевряжится" с Блокнотом. »
Там, очевидно, основано на опросе внутренней структуры. С деталями не знаком.

PavlovAV
07-04-2014, 22:46
Если сами не можете определиться с содержимым файлов, воспользуйтесь программой »
Да нет (русский язык - это чудо)))), с содержимым программы вопросов нет, не запускаю то что не известно - и все.
Тот же far, или встроенный в WinCmd просмотрщик показывает что внутри файла (с блокнотом сложнее, кодировка не та).
Странным был подход тех.поддержки, это и напрягло.
Вариантов 2: либо выпрошу исходные sql-файлы (батник сам дорисую), либо добьюсь чтобы прислали "читаемый" bat-файл (но тогда sql-файлы пусть нормальные шлют).
Вопрос-то был в следующем - с чего вдруг винда понимает, что переименованный файл (из exe в bat) является на самом деле exe-файлом, и все работает? Документировано ли это где-нибудь?
Да, не всегда это прокатывает (тот же ворд не заработает, т.к. сложный установщик, реестр задействован и т.п.), но на простеньких программках почему-то получается.
По сути - и txt можно открыть хоть вордом, хоть экселем - все будет читаемо, но наоборот - мало вероятно)))

yurfed
07-04-2014, 23:28
Вопрос-то был в следующем - с чего вдруг винда понимает, что переименованный файл (из exe в bat) является на самом деле exe-файлом, и все работает? Документировано ли это где-нибудь? »Формат ассоциаций запуска у них возможно одинаковый. Примерно что то так, только через CMD.EXE
Vadikan, прошу поправить если всё не так :)
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.exe]
@="exefile"
"Content Type"="application/x-msdownload"

[HKEY_CLASSES_ROOT\.exe\PersistentHandler]
@="{098f2470-bae0-11cd-b579-08002b30bfeb}"

[HKEY_CLASSES_ROOT\exefile]
@="Application"
"EditFlags"=hex:38,07,00,00
"TileInfo"="prop:FileDescription;Company;FileVersion"
"InfoTip"="prop:FileDescription;Company;FileVersion;Create;Size"

[HKEY_CLASSES_ROOT\exefile\DefaultIcon]
@="%1"

[HKEY_CLASSES_ROOT\exefile\shell]

[HKEY_CLASSES_ROOT\exefile\shell\open]
"EditFlags"=hex:00,00,00,00

[HKEY_CLASSES_ROOT\exefile\shell\open\command]
@="\"%1\" %*"

[HKEY_CLASSES_ROOT\exefile\shell\runas]

[HKEY_CLASSES_ROOT\exefile\shell\runas\command]
@="\"%1\" %*"

[HKEY_CLASSES_ROOT\exefile\shellex]

[HKEY_CLASSES_ROOT\exefile\shellex\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"

[HKEY_CLASSES_ROOT\exefile\shellex\PropertySheetHandlers]

[HKEY_CLASSES_ROOT\exefile\shellex\PropertySheetHandlers\PEAnalyser]
@="{09A63660-16F9-11d0-B1DF-004F56001CA7}"

[HKEY_CLASSES_ROOT\exefile\shellex\PropertySheetHandlers\PifProps]
@="{86F19A00-42A0-1069-A2E9-08002B30309D}"

[HKEY_CLASSES_ROOT\exefile\shellex\PropertySheetHandlers\ShimLayer Property Page]
@="{513D916F-2A8E-4F51-AEAB-0CBC76FB1AF8}"

По сути - и txt можно открыть хоть вордом, хоть экселем - все будет читаемо, но наоборот - мало вероятно))) »Word понимает формат TXT, блокнот - не понимает doc, rtf, docx и тд. Тут вроде всё понятно.
Ещё раз повторю - BAT, CMD запускаются через интерпретатор Cmd.exe.
Опять примерно
%SystemRoot%\system32\CMD.EXE %1

Iska
07-04-2014, 23:45
Вопрос-то был в следующем - с чего вдруг винда понимает, что переименованный файл (из exe в bat) является на самом деле exe-файлом, и все работает? Документировано ли это где-нибудь? »
Здесь:
HKEY_CLASSES_ROOT\batfile\shell\open\command
Ваш «пакетный» файл отправляется на исполнение, где происходит разбор содержимого его заголовка, и он исполняется, как любой другой PE-файл.

Да, не всегда это прокатывает (тот же ворд не заработает, т.к. сложный установщик, реестр задействован и т.п.) »
Однако, работает.

По сути - и txt можно открыть хоть вордом, хоть экселем - все будет читаемо, но наоборот - мало вероятно))) »
Некорректное объяснение. У нас, фактически, всего-навсего сменён тип файла. Причём эта смена никак не влияет на метод запуска — в обеих разделах реестра однотипное содержимое в глаголе «Open». И только. В любом случае всё вращается вокруг CreateProcess function (Windows) (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx).

PavlovAV
08-04-2014, 00:37
Ваш «пакетный» файл отправляется на исполнение, где происходит разбор содержимого его заголовка »
Логично))
СПАСИБО всем, закрываем.
PS в свое время в конец bmp скрытно дописывал свой текстовый лог
bmp при этом не страдал (паинтом читалось только начало файла, картинка открывалась нормально).

yurfed
08-04-2014, 00:39
PS в свое время в конец bmp скрытно дописывал свой текстовый лог
bmp при этом не страдал (паинтом читалось только начало файла, картинка открывалась нормально). »Для чего, зачем?
Вы наверно великий пакостник :)

Iska
08-04-2014, 00:55
Для чего, зачем? »
Rarjpeg — Lurkmore (http://lurkmore.to/Rarjpeg) и иже с ним. Но вряд ли. Скорее доморощенная стеганография.

PavlovAV
15-04-2014, 20:20
кий »
Ну... Нужно было скрытно кое-что логировать
Новые файлы хоть и не легко - но найти можно
А вот существующие... )))




© OSzone.net 2001-2012