[Soot-list] how to process single class file to a jimple file

毅力公司 472408570 at qq.com
Mon Mar 10 12:25:50 EDT 2014


Dear all,
I am just beginning to learn to use the Soot.
I am in trouble with how to process the single class file to a jimple file by command-line and in eclipse. Do someone can give me a help? 
screenshot are attached below~
the command-line:

how to transfer the TestInvoke.class to a jimple file?
or In eclipse:
I got a TestInvoke.class in the "sootOutput"filefolder , it was show like this:

But when transferred it  a jimple file by right-click to create a jimple file for TestInvoke.class
It was different with the the original TestInvoke.class file:
class TestInvoke extends java.lang.Object
{
    private static int calls;


    static void <clinit>()
    {
        <TestInvoke: int calls> = 0;
        return;
    }


    void <init>()
    {
        TestInvoke r0;


        r0 := @this: TestInvoke;
        specialinvoke r0.<java.lang.Object: void <init>()>();
        return;
    }


    public static void main(java.lang.String[])
    {
        java.lang.String[] r0;
        int i0, $i1;
        java.io.PrintStream $r1;
        java.lang.StringBuilder $r2, $r3, $r4;
        java.lang.String $r5;


        r0 := @parameter0: java.lang.String[];
        i0 = 0;
        goto label1;


     label0:
        staticinvoke <TestInvoke: void foo()>();
        i0 = i0 + 1;


     label1:
        if i0 < 10 goto label0;


        $r1 = <java.lang.System: java.io.PrintStream out>;
        $r2 = new java.lang.StringBuilder;
        specialinvoke $r2.<java.lang.StringBuilder: void <init>(java.lang.String)>("I made ");
        $i1 = <TestInvoke: int calls>;
        $r3 = virtualinvoke $r2.<java.lang.StringBuilder: java.lang.StringBuilder append(int)>($i1);
        $r4 = virtualinvoke $r3.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(" static calls");
        $r5 = virtualinvoke $r4.<java.lang.StringBuilder: java.lang.String toString()>();
        virtualinvoke $r1.<java.io.PrintStream: void println(java.lang.String)>($r5);
        return;
    }


    private static void foo()
    {
        int $i0, $i1;


        $i0 = <TestInvoke: int calls>;
        $i1 = $i0 + 1;
        <TestInvoke: int calls> = $i1;
        staticinvoke <TestInvoke: void bar()>();
        return;
    }


    private static void bar()
    {
        int $i0, $i1;


        $i0 = <TestInvoke: int calls>;
        $i1 = $i0 + 1;
        <TestInvoke: int calls> = $i1;
        return;
    }
}

Looking forward your help.
Thanks a lot.
Jason
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20140311/49b07354/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/octet-stream
Size: 51367 bytes
Desc: not available
Url : http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20140311/49b07354/attachment-0002.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/octet-stream
Size: 81286 bytes
Desc: not available
Url : http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20140311/49b07354/attachment-0003.obj 


More information about the Soot-list mailing list