【问题标题】:Determine arguments accepted by an exe without having source code?在没有源代码的情况下确定 exe 接受的参数?
【发布时间】:2013-05-27 06:40:10
【问题描述】:

我有一个应用程序,我每天都在使用它。 开发人员提供了各种方便的参数,这些参数在传递给 exe 时执行某些任务。在调试问题时,技术支持人员告诉我使用一些特殊的 args 运行 exe,这减少了我工作中的许多手动步骤。但是,开发人员并不愿意分享所有此类参数的列表。所以我想知道是否有任何方法可以确定 exe 接受的参数?该应用程序是用 C++ 开发的。

【问题讨论】:

  • 您要确定接受哪种类型的参数或多少个参数?
  • 不看源码,不。那是因为它可以接受任何参数,甚至是未指定的参数。例如,假设开发人员编写了一些代码来处理-option1 -option2。没有什么能阻止您将 exe 称为 program.exe -option3
  • 我认为没有任何实际的方法可以做到这一点。您最好的选择是尝试在 linux 上使用诸如 strings 之类的实用程序来列出可执行文件中的所有字符串,并查看可以作为参数的内容,但我不确定时间投入是否值得。

标签: c++ arguments reverse-engineering


【解决方案1】:

我要做的第一件事是在可执行文件上运行strings(在类 UNIX 操作系统下)之类的东西,以提取任何看起来像选项的东西。

这不会告诉您如何使用特定选项,但是,如果您的strings 命令返回:

--option1
--option2
--run-faster
--use-less-cpu
--format-hard-disk

可以肯定的是,这些都是有效的选项。较短的选项可能不会那么容易出现,因为 strings 往往是针对明显的文本数据。

即使您没有像 strings 这样的东西,由于许多编译器和链接器的工作方式,所有选项也很有可能会集中在可执行文件中。

而且,正如 Eugeny Loy 在评论中指出的那样,微软的 sysinternals 套件也有一个 strings utility


顺便说一句,在尝试测试 --format-hard-disk 是否是一个有效的选项之前,我会先暂停一下 :-)

【讨论】:

猜你喜欢
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
  • 2018-06-20
  • 2018-01-09
  • 1970-01-01
  • 2015-03-02
  • 2015-03-15
  • 1970-01-01
相关资源
最近更新 更多