<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Hi Dacong, </div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">I didn&#39;t modify any soot options related with Volley library. The library jar is included in the app&#39;s apk, so I think soot should be able to decompile it. </div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Thanks a lot ! </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 18, 2015 at 4:59 PM, Dacong Yan <span dir="ltr">&lt;<a href="mailto:tonywinslow1986@gmail.com" target="_blank">tonywinslow1986@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Purely based on code search:<br>
<br>
The call sites for onResponse() and onErrorResponse() are inside the<br>
Volley library: line 60 at<br>
&lt;<a href="https://android.googlesource.com/platform/frameworks/volley/+/idea133/src/com/android/volley/toolbox/StringRequest.java" target="_blank">https://android.googlesource.com/platform/frameworks/volley/+/idea133/src/com/android/volley/toolbox/StringRequest.java</a>&gt;<br>
and line 517 at<br>
&lt;<a href="https://android.googlesource.com/platform/frameworks/volley/+/idea133/src/com/android/volley/Request.java" target="_blank">https://android.googlesource.com/platform/frameworks/volley/+/idea133/src/com/android/volley/Request.java</a>&gt;.<br>
Did you include the Volley library code in your call graph<br>
construction? You may want to check that, but I&#39;m not saying you<br>
should or should not include it.<br>
<div class="HOEnZb"><div class="h5"><br>
On Wed, Feb 18, 2015 at 1:55 PM, Xinxin Jin &lt;<a href="mailto:xinxinjin89@gmail.com">xinxinjin89@gmail.com</a>&gt; wrote:<br>
&gt; As a follow up, I manually checked the jimple files generated from the apk.<br>
&gt; And in  &quot;VolleyActivity$1.jimple &quot;, I can clearly see the method body of<br>
&gt; onResponse().  That means there is no problem with jimple file, but why it<br>
&gt; is not parsed by soot (FlowDroid)?<br>
&gt;<br>
&gt; Thanks,<br>
&gt;<br>
&gt; On Wed, Feb 18, 2015 at 1:43 PM, Xinxin Jin &lt;<a href="mailto:xinxinjin89@gmail.com">xinxinjin89@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi Eric,<br>
&gt;&gt;<br>
&gt;&gt; Thanks for your reply. I checked all the reachable methods and found no<br>
&gt;&gt; place invoking onResponse and onErrorResponse.<br>
&gt;&gt;<br>
&gt;&gt; The statement that invokes StringRequest() method is :<br>
&gt;&gt;<br>
&gt;&gt; &lt;com.android.volley.toolbox.StringRequest: void<br>
&gt;&gt; &lt;init&gt;(int,java.lang.String,com.android.volley.Response$Listener,com.android.volley.Response$ErrorListener)&gt;(<br>
&gt;&gt; &quot;<a href="http://www.google.com" target="_blank">http://www.google.com</a>&quot;, $r7, $r8)<br>
&gt;&gt;<br>
&gt;&gt; Here parameters $r7, $r8 correspond to Response.Listener() and<br>
&gt;&gt; Response.ErrorListener(). Then I continued to track the definition of r7:<br>
&gt;&gt;<br>
&gt;&gt; $r7 = new edu.ucsd.mytest.VolleyActivity$1<br>
&gt;&gt;<br>
&gt;&gt; But there is no useful statement in edu.ucsd.mytest.VolleyActivity$1 ....<br>
&gt;&gt;<br>
&gt;&gt; Any ideas ?<br>
&gt;&gt;<br>
&gt;&gt; Thank you a lot !!<br>
&gt;&gt;<br>
&gt;&gt; On Wed, Feb 18, 2015 at 11:47 AM, Bodden, Eric<br>
&gt;&gt; &lt;<a href="mailto:eric.bodden@sit.fraunhofer.de">eric.bodden@sit.fraunhofer.de</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Hi Xinxin.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I think the problem is that the bytecode&#39;s structure differs from the<br>
&gt;&gt;&gt; source code&#39;s. Although in the source the two anonymous subclasses of<br>
&gt;&gt;&gt; Listener resp. ErrorListener are lexically contained in the constructor<br>
&gt;&gt;&gt; call, they are not in the bytecode. Please inspect the call to<br>
&gt;&gt;&gt; StringRequest.&lt;init&gt;. You should see references the second and third<br>
&gt;&gt;&gt; parameter both being initialized with instances of classes such as<br>
&gt;&gt;&gt; Response.Listener$1. You have to inspect the bodies of the onResponse<br>
&gt;&gt;&gt; methods in those classes.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Hope that helps,<br>
&gt;&gt;&gt; Eric<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt; On 18.02.2015, at 18:21, Xinxin Jin &lt;<a href="mailto:xinxinjin89@gmail.com">xinxinjin89@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Hi all,<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; I have an application which calls new StringRequest()of Volley library:<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; StringRequest request = new StringRequest(url,<br>
&gt;&gt;&gt; &gt;              new Response.Listener() {<br>
&gt;&gt;&gt; &gt;                  @Override<br>
&gt;&gt;&gt; &gt;                  public void onResponse(Object response) {<br>
&gt;&gt;&gt; &gt;                           Log.d(TAG, &quot;response &quot; + ((String)<br>
&gt;&gt;&gt; &gt; response).substring(0,500));<br>
&gt;&gt;&gt; &gt;              }<br>
&gt;&gt;&gt; &gt;          }, new Response.ErrorListener() {<br>
&gt;&gt;&gt; &gt;                  @Override<br>
&gt;&gt;&gt; &gt;                  public void onErrorResponse(VolleyError error) {<br>
&gt;&gt;&gt; &gt;                      Log.d(TAG, &quot;error message&quot;);<br>
&gt;&gt;&gt; &gt;            }<br>
&gt;&gt;&gt; &gt;       });<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; It contains two callbacks as its parameters: Response.Listener() and<br>
&gt;&gt;&gt; &gt; Response.ErrorListener().<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; When I parse reached methods of this application, it can only reach<br>
&gt;&gt;&gt; &gt; SootMethod StringRequest: &lt;init&gt;, but when I examine all the statements in<br>
&gt;&gt;&gt; &gt; this method, I cannot find bodies of the two registered listeners. Is there<br>
&gt;&gt;&gt; &gt; any way to get the method body of onResponse() ?<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Thank you for your help !<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; --<br>
&gt;&gt;&gt; &gt; Xinxin<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt;&gt; &gt; Soot-list mailing list<br>
&gt;&gt;&gt; &gt; <a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br>
&gt;&gt;&gt; &gt; <a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; Prof. Eric Bodden, Ph.D., <a href="http://sse.ec-spride.de/" target="_blank">http://sse.ec-spride.de/</a> <a href="http://bodden.de/" target="_blank">http://bodden.de/</a><br>
&gt;&gt;&gt; Head of Secure Software Engineering at Fraunhofer SIT, TU Darmstadt and<br>
&gt;&gt;&gt; EC SPRIDE<br>
&gt;&gt;&gt; Tel: <a href="tel:%2B49%206151%2016-75422" value="+4961511675422">+49 6151 16-75422</a>    Fax: <a href="tel:%2B49%206151%20869-127" value="+496151869127">+49 6151 869-127</a><br>
&gt;&gt;&gt; Room B5.11, Fraunhofer SIT, Rheinstraße 75, 64295 Darmstadt<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Xinxin<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Xinxin<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Soot-list mailing list<br>
&gt; <a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br>
&gt; <a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br>
&gt;<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><font face="arial, helvetica, sans-serif">Xinxin</font></div>
</div>