问题标签 [control-flow-graph]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3348 浏览

java - 如何使用 Soot 创建控制流图?

有一段时间我一直在努力用Soot创建一个控制流图,我有点迷失在它的教程中。我没有将 Soot 用作 Eclipse 插件,而是尝试将 Soot 用作库或 API。

我想做的是,我有一堆 Java 项目,我想创建/生成这些项目的控制流程图。我还看到 Soot 中有一个功能可以生成“DOT”格式的控制流图,这对我来说也是完全可以接受的。

任何显示如何使用 Soot 创建/生成控制流图的指南或代码示例都会很棒!

0 投票
1 回答
1373 浏览

android - 从 smali 代码为 Android APK 构建控制流图

是否有任何工具可以直接解析 smali 代码以构建 CFG?我知道 Androguard 做了类似的事情,但它似乎对 apk 文件使用了反编译,如果 apk 使用混淆技术,这在某些情况下可能变得不可靠。

0 投票
1 回答
6722 浏览

reverse-engineering - 从 Radare2 获取完整的二进制控制流图

我想使用radare2获取二进制(恶意软件)的完整控制流程图。
我从另一个关于 SO 的问题中关注了这篇文章。我想问是否ag有另一个命令可以提供整个二进制文件的控制流图,而不仅仅是一个函数的图。

0 投票
0 回答
1503 浏览

javascript - 在 vis.js 中控制网络的边缘渲染

我正在使用 vis.js 开发控制流图可视化器。就像这里的维护者提供的示例一样。

下图显示了结果: 控制流图

我想控制绘制边缘的方式:向外箭头从底部开始,向内箭头在节点顶部结束。有没有办法在 vis.js 中有这样的行为?我也可以防止边缘穿过节点吗?

这是我的选择:

0 投票
1 回答
455 浏览

assembly - 如何为不可执行的二进制文件生成 CFG

我想为不可执行的二进制文件生成一个控制流图。目标是对生成的 Linux 内核二进制文件进行静态分析。有什么工具可以做到这一点吗?我通过搜索找到的工具仅适用于可执行文件。

我使用 obj-dump 将二进制文件反汇编为程序集。目前,我对汇编基本块进行分析,但是在这种方法中,我不能保证是否覆盖了所有的执行路径。

0 投票
1 回答
331 浏览

graph-theory - 将控制流图转换为有向无环图

假设我有一个循环控制流图

每个节点都与一个成本相关联。我还有一个状态变量,每次进入节点 D 时都会修改它。 的概率D -> ED -> G由这个状态变量决定。

我想要的是枚举所有可能的路径(在某个状态P( D -> G) = 1),并找到每条路径的概率和成本。第一步,我认为是通过展开将带有状态变量的控制流图转换为有向无环图。有没有一个简单的算法呢?任何可以提供帮助的库(如networkx)?

0 投票
0 回答
44 浏览

abstract-syntax-tree - CFG 中应该包含哪些节点?

我正在为其服务器端编译器未优化的语言(LSL)编写源代码级优化器。优化器在常量折叠等某些领域工作并表现良好,但为了使其更强大,我想构建一个 CFG,以启用/简化跳转优化、死代码删除以及以后从 SSA 中受益。

现在,由于它是源代码级别的,我无法将代码转换为 3AC 之类的东西,否则我可能会创建一个实际上不如原始版本优化的版本。

所以我的问题是:我会在 CFG 中包含哪些内容?合乎逻辑的答案是存储代表整个语句的 AST 节点。我面临的问题是表达式可能会调用用户函数,而这些函数可能会改变全局变量,这会影响 SSA 表单,这就是为什么我想将这些函数作为同一图表的一部分,而不是不同的图表。

0 投票
1 回答
1318 浏览

llvm - llvm - 获取 br 类型指令的标签字段中引用的基本块的第一条指令

我正在尝试编写一个检查代码控制流的通行证。给定 br 指令,我需要访问标签字段中引用的基本块。

例如,对于代码:

我得到了 IR 代表

现在,当我在 pass 中遇到这条指令时,我需要确切地知道这些标签指向的位置。谁能告诉我我该怎么做?

0 投票
1 回答
1126 浏览

testing - 绘制带有输出的控制流图

我目前正在学习绘制控制流图,我不确定我是否在以下场景中正确绘制它:

对于以下代码片段,其中xy是输入变量,z是输出变量:

这就是我所做的:

控制流图

这在任何方面都是正确的吗?提前致谢。

0 投票
1 回答
149 浏览

assembly - 如何使用 Intel PT 检查汇编中是否采用条件分支?

我正在运行一个程序,我想检查当有条件跳转时是否采取了分支。

我听说 IntelPT 可以使用 pt_qry_cond_branch()函数来做到这一点。但是,我看不到任何有关如何使用它的示例。有人对此有任何想法吗?

例如,我将如何使用 Intel PT 来查看此函数中发生了什么:

我想知道如何为此使用 Intel-PT,而不是在nop或其他检测数据的方式上设置断点以自己查找数据并计算分支条件。