问题标签 [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.
android - 从 smali 代码为 Android APK 构建控制流图
是否有任何工具可以直接解析 smali 代码以构建 CFG?我知道 Androguard 做了类似的事情,但它似乎对 apk 文件使用了反编译,如果 apk 使用混淆技术,这在某些情况下可能变得不可靠。
reverse-engineering - 从 Radare2 获取完整的二进制控制流图
我想使用radare2获取二进制(恶意软件)的完整控制流程图。
我从另一个关于 SO 的问题中关注了这篇文章。我想问是否ag
有另一个命令可以提供整个二进制文件的控制流图,而不仅仅是一个函数的图。
javascript - 在 vis.js 中控制网络的边缘渲染
我正在使用 vis.js 开发控制流图可视化器。就像这里的维护者提供的示例一样。
我想控制绘制边缘的方式:向外箭头从底部开始,向内箭头在节点顶部结束。有没有办法在 vis.js 中有这样的行为?我也可以防止边缘穿过节点吗?
这是我的选择:
assembly - 如何为不可执行的二进制文件生成 CFG
我想为不可执行的二进制文件生成一个控制流图。目标是对生成的 Linux 内核二进制文件进行静态分析。有什么工具可以做到这一点吗?我通过搜索找到的工具仅适用于可执行文件。
我使用 obj-dump 将二进制文件反汇编为程序集。目前,我对汇编基本块进行分析,但是在这种方法中,我不能保证是否覆盖了所有的执行路径。
graph-theory - 将控制流图转换为有向无环图
假设我有一个循环控制流图
每个节点都与一个成本相关联。我还有一个状态变量,每次进入节点 D 时都会修改它。 的概率D -> E
和D -> G
由这个状态变量决定。
我想要的是枚举所有可能的路径(在某个状态P( D -> G) = 1
),并找到每条路径的概率和成本。第一步,我认为是通过展开将带有状态变量的控制流图转换为有向无环图。有没有一个简单的算法呢?任何可以提供帮助的库(如networkx)?
abstract-syntax-tree - CFG 中应该包含哪些节点?
我正在为其服务器端编译器未优化的语言(LSL)编写源代码级优化器。优化器在常量折叠等某些领域工作并表现良好,但为了使其更强大,我想构建一个 CFG,以启用/简化跳转优化、死代码删除以及以后从 SSA 中受益。
现在,由于它是源代码级别的,我无法将代码转换为 3AC 之类的东西,否则我可能会创建一个实际上不如原始版本优化的版本。
所以我的问题是:我会在 CFG 中包含哪些内容?合乎逻辑的答案是存储代表整个语句的 AST 节点。我面临的问题是表达式可能会调用用户函数,而这些函数可能会改变全局变量,这会影响 SSA 表单,这就是为什么我想将这些函数作为同一图表的一部分,而不是不同的图表。
llvm - llvm - 获取 br 类型指令的标签字段中引用的基本块的第一条指令
我正在尝试编写一个检查代码控制流的通行证。给定 br 指令,我需要访问标签字段中引用的基本块。
例如,对于代码:
我得到了 IR 代表
现在,当我在 pass 中遇到这条指令时,我需要确切地知道这些标签指向的位置。谁能告诉我我该怎么做?
testing - 绘制带有输出的控制流图
我目前正在学习绘制控制流图,我不确定我是否在以下场景中正确绘制它:
对于以下代码片段,其中x
和y
是输入变量,z
是输出变量:
这就是我所做的:
这在任何方面都是正确的吗?提前致谢。
assembly - 如何使用 Intel PT 检查汇编中是否采用条件分支?
我正在运行一个程序,我想检查当有条件跳转时是否采取了分支。
我听说 IntelPT 可以使用 pt_qry_cond_branch()
函数来做到这一点。但是,我看不到任何有关如何使用它的示例。有人对此有任何想法吗?
例如,我将如何使用 Intel PT 来查看此函数中发生了什么:
我想知道如何为此使用 Intel-PT,而不是在nop
或其他检测数据的方式上设置断点以自己查找数据并计算分支条件。