问题标签 [dynamic-analysis]

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 投票
4 回答
6356 浏览

code-analysis - 实际存在哪些程序切片工具?

我刚刚被介绍到“程序切片”这个术语。人们想要这样的功能是完全有道理的,但它是否存在于任何地方?

这个词现在已经 20 岁了,我看到有很多出版物、研究论文等。但实际的工具在哪里?人们实际上是在将这个概念付诸实践,还是只是在学术上研究它?

那里有什么,什么语言?

编辑:我想我在寻找什么,我会奖励作为接受的答案,是对一些出版物/组织/等的引用,这些出版物/组织/等特别适用于程序切片并维护工具/技术/等列表。

0 投票
1 回答
463 浏览

security - 静态分析无法捕捉到的问题的子集是什么?

我试图了解静态分析和动态分析之间的区别,以执行程序流,以检测安全漏洞。

很明显,动态分析的主要弱点是它无法探索程序可以进入的所有可能状态,因为它依赖于使用特定输入集实际运行程序。

但是,静态分析似乎可以推理所有可能的程序状态,因此我无法设想静态分析可能会失败的情况,即使我确信这种情况确实存在。我看过的大多数参考资料似乎都含糊地说“抽象状态分析”不如动态分析所能提供的精确,但这对我来说太蓬松了。

任何人都可以提供一个简单的解释,并提供静态分析失败和需要动态分析的具体示例吗?

0 投票
1 回答
183 浏览

c# - 可以动态分析谓词吗?

假设我有这三个谓词:

从人类的角度来看,说它是微不足道的,pred1并且pred2是等价的,而pred3不是。等效,我的意思是对于每个可能的输入值,两者输出的值都是pred1相同pred2的。

我想计算给定谓词的唯一哈希;两个等价的谓词应该具有相同的散列(like pred1and pred2),两个不等价的谓词不应该(like pred1and pred3)。

以前是否已经做过(同样,使用 .NET 语言)?我知道副作用基本上是这种分析的祸根;但是如果我们“禁止”副作用,它可以在 .NET 中(迅速)完成吗?

满足此要求的最佳方法是什么?

0 投票
1 回答
316 浏览

c++ - C++ 中对象状态的重构

我想在 LLVM 的帮助下使用 C++ 中的自动单元测试生成方法。该方法应在对被测应用程序 (AUT) 进行动态分析期间自动获取特定对象的状态。记录数据后,我想编写测试。在这里,测试应该在执行被测方法/代码之前使用记录的测试数据重建对象作为设置。

对于对象状态,我指的是对象的所有成员变量值,包括对其他对象的引用(为此我还需要获取和重建整个对象状态)。但是,由于所有成员值都包括私有成员变量的值,所以我遇到了一个问题。据我所知,在 C++ 中无法访问私有成员变量。也就是说,除非所讨论的对象类型是任何“我的对象类型”的朋友,或者为其私有成员提供直接访问功能。

实际上,对于已经在 AUT 的源代码中声明的类型,我可以解决这个问题。在这里,我可以使用 LLVM 在编译期间使用必要的代码来检测类型。但是,我不能对 AUT 使用的预编译库中的引用类型执行此操作。

因此,我的问题是:您知道如何记录和重建我没有源代码的任意对象的完整状态吗?直接复制内存有帮助吗?

由于我的方法实际上是基本(自动)单元测试生成,我确信必须有办法在 C++ 中实现它。毕竟,这类生成器已经用 Java 和 C# 实现了。

0 投票
1 回答
3143 浏览

ios - iOS 项目:静态/动态代码分析和调用图

我正在为 iOS 项目寻找一些方便的代码分析工具,尤其是。进行静态分析、动态分析和生成调用图。在我到目前为止的调查中,我发现

是否有任何其他开源工具可用于我错过的案例?还有没有人成功地为objective-c iOS项目尝试过上述任何一种方法?

谢谢

0 投票
0 回答
674 浏览

static-analysis - 静态代码分析和动态分析有什么区别?

我只是想知道静态程序分析和动态分析有什么区别。这两个是如何完成的?

0 投票
3 回答
322 浏览

c - 使用运行时信息(例如 JVM)加速编译程序,是吗?

Java 程序在特定任务中的性能优于 C 等编译型编程语言。这是因为 JVM 具有运行时信息,并在必要时进行 JIT 编译(我猜)。

(例如:http ://benchmarksgame.alioth.debian.org/u32/performance.php?test=chameneosredux )

编译语言有类似的东西吗?(我首先对C感兴趣)

编译源代码后,开发人员运行它并尝试模仿典型的工作负载。一个工具收集有关运行的信息,然后根据这些数据,它再次重新编译。

0 投票
0 回答
61 浏览

php - 如何在运行时动态拦截 PHP 中的代码?

我需要一个 PHP 工具、扩展或其他东西,它可以让我动态分析 PHP 脚本中正在执行的所有代码(不是静态分析工具),例如:

  • 我有一个接口,其中包含一些方法和一些实现该接口的类,我需要在运行时拦截接口方法的方法调用,查看接口的哪个实现调用了实现的方法(具有命名空间的类),什么是参数值,方法做什么,返回值是什么,在调用此方法之前执行了什么,之后将执行什么等等……;
  • 我有一个对象实例,它写入和读取其属性,我需要以上述方法所述的奇特方式拦截属性读/写、变量赋值(查看之前执行的内容,之后将执行的内容, ETC...);
  • 截取一个语句例如一个echo语句,看看语句之前发生了什么,语句的表达式是什么(带变量插值),这个语句之后要执行什么;
  • 分析 if-else、if-else if、for、while、do-while、case-switch 等条件,以确定使用了哪些操作数以及它们的值、使用了哪些运算符等。 .

所以,像这样的东西。可能吗?我认为它可以使用 来实现PHP ticks,但在我看来,它似乎有点不适合目的,或者更好地不可能实现目标(如果我有一个declare(ticks=1)并且我注册了一个刻度处理程序,我可以在每次执行语句时调用它,但不适用于 ifs、fors、whiles 等......,我无法分析正在执行的代码......)

你能给我一些建议吗?

感谢关注!

编辑: 我不是在寻找调试器,我需要一些我可以在代码中处理的东西,例如分析它并在某些不符合预期的情况下抛出异常。

0 投票
4 回答
1880 浏览

security - 符号执行和污点分析之间的差距是什么?

我最近阅读了EJ Schwartz 博士的一篇题为“所有你想知道的关于动态污点分析和正向符号执行(但可能不敢问)”的论文。在论文中,他主要讨论了它们在二进制级别安全上下文中的应用。

我很好奇动态污点分析正向符号执行之间的确切区别。

据我所知,只要存储在 x 中的信息传输到对象 y ,污点分析就会跟踪从对象 x( source ) 到对象 y( sink ) 的信息流。所以主要关心的是什么对象可以被源传递地影响。而符号执行将一些输入视为符号值,并尝试用符号值来表达其他变量;因此它回答符号输入影响后续程序的条件。

我可以看到,在二进制层面,污点分析经常被提到返回地址覆盖导致的漏洞;而符号执行可以处理更多类型的易受攻击的问题,例如整数溢出运行时断言错误资源泄漏(例如,内存泄漏、文件打开/关闭)、缓冲区溢出

然而,现代污点分析似乎不仅仅涉及数据流分析,它们大多会跟踪控制流条件;在几个漏洞检测场景中,受污染的输入也表示为符号值,并像符号执行一样传播。另一方面,由于底层约束求解器和执行/解释运行时的限制,符号执行引擎不能完全使用由不同路径条件分隔的符号值;因此,它们无法达到预期的高分支路径覆盖率。

那么在一般情况下,是否可以说污点分析一种粗略的符号执行,或者说符号执行一种精确的污点分析呢?

0 投票
1 回答
1056 浏览

c++ - 是否可以使用 Dtrace 探测 C++ 类中的条目?

我想看看程序何时使用 Dtrace 进入一个类。

例如:

它在程序myProgram进入函数function时触发,现在我如何编写一个在程序进入类而不是函数时触发的探针?

我试过了: dtrace -c './myProgram' -n 'pid$target:myProgram:className:entry' 但它不起作用