Как узнать, есть ли у .EXE параметры командной строки?

Предположим, у вас есть .EXE-файл, и вы хотите проверить, есть ли у него параметры командной строки. Как узнать, есть ли у .EXE такая возможность. В моем случае я знаю, что Nir Sofers WebBrowserPassView.exe может запустить его через cmd .exe и WebBrowserPassView.exe/stext output.txt. Но как я могу узнать, если я не знаю?


person JohnnyFromBF    schedule 15.01.2012    source источник


Ответы (7)


Самый простой способ — использовать ProcessExplorer, но он все равно будет требуют некоторого поиска.

Убедитесь, что ваш exe-файл запущен, и откройте ProcessExplorer. В ProcessExplorer найдите имя вашего двоичного файла и дважды щелкните его, чтобы отобразить свойства. Перейдите на вкладку Строки. Найдите список строк, найденных в двоичном файле. Большинство строк будут мусором, поэтому их можно игнорировать. Ищите все, что может напоминать переключатель командной строки. Проверьте этот переключатель из командной строки и посмотрите, делает ли он что-нибудь.

Обратите внимание, что ваш двоичный файл может просто не иметь переключателей командной строки.

Для справки здесь приведены описанные выше шаги, примененные к исполняемому файлу Chrome. Переключатели командной строки, принимаемые Chrome, можно увидеть в списке:

Обозреватель процессов, анализирующий Chrome.exe

person Adam    schedule 07.06.2012
comment
Это было чрезвычайно полезно при поиске переключателей для MalwareBytes. Чтобы ускорить ваш поиск, большинство программных переключателей начинаются с / или - поэтому использование диалогового окна поиска (нижний правый угол изображения выше) с этими символами может помочь вам быстрее найти то, что вы ищете. - person Michael Nelson; 04.03.2013
comment
Какие функции поддерживает панель свойств Find in this Process Explorer? регулярное выражение? Подстановочные знаки? Я не могу понять это с первого взгляда. - person John Suit; 05.02.2016
comment
@JohnSuit, боюсь, только базовый поиск, но вы можете заметить кнопку «Сохранить», которая позволяет экспортировать список в файл .txt. Вы можете открыть этот документ в любом текстовом редакторе, поддерживающем RegEx, подстановочные знаки и т. д., и выполнять поиск таким образом. - person Adam; 07.02.2016

Вызовите его из оболочки с аргументом вроде /? или --help. Это обычные переключатели помощи.

person Marcin    schedule 15.01.2012
comment
Они не помогают, так как .exe просто запускается, без дальнейшего вывода. - person JohnnyFromBF; 15.01.2012
comment
Да, но должна быть возможность отладить это с помощью RE или каких-то других методов. - person JohnnyFromBF; 15.01.2012
comment
@ Ян, вы, конечно, можете отлаживать приложение и искать переключатели. - person yas4891; 15.01.2012

У Sysinternals есть еще один инструмент, который вы можете использовать: Strings.exe

Пример:

strings.exe c:\windows\system32\wuauclt.exe > %temp%\wuauclt_strings.txt && %temp%\wuauclt_strings.txt

person user8027324    schedule 17.05.2017
comment
Спасибо @ user8027324. Я добавил форматирование к вашему ответу. Strings.exe не совсем надежный способ сделать это, но я определенно использовал его для этой цели раньше. - person Burt_Harris; 18.05.2017
comment
Вывод строк также включен в ProcessExplorer на вкладке Строки процесса Свойства. - person Nuno André; 05.01.2021

Просто используйте IDA PRO (https://www.hex-rays.com/products/ida/index.shtml) для дизассемблирования файла и поиска некоторых известных параметров командной строки (используя Search...Text) — в этом разделе вы обычно видите все параметры командной строки — для программы (LIB2NIST.exe) на снимке экрана ниже, например, он показывает задокументированный параметр командной строки (/COM2TAG), а также некоторые недокументированные, такие как /L. Надеюсь это поможет?

введите здесь описание изображения

person Tom Wenseleers    schedule 03.10.2013

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

Как предполагает Марчин, типичными переключателями для отображения всех опций являются либо /?, либо /help (некоторые приложения могут предпочесть синтаксис в стиле Unix, -? и -help соответственно). Но это всего лишь общепринятое соглашение.

Если они не работают, вам не повезло. Вам нужно будет проверить документацию для приложения или, возможно, попробовать декомпилировать исполняемый файл (если вы знаете, что ищете).

person Cody Gray    schedule 15.01.2012

На самом деле это расширение ответа Марцина.

Но вы также можете попробовать передать «мусорные» аргументы, чтобы увидеть, вернутся ли какие-либо ошибки. Получение любого ответа от исполняемого файла непосредственно в оболочке будет означать, что он, вероятно, просматривает аргументы, которые вы передаете, а ответ об ошибке близок к гарантии, что это так.

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

person Izzy    schedule 28.08.2015
comment
Это отличная идея передать мусор в качестве параметра, чтобы посмотреть, как программа отреагирует. - person Coldblackice; 15.10.2020

Это то, что я получаю из консоли в Windows 10:

C:\>find /?
Searches for a text string in a file or files.

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

  /V         Displays all lines NOT containing the specified string.
  /C         Displays only the count of lines containing the string.
  /N         Displays line numbers with the displayed lines.
  /I         Ignores the case of characters when searching for the string.
  /OFF[LINE] Do not skip files with offline attribute set.
  "string"   Specifies the text string to find.
  [drive:][path]filename
             Specifies a file or files to search.

If a path is not specified, FIND searches the text typed at the prompt
or piped from another command.
person pbvelikov    schedule 17.09.2020