如何使用静态分析从二进制文件中收集系统调用?

hck*_*uo2 6 operating-system static-analysis reverse-engineering system-calls

我想通过静态分析获取给定二进制文件 (x86_64) 中使用的系统调用列表。我试过 strace 但它不能保证它是一个完整的列表,因为在执行过程中可能不会调用某些系统调用。

Pat*_*eam 0

使用 NDepend 工具,您可以通过代码查询来完成此操作,但仅限于 .NET 程序集:

from x in ThirdParty.CodeElements
select new { x, callers = 
  x.IsMethod ? x.AsMethod.MethodsCallingMe.Cast<ICodeElement>() : 
  x.IsType   ? x.AsType.TypesUsingMe.Cast<ICodeElement>() : new ICodeElement[0] }
Run Code Online (Sandbox Code Playgroud)

NDepend 调用系统