Compiler construction 函数的CFG:被调用函数是否应';CFG是否包含在外部功能的CFG中?

Compiler construction 函数的CFG:被调用函数是否应';CFG是否包含在外部功能的CFG中?,compiler-construction,static-analysis,malware,disassembly,control-flow-graph,Compiler Construction,Static Analysis,Malware,Disassembly,Control Flow Graph,假设我获得了一个函数的CFG(控制流图),并且假设一个基本块调用另一个函数(当然,调用是在基本块的最后一条指令中进行的) 我的问题是:我应该将被调用函数的CFG嵌入到外部函数的CFG中吗 要记住的事情: 我为反汇编二进制文件中的所有函数维护一个CFGs 我正在处理的项目是使用静态分析进行恶意软件检测 如果测试二进制样本中的任何一个CFG与恶意软件样本中的任何一个CFG匹配 测试样本是恶意的。将被调用函数的CFG嵌入到调用位置是一种内联,是过程间分析。当程序有许多函数和深层调用链(或递归)时,

假设我获得了一个函数的CFG(控制流图),并且假设一个基本块调用另一个函数(当然,调用是在基本块的最后一条指令中进行的)

我的问题是:我应该将被调用函数的CFG嵌入到外部函数的CFG中吗

要记住的事情:

  • 我为反汇编二进制文件中的所有函数维护一个CFGs
  • 我正在处理的项目是使用静态分析进行恶意软件检测
  • 如果测试二进制样本中的任何一个CFG与恶意软件样本中的任何一个CFG匹配

测试样本是恶意的。

将被调用函数的CFG嵌入到调用位置是一种内联,是过程间分析。当程序有许多函数和深层调用链(或递归)时,所有调用的内联将以指数形式增长您的CFG。您应该检测带有记帐嵌套CFG的恶意软件,但您可能不想内联所有调用。(Call不是basic块中的最后一条指令;它将返回,并且不是caller中的分支:)@osgx,非常感谢,先生!