如何发现未知来源的未记录可执行文件的命令行选项(如果有)?

时间:2010-02-26 11:09:25

标签: command-line reverse-engineering hex-editors

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

我在谈论Windows可执行文件,但有兴趣了解另一个操作系统需要采用哪些不同的方法。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

对于Windows,您可以看到有关反编译Windows可执行文件的this question。至少可以相对容易地发现选项(他们实际做的是不同的故事)。

答案 2 :(得分:1)

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