You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跳转目标基于动态环境值时控制流图是如何构建的?

核心结论

你的理解完全正确,没有遗漏关键要点:基于运行时动态计算目标的间接跳转(比如你举的jmp eax例子)本身就是静态控制流图(CFG)生成的固有难点,理论上不可能被静态分析工具100%准确识别。

你目前在分析恶意软件时很少碰到断裂的控制流图,主要有这几个原因:

  • 主流逆向工具(比如IDA)已经内置了大量常见间接跳转场景的识别逻辑:绝大多数常规场景下的间接跳转(比如调用导入表函数、switch-case语句对应的跳转表跳转、C++虚函数调用),IDA都可以通过上下文特征自动推导跳转目标,不会出现CFG断裂的情况。
  • 你目前接触的恶意样本大多没有采用高强度的逆向对抗手段:大部分普通恶意软件的对抗目标是杀毒软件的静态扫描,不会刻意新增大量破坏CFG的间接跳转逻辑;只有专门针对逆向分析人员做对抗的样本(比如APT组织专用样本、带强保护壳的商用木马)才会大量使用运行时计算跳转目标、控制流扁平化这类破坏静态CFG的技巧,这类样本加载到IDA后你会看到大量无法识别目标的间接跳转,CFG会完全断裂无法正常查看。
  • 逆向工具的辅助分析逻辑会自动补全简单的动态跳转目标:哪怕跳转目标是基于环境信息计算得到的,只要计算逻辑简单,IDA的内置模拟分析、或是常用的逆向辅助插件都可以在加载阶段推导得到可能的跳转目标,自动补全CFG,你在使用过程中不会感知到这个处理过程。

静态分析无法100%解析所有间接跳转目标是被理论证明的固有局限,属于停机问题的衍生场景,所有静态反汇编工具都存在这个问题,不存在完美的解决方案。

内容的提问来源于stack exchange,提问作者J.Todd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:24:04