我知道Linux有内置的二进制可执行格式,例如 ELF , a.out , Shebang 等。我也知道用户可以在'/ proc / sys / fs / binfmt_misc'中将自己支持的格式添加到系统中。
现在我的目标是覆盖所有可能性,因此我可以自动(使用脚本)确定程序是否可执行(并且不仅通过可运行的权限位)。我听说可以识别文件格式的命令文件,如果它是可执行文件,它会打印出'executable'这个词但是 - 当我使用 jar 文件(在binfmt_misc目录中列为可执行文件)进行测试时,它没有打印出'executable'这个词。
所以我要求确定文件在Linux系统上是否可执行的最佳方法。如果有一种方法来运行execve()只是为了获得返回代码(如果文件不是受支持的可执行文件 - execve返回匹配的错误)那么我可以拦截并使用它。问题是我需要而不在我的系统上运行文件(或者至少不要让它以任何方式改变它......)。
谢谢!