2010-02-26 2 views
2

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

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

ответ

2

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

+0

Я прочитал этот ответ и в итоге просто использовал шестнадцатеричный редактор - спасибо. –

1

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

3

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

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