2

获取一个来源不明的无证可执行文件。从命令行尝试 /?, -h, --help 不会产生任何结果。是否可以通过查看可执行文件内部来发现可执行文件是否支持任何命令行选项?可能是逆向工程?这样做的最佳方法是什么?

我说的是 Windows 可执行文件,但很想知道其他操作系统需要哪些不同的方法。

4

3 回答 3

3

在 linux 中,将运行第一步,它将strings your_file文件中的所有可打印字符字符串转储。因此将显示任何常量字符,包括任何“使用”指令。

下一步可能是ltrace在文件上运行。这显示了程序执行的所有函数调用。如果它包括getopt(或熟悉),那么它肯定表明它正在处理输入参数。事实上,您应该能够准确地看到程序期望的参数,因为这是getopt函数的第三个参数。

于 2010-02-26T11:14:36.123 回答
2

对于 Windows,您可以看到这个 关于反编译 Windows 可执行文件的问题。至少发现这些选项应该相对容易(它们实际上做的是不同的故事)。

于 2010-02-26T11:17:40.013 回答
1

如果它是 .NET 可执行文件,请尝试使用Reflector。这会将 MSIL 代码转换为等效的 C# 代码,从而使其更易于理解。不幸的是,私有和局部变量名称将丢失,因为它们没有存储在 MSIL 中,但仍然可以跟踪正在发生的事情。

于 2010-02-26T11:10:57.633 回答