使用soot命令行生成CFG

来源:互联网 发布:603881数据港股吧 编辑:程序博客网 时间:2024/04/29 08:07
<pre name="code" class="java">//Test.javapublic class Test {public static void main(String[] args) {int i,j,k;i = 5;j = 4;k = 3;if(i < 10){i ++;j ++;k ++;}else{i --;j --;k --;}i = i+j+k;return;}}


一、生成一般java文件的CFG

    1. 生成.class文件 在sootOutput文件夹下

                           java -cp Sootexecutable.jar soot.Main -cp . -pp Test

    2. 进入sootOutput文件夹,生成.dot文件

                           java -cp Sootexecutable.jar soot.tools.CFGViewer -cp . -pp Test
    3. 生成图片文件

                           dot -Tpng -o Test.png void\ main\(java.lang.String\[\]\).dot


二、生成android apk的CFG

        http://www.abartel.net/dexpler/

    1. 下载需要的android.jar:https://github.com/Sable/android-platforms

    2.  对apk中的方法进行处理

               java -cp soot-trunk.jar soot.tools.CFGViewer --graph=CompleteBlockGraph -android-jars ./android-platforms-master/android-17/ -allow-phantom-refs -src-prec apk -ire -f J -process-dir snake.apk

    3. 生成对应方法的CFG(Jimple code)

                dot -Tpdf ./sootOutput/void\ updateWalls\(\).dot  > ./sootOutput/void\ updateWalls\(\).dot.pdf

0 0
原创粉丝点击