<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Sprechblasentext Zchn";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.E-MailFormatvorlage17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.SprechblasentextZchn
        {mso-style-name:"Sprechblasentext Zchn";
        mso-style-priority:99;
        mso-style-link:Sprechblasentext;
        font-family:"Tahoma","sans-serif";
        mso-fareast-language:DE;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hi Xinxin,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>One possibility would be to extract them from the APK, place them on disk and add them to the Soot classpath.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Best regards,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>  Steven<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Von:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Xinxin Jin [mailto:xinxinjin89@gmail.com] <br><b>Gesendet:</b> Donnerstag, 19. Februar 2015 10:15<br><b>An:</b> Steven Arzt<br><b>Cc:</b> Dacong Yan; Soot list<br><b>Betreff:</b> Re: [Soot-list] Any way to get the body of callback methods (not android default handlers) ?<o:p></o:p></span></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><div><div><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>Hi Steven,<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>Thank you very much ! Finally I got the reason...&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>In this case, how can I include the required jar into my analysis ?<o:p></o:p></span></p></div></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p><div><p class=MsoNormal>On Thu, Feb 19, 2015 at 12:54 AM, Steven Arzt &lt;<a href="mailto:Steven.Arzt@cased.de" target="_blank">Steven.Arzt@cased.de</a>&gt; wrote:<o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hi all,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><br>Soot at the moment does not load any additional JAR files from the APK, so the library will be missing and the callgraph will be incomplete. In the long run, we should have an option to merge all JAR files (and additional dex files as well) contained in the APK into the Scene.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Best regards,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp; Steven</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Von:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> <a href="mailto:soot-list-bounces@CS.McGill.CA" target="_blank">soot-list-bounces@CS.McGill.CA</a> [mailto:<a href="mailto:soot-list-bounces@CS.McGill.CA" target="_blank">soot-list-bounces@CS.McGill.CA</a>] <b>Im Auftrag von </b>Xinxin Jin<br><b>Gesendet:</b> Donnerstag, 19. Februar 2015 02:08<br><b>An:</b> Dacong Yan<br><b>Cc:</b> Soot list<br><b>Betreff:</b> Re: [Soot-list] Any way to get the body of callback methods (not android default handlers) ?</span><o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>&nbsp;<o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-family:"Arial","sans-serif"'>Hi Dacong,&nbsp;</span><o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-family:"Arial","sans-serif"'>&nbsp;</span><o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-family:"Arial","sans-serif"'>I didn't modify any soot options related with Volley library. The library jar is included in the app's apk, so I think soot should be able to decompile it.&nbsp;</span><o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-family:"Arial","sans-serif"'>&nbsp;</span><o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-family:"Arial","sans-serif"'>Thanks a lot !&nbsp;</span><o:p></o:p></p></div></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>&nbsp;<o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>On Wed, Feb 18, 2015 at 4:59 PM, Dacong Yan &lt;<a href="mailto:tonywinslow1986@gmail.com" target="_blank">tonywinslow1986@gmail.com</a>&gt; wrote:<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>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'm not saying you<br>should or should not include it.<o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><br>On Wed, Feb 18, 2015 at 1:55 PM, Xinxin Jin &lt;<a href="mailto:xinxinjin89@gmail.com" target="_blank">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&nbsp; &quot;VolleyActivity$1.jimple &quot;, I can clearly see the method body of<br>&gt; onResponse().&nbsp; 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" target="_blank">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" target="_blank">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's structure differs from the<br>&gt;&gt;&gt; source code'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" target="_blank">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;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new Response.Listener() {<br>&gt;&gt;&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override<br>&gt;&gt;&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void onResponse(Object response) {<br>&gt;&gt;&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Log.d(TAG, &quot;response &quot; + ((String)<br>&gt;&gt;&gt; &gt; response).substring(0,500));<br>&gt;&gt;&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&gt;&gt;&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }, new Response.ErrorListener() {<br>&gt;&gt;&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override<br>&gt;&gt;&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void onErrorResponse(VolleyError error) {<br>&gt;&gt;&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.d(TAG, &quot;error message&quot;);<br>&gt;&gt;&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&gt;&gt;&gt; &gt;&nbsp; &nbsp; &nbsp; &nbsp;});<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" target="_blank">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" target="_blank">+49 6151 16-75422</a>&nbsp; &nbsp; Fax: <a href="tel:%2B49%206151%20869-127" target="_blank">+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" target="_blank">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;<o:p></o:p></p></div></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><br><br clear=all><o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>&nbsp;<o:p></o:p></p></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>-- <o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-family:"Arial","sans-serif"'>Xinxin</span><o:p></o:p></p></div></div></div></div></div></div></div><p class=MsoNormal><br><br clear=all><o:p></o:p></p><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><p class=MsoNormal>-- <o:p></o:p></p><div><p class=MsoNormal><span style='font-family:"Arial","sans-serif"'>Xinxin</span><o:p></o:p></p></div></div></div></body></html>