Как определить параметры командной строки (если таковые имеются) для недокументированного исполняемого файла неизвестного происхождения?

StackOverflow https://stackoverflow.com/questions/2341095

Вопрос

Возьмите недокументированный исполняемый файл неизвестного происхождения.Попытка /?, -h, --help из командной строки ничего не дает. Можно ли узнать, поддерживает ли исполняемый файл какие-либо параметры командной строки, заглянув внутрь исполняемого файла? Возможно, обратный инжиниринг?Каков был бы наилучший способ сделать это?

Я говорю об исполняемом файле Windows, но было бы интересно услышать, какие другие подходы понадобятся для другой ОС.

Это было полезно?

Решение

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

Другие советы

В Linux первый шаг будет выполнен strings your_file который сбрасывает все строки печатаемых символов в файле.Таким образом, будут показаны любые символы констант, включая любые инструкции по "использованию".

Следующим шагом могло бы стать выполнение ltrace в файле.Здесь показаны все вызовы функций, выполняемые программой.Если она включает в себя getopt (или знакомо), то это верный признак того, что он обрабатывает входные параметры.Фактически, вы должны быть в состоянии точно видеть, какой аргумент ожидает программа, поскольку это третий параметр для getopt функция.

Если это исполняемый файл .NET, попробуйте использовать Отражатель.Это преобразует код MSIL в эквивалентный код C #, что может облегчить его понимание.К сожалению, имена частных и локальных переменных будут утеряны, поскольку они не хранятся в MSIL, но все равно должна быть возможность следить за происходящим.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top