问题标签 [soot]

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 投票
2 回答
2394 浏览

llvm - 静态和动态仪表的优缺点

有许多静态和动态检测工具。Soot 是 Java 字节码的静态检测工具。Pin 和 Valgrind 是二进制文件的动态检测工具。

静态和动态检测工具的优缺点是什么?我认为静态检测工具在运行时性能方面更好,而动态工具更强大。请比较他们的能力和表现。

另外,使用检测工具与编写 LLVM 通行证有什么区别?

0 投票
0 回答
457 浏览

jvm - Jasmin 的 Soot 版本无法组装 Jasmin 程序集文件

我有来自 Jasmin SourceForge 的 Jasmin 2.4 版本和来自 Soot 项目的 Jasmin 2.4 版本(在 sable.mcgill.ca,标记为“jasminclasses”),而 Soot 版本(我需要)似乎不是好好工作。

我制作了一个简单的编译器,它最初编译为 Jasmin JVM 程序集,然后使用 Jasmin 组装成 JVM 类文件。我曾经使用 Jasmin 的 SourceForge 网站上的普通版 Jasmin,它运行良好;一切编译并正确运行。现在我已经开始使用 Soot 框架进行优化,只要我不尝试将优化后的代码转换回类文件,所有这些都很好。

由于我现在在使用Soot,所以我必须使用Soot 的Jasmin 版本,它支持Soot 使用的JasminOutputStream。Soot 的 Jasmin 版本似乎仍然应该能够以“老式”方式处理 Jasmin 文件,读取“.j”文件而不是采用输入流,但是当我尝试时(对于初始组装优化前),Soot版本失败。

如果我做

我按预期得到输出“生成:MyClass.class”。

如果我这样做(其中 jasminclasses 是 Jasmin 的烟灰版本)

我得到输出

第 5 行只是 .field public n I 它没有任何不妥之处,如上所示,它与 Jasmin 的普通版本编译得很好。

为了完整起见,这里有更多关于这一点的代码:

那里的一切都很好,并且与普通的 Jasmin 组装得很好。

有谁知道 Jasmin 的 Soot 版本是否需要不同的语法?与大多数关于 Soot 和 Jasmin 的内容一样,网络上根本没有太多内容,更不用说我正在搜索的内容了,所以我的谷歌搜索结果并不多。

提前感谢您提供的任何帮助,我真的很沮丧。我的下一步是调试 Soot 的 Jasmin 包,看看它在那里做了什么以及为什么它失败了,但我希望我现在不必为此走那么远。

0 投票
2 回答
998 浏览

scala - Scala的AOT编译还是原生代码编译?

我的 scala 应用程序需要对大型整数和双精度数组执行简单的操作,而性能是一个瓶颈。尽管我可以通过各种基准测试观察它们的结果,但我一直在努力确定某些优化何时启动(例如逃逸分析)。我很想对我的 scala 应用程序进行一些 AOT 编译,这样我就可以查看或强制执行(或实施)某些优化......或者如果可能的话编译为本机代码,这样我就可以像边界检查一样偷工减料并观察它是否有所作为。

我的问题:什么替代编译方法适用于 scala?我对 llvm、vmkit、soot、gcj 等工具感兴趣。目前谁在 scala 中成功使用了这些工具,或者这些方法目前都不兼容或维护?

0 投票
1 回答
177 浏览

dependencies - 指向分析 - 定义

我希望使用我将使用 Soot 框架构建的调用图来执行一些依赖关系分析。我在指南中读到使用“指向”分析可以提高调用图的精度。究竟什么是“指向”分析,它如何提高调用图的准确性?

0 投票
3 回答
87 浏览

testing - 如何获取测试用例

最近专注于静态分析软件,尤其是IndusSoot Java 框架。我想测试这些软件。谁能提供全面的测试用例?我认为我写的测试用例不够典型。

0 投票
2 回答
1762 浏览

java - 安卓流量分析

是否有适用于 Android 应用程序的控制流图生成器。(最好是开源的)我想对应用程序做一些流量分析。但我找不到任何这样的静态分析器。

如果没有这样的软件,可以扩展soot做Android app的静态分析。关于如何做到这一点的一些指示(特别是在制作控制流图时处理多个入口点和对 onPause、onDestroy 等的异步调用)将非常有帮助。

谢谢

0 投票
1 回答
1032 浏览

java - 尝试使用 SOOT 时出现 NoClassDefFoundError 异常

我正在尝试使用 SOOT 生成调用图。但是,当我将某个要分析的类传递给它时,会抛出异常 NoClassDefFoundError 。我正在使用以下两个教程来执行一些命令: http ://www.brics.dk/SootGuide/sootsurvivorsguide.pdf和http://www.bodden.de/2008/08/21/煤烟命令行/#obtaining

我已将要分析的 java 源代码放在 SOOT 的同一类路径中。所以当我即将执行时,我使用了“。” 指定当前目录。以下是我正在执行的命令:

即使我将 -cp 排除在外并立即调用 MainFrame,也会产生相同的错误。

有谁知道为什么会抛出这种异常?

0 投票
1 回答
336 浏览

java - 为什么使用 Eclipse Soot 插件中的 Soot 操作会出现此错误?

我是第一次尝试Soot。我按照他们网站上的说明安装了 Eclipse 插件。它似乎下载得很好。然后,我尝试使用一个简单的 Java 程序创建一个 Java 项目,以便尝试将其转换为 Jimple。但是,当我尝试此操作或任何其他 Soot 操作时,我不断收到一个错误对话框,上面写着“所选操作当前不可用”。下图:

在此处输入图像描述

我不确定是什么导致它不起作用。Java 构建路径(如下图所示)似乎包含应该需要的所有内容:

在此处输入图像描述

以前有没有人使用过 Soot 并遇到过这个问题?关于如何缓解这种情况的任何建议?


编辑:另外,当我尝试创建一个 Soot 示例项目(一个简单的 bodyTransformer)时,我收到“问题打开向导”错误:

在此处输入图像描述

0 投票
4 回答
7328 浏览

java - 如何在 Java 中创建一个简单的静态调用图?

我想生成一个简单的调用图,以便能够分析 java 中方法的执行流程。

例如,如果在代码中我能够在多个方法调用中从方法 X 转到方法 Y,那么我想生成调用图,显示从方法 X 到方法 Y 的流程。

我尝试使用 SOOT 但是我没有设法获得这个所需的调用图。有谁知道我可以用来生成此类调用图的 API?我正在使用 Eclipse,但是我不能使用插件,因为需要在多个项目中使用这个工具

非常感谢你的帮助

0 投票
2 回答
401 浏览

java - 有没有办法识别在java中调用特定方法的对象?

我需要能够识别正在调用特定方法的对象。因此,例如,如果我有以下内容

我需要能够识别变量标签中的对象实际上是调用 setText 而不是 l。我确实设法获取了调用该方法的对象的类型,在本例中是 JLabel,因为我使用 SOOT 来获取方法信息。但是我真正需要的是使用这种方法的对象。

有没有办法能够识别调用该方法的实际对象?