soot入门
1. HelloWorld生成Jimple
1.1 创建Helloworld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
1.2 编译java文件,生成bytecode
javac HelloWorld.java
此时src目录下,通过javac编译生成HelloWorld.class字节码文件
1.3 生成Jimple文件
拷贝soot.jar到当前目录
执行命令:
java -cp .\soot.jar soot.Main -pp -cp . -f J HelloWorld
其中:
-cp .\soot.jar: 指定soot class路径
-pp: 指定soot搜索的Java路径
-cp . : 指定要分析项目的路径,.表示当前路径
-f J: 指定输出文件的类型,为Jimple
HelloWorld: 指定需要分析的class文件

1.4 查看Jimple文件
当面目录下会自动生成sootOutPut文件夹,文件夹下会有刚生成好的HelloWorld.jimple文件

生成的Jimple文件内容如下:
public class HelloWorld extends java.lang.Object
{
public void <init>()
{
HelloWorld r0;
r0 := @this: HelloWorld;
specialinvoke r0.<java.lang.Object: void <init>()>

本文介绍如何使用Soot工具进行Java程序分析,包括生成Jimple中间代码及VFG控制流图。首先通过HelloWorld示例展示Jimple的生成过程,接着通过复杂代码示例演示如何生成控制流图。
入门&spm=1001.2101.3001.5002&articleId=127175066&d=1&t=3&u=97e54ebca28a4f9ba46111ffaeb6abe6)
876

被折叠的 条评论
为什么被折叠?



