[Soot-list] Obtaining the JimpleLocal from a ValueBox
Jason Ott
jott002 at ucr.edu
Wed Sep 30 12:25:19 EDT 2015
You are correct. Thank you. I'm not sure how I missed that; I have the
code that outputs that exact information.
On Wed, Sep 30, 2015 at 1:06 AM, Andrew Santosa <santosa_1999 at yahoo.com>
wrote:
> Given invkExpr of type InvokeExprBox is the invocation expression of the
> special invocation statement,
> we can obtain the list of use boxes within the expression in the following
> way:
>
> List<ValueBox> boxesList = invkExpr.getValue().getUseBoxes();
>
> One of the boxes in boxesList should be the local that you want.
>
> Best,
> Andrew
>
>
>
> On Wednesday, 30 September 2015, 10:38, Jason Ott <jott002 at ucr.edu> wrote:
>
>
> 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.
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at CS.McGill.CA
> https://mailman.CS.McGill.CA/mailman/listinfo/soot-list
> <https://mailman.cs.mcgill.ca/mailman/listinfo/soot-list>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20150930/53e0d079/attachment.html
More information about the Soot-list
mailing list