美文网首页
使用soot生成程序流程图和IR文件

使用soot生成程序流程图和IR文件

作者: JAVA孙剑 | 来源:发表于2019-08-07 11:14 被阅读0次

    1. 环境配置
    export SOOT_PATH=/home/jiansun/software/jar/soot-2.5.0.jar
    export SOOT_CLASS_PATH=$CLASS_DIR:$JAVA_HOME/jre/lib/rt.jar
    # 字节码文件所在的路径
    export CLASS_DIR=/home/jiansun/mydemo/javademo
    # 字节码文件名
    export CLASS_NAME=Employee
    
    1. 使用命令生成dot文件
    java -cp $SOOT_PATH soot.tools.CFGViewer --soot-class-path $SOOT_CLASS_PATH --graph=BriefBlockGraph $CLASS_NAME
    

    ​ 执行完之后会在sootOutPut文件夹下生成 方法名.dot 文件

    生成dot文件
    1. 下载graphviz工具来可视化dot文件,在Linux下安装graphviz联网使用命令:
     sudo apt-get install graphviz
    
    1. 使用dot命令,将dot文件转化为图片,就可以看到流程图了。
    dot -Tgif xxxx.dot -o xxxx.gif
    

    ​ 下面是快速排序的 Java代码和生成的流程图示例:


    快速排序流程图

    使用 soot 反编译生成 Jimple 文件和其他IR

    java -cp $SOOT_PATH soot.Main -pp -f J -cp . $CLASS_NAME
    

    反编译完成后,文件被放在sootOutPut文件夹中。

    下面是参数说明:

    -pp -prepend-classpath              将给定的soot类路径前置到默认的类路径
    -f FORMAT -output-format FORMAT     Set output format for Soot 
         J jimple                       Produce .jimple Files 
         j jimp                         Produce .jimp (abbreviated Jimple) files 
         S shimple                      Produce .shimple files 
         s shimp                        Produce .shimp (abbreviated Shimple) files 
         B baf                          Produce .baf files 
         b                              Produce .b (abbreviated Baf) files 
         G grimple                      Produce .grimple files 
         g grimp                        Produce .grimp (abbreviated Grimp) files 
         X xml                          Produce .xml Files 
         n none                         Produce no output 
         jasmin                         Produce .jasmin files 
         c class (default)              Produce .class Files 
         d dava                         Produce dava-decompiled .java files 
         t template                     Produce .java files with Jimple templates. 
    

    相关文章

      网友评论

          本文标题:使用soot生成程序流程图和IR文件

          本文链接:https://www.haomeiwen.com/subject/ojtodctx.html