我的要求是编写一个工具,它将系统调用列表作为输入,然后在文件列表中搜索这些系统调用的出现次数。现在,我们已经确定了227个系统调用的列表。文件数量可能很大。我现在使用的算法是一个简单的嵌套for循环。可以理解,该计划需要很长时间才能完成。我正在使用shell脚本来实现这一目标。
有人可以建议一个更好/更有效的算法吗?
谢谢你, 阿迪亚。
答案 0 :(得分:0)
什么类型的文件?源代码?可执行文件?此外,系统调用可以在运行时使用自修改代码构建,并且在许多情况下,系统调用是一个通用内核条目,其中系统调用号可能是动态“数据”,因此静态文件分析可能不完整的程度甚至有用吗?
如果你能识别出一般将系统调用与文件的其他内容区分开来的东西,你可以先检查一下,然后通过强力比较或某种树来找出它是哪一个。搜索范围。
另一个想法可能是看看你是否可以使用grep来识别一般的系统调用,并输出带有文件名和行号或任何你喜欢的调用,然后看看是否可以通过系统调用简单地对它进行排序。
您可能还希望使用像perl这样的语言,它具有一些很好的与哈希相关的功能。
答案 1 :(得分:0)
您的系统调用将位于名为calls
的文件中,每行一个。您的文件列表位于名为list_of_files
的文件中,每行一个。
cat list_of_files | xargs grep -f calls