许多CLI程序都已记录了有关标志和选项的语法,通常可在手册页中使用或使用-h
或--help
标志。 但是通常有很多非常有用,非常强大的选项,这些选项是无意记录的,但是我发现查找这些选项非常困难且耗时。
请注意,出于这里的最初目的,我正在特别寻找在达尔文(i / mac [h] [] OS [X]或目前所说的其他方式...)上进行此操作的方法,将接受特定于该平台的答案。但是真正理想的东西是可以跨平台和体系结构工作的东西。
所以我想知道是否有任何工具或易于自动化的方法在我拥有的众多开发,调试和系统工具(但我不熟悉)中找到程序的隐藏标志,或者至少二进制可执行文件中有一种特定的模式,人们可以依靠它来自动执行“遍历”二进制文件以查找可能的候选对象的过程。
我知道对于大约相同数量的语言和平台,有±100亿个选项解析功能,库和技术;想到getopt
和getopt_long
以及许多其他术语,通常称为“事物”,它们涉及一个或多个术语opt[s]
或arg[s]
和get
的组合或parse
。再次重申一下,在这里限制我的问题的范围是,今天我要特别寻找的是Apple产品上发现的实用程序的隐藏选项,因此如果对我有帮助(限制可接受的答案的范围),请假定目标程序:
r-x
访问该程序的权限,因此我们可以制作一个可以修改的副本。我目前执行此操作的过程通常包括:
strip
这么做。也就是说,我发现了一些有用的选项,例如xip -x和pkgutil --expand-full,内容如下:
cp -H $(⁅which¦xcrun -f⁆ ⁅xip¦pkgutil⁆) /tmp/⁅xip¦pkgutil⁆
codesign --remove-signature /tmp/⁅xip¦pkgutil⁆
strip /tmp/⁅xip¦pkgutil⁆
strings ⁅-a -⁆ /tmp/⁅xip¦pkgutil⁆ | grep -C10 ⁅sign¦expand⁆
(显然,花式Unicode表示变化。)
但是到目前为止,我发现没有什么韵律或原因可以确切地找到它们。在那之后的所有尝试和错误。而且,对于基于C ++的东西(例如基于LLVM的工具,其中有些具有-print-all-options
选项,而有些则没有),这具有更大的挑战性。
我真的很想找到一种方法来对所有所有 Apple的系统实用程序等所有选项进行完整列表。 或至少接近那个。可能吗?