[Soot-list] Obtaining the JimpleLocal from a ValueBox

Jason Ott jott002 at ucr.edu
Tue Sep 29 20:37:10 EDT 2015


I have the following Jimple:

 public boolean getFlashlightEnabled()
    {
        com.android.server.lights.LightsService$1 r0;
        int i0;
        java.io.FileInputStream $r1, r3; // I'm interested in this
        java.lang.Exception $r2;
        boolean $z0;
        r0 := @this: com.android.server.lights.LightsService$1;
     label1:
        $r1 = new java.io.FileInputStream;
        specialinvoke $r1.<java.io.FileInputStream: void
<init>(java.lang.String)>("/sys/class/leds/spotlight/brightness");  // But
my interest in $r1 and r3 are predicated upon this
        r3 = $r1;
        i0 = virtualinvoke r3.<java.io.FileInputStream: int read()>();
        virtualinvoke r3.<java.io.FileInputStream: void close()>();
        if i0 == 48 goto label2;
        $z0 = 1;
        goto label3;
     label2:
        $z0 = 0;
     label3:
        return $z0;
     label4:
        $r2 := @caughtexception;
        return 0;
        catch java.lang.Exception from label1 to label3 with label4;
    }

You can see that I am interested in the variable that, in some way or
another, uses the "/sys/class/leds/spotlight/brightness" string.  Thus, I
am interested in the variable $r1.  But I don't know that I'm interested in
$r1 until I see that $r1 is using the string that I am interested.

Now I know that $r1 is a local, more specifically a LinkedRValueBox.  I
know that the string, "/sys/class/..." is an ImmediateBox, which is
leveraged in an InvokeExprBox (specialinvoke $r1...).  What I cannot seem
to manage to figure out is how to derive the Local $r1 variable from either
the InvokeExprBox or the ImmediateBox.  Neither of them have any formal
link to $r1 (a Local) other than by parsing the string representation of
them and then going through the Locals looking for what you want.

So my question is: Is there a way to get the Local from the InvokeExprBox
or the ImmediateBox in this case, or the general case?  I can only get
ValueBoxes from anything which is of ValueBox, as defined by the ValueBox
interface.

Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20150929/1cb638e8/attachment.html 


More information about the Soot-list mailing list