<div dir="ltr"><div><div><div>Hi Steven,<br></div>We are making a tool to analyze apks and the source codes to look for parameters that are non-compliant and irregular with the software engineering principles. We have a successful running program to analyze the apks. We used soot for our work. But we failed to do so with the source codes of android applications. Any suggestion towards analyzing the source codes of android applications would be very useful. <br></div>It came to my mind that if we can modify the soot source code to make it compatible with our requirement then our work will be done. Can you tell how can we start to being able to modify the soot itself, if possible. <br></div>Thanks <br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jun 13, 2015 at 7:24 PM, Steven Arzt <span dir="ltr">&lt;<a href="mailto:Steven.Arzt@cased.de" target="_blank">Steven.Arzt@cased.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div link="blue" vlink="purple" lang="DE"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Hi Sanjay,<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d" lang="EN-US">That is correct. Soot has no components for processing Android layout files. If you want to work with Android apps in an analysis based on Soot, you can make use of the FlowDroid parser components included in the soot-infoflow-android project. The FlowDroid project, however, works on compiled APK files, not on the original source files. Generally, Soot’s bytecode / dex code front end is much more stale and up-to-date than the front end for Java source code.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d" lang="EN-US"><br>What exactly are you trying to do?<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d" lang="EN-US">Best regards,<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d" lang="EN-US">  Steven<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">Von:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> <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>Sanjay Thakur<br><b>Gesendet:</b> Samstag, 13. Juni 2015 00:59<br><b>An:</b> <a href="mailto:soot-list@CS.McGill.CA" target="_blank">soot-list@CS.McGill.CA</a><br><b>Betreff:</b> [Soot-list] Soot not able to process the source code of android applications<u></u><u></u></span></p><div><div class="h5"><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">Hello all,<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">I have been trying to analyze the source code of Android applications. The soot is not able to reference and process the non-java components (which are actually the xml components) like the TextView and the layout file. I have tried using the exclude list with &quot;R.&quot; but got no success. Here is my sample code:<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121"><u></u> <u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">Options.v().set_android_jars(pathToAndroidJarForSoot);<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">Options.v().set_soot_classpath(&quot;/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar:/home/sanjay/Android/Sdk/platforms/android-21/android.jar&quot;);<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">Options.v().set_src_prec(Options.src_prec_java);<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">Options.v().set_allow_phantom_refs(true);<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">List&lt;String&gt; excludeList = new LinkedList&lt;String&gt;();<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">excludeList.add(&quot;R.&quot;);<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">Options.v().set_exclude(excludeList);<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">Options.v().set_no_bodies_for_excluded(true);<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">Options.v().set_process_dir(Collections.singletonList(pathToDirectory));<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">Options.v().set_whole_program(true);<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">......<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">......<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121"><u></u> <u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121"><u></u> <u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121"><u></u> <u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">The errors look like the following<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">/home/sanjay/Documents/UQAM/sourcesNapks/ForSoot/app/src/main/java/forsoot/com/forsoot/MainActivity.java:17,24:<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">soot.CompilationDeathException: there were errors during parsing and/or type checking (JastAdd frontend)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">  Semantic Error: R.layout not found<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at soot.JastAddInitialResolver.formAst(JastAddInitialResolver.java:63)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">/home/sanjay/Documents/UQAM/sourcesNapks/ForSoot/app/src/main/java/forsoot/com/forsoot/MainActivity.java:17,33:<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at soot.JavaClassSource.resolve(JavaClassSource.java:54)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">  Semantic Error: no field named activity_main is accessible<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at soot.SootResolver.bringToHierarchy(SootResolver.java:230)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">/home/sanjay/Documents/UQAM/sourcesNapks/ForSoot/app/src/main/java/forsoot/com/forsoot/MainActivity.java:18,43:<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at soot.SootResolver.bringToSignatures(SootResolver.java:255)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">  Semantic Error: R.id not found<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at soot.SootResolver.bringToBodies(SootResolver.java:291)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">/home/sanjay/Documents/UQAM/sourcesNapks/ForSoot/app/src/main/java/forsoot/com/forsoot/MainActivity.java:18,48:<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at soot.SootResolver.processResolveWorklist(SootResolver.java:165)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">  Semantic Error: no field named tvMessage is accessible<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at soot.SootResolver.resolveClass(SootResolver.java:130)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">/home/sanjay/Documents/UQAM/sourcesNapks/ForSoot/app/src/main/java/forsoot/com/forsoot/MainActivity.java:26,35:<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at soot.Scene.loadClass(Scene.java:693)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">  Semantic Error: R.menu not found<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at soot.Scene.loadClassAndSupport(Scene.java:678)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">/home/sanjay/Documents/UQAM/sourcesNapks/ForSoot/app/src/main/java/forsoot/com/forsoot/MainActivity.java:26,42:<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at soot.Scene.loadNecessaryClasses(Scene.java:1351)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">  Semantic Error: no field named menu_main is accessible<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at paprika.analyzer.SootAnalyzer.init(SootAnalyzer.java:82)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">/home/sanjay/Documents/UQAM/sourcesNapks/ForSoot/app/src/main/java/forsoot/com/forsoot/MainActivity.java:38,19:<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at paprika.Main.runAnalysis(Main.java:112)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">  Semantic Error: R.id not found<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at paprika.Main.main(Main.java:79)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">/home/sanjay/Documents/UQAM/sourcesNapks/ForSoot/app/src/main/java/forsoot/com/forsoot/MainActivity.java:38,24:<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">  Semantic Error: no field named action_settings is accessible<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at java.lang.reflect.Method.invoke(Method.java:606)<u></u><u></u></span></p></div><div><p class="MsoNormal" style="line-height:19.8pt"><span style="font-size:10.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:#212121">at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)<u></u><u></u></span></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><p class="MsoNormal">-- <u></u><u></u></p><div><div><div><div><div><p class="MsoNormal"><span style="font-size:10.0pt;color:#888888">Sanjay Thakur</span><u></u><u></u></p></div><div><p class="MsoNormal"><span style="font-size:10.0pt;color:#888888">Research Intern</span><u></u><u></u></p></div><div><p class="MsoNormal"><span style="font-size:10.0pt;color:#888888">UQAM</span><u></u><u></u></p></div><div><p class="MsoNormal"><span style="font-size:10.0pt;color:#888888">Montreal, Canada</span><u></u><u></u></p></div></div></div></div></div></div></div></div></div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><span class="HOEnZb adL"><font color="#888888"><div><div dir="ltr"><div><div dir="ltr"><div><span style="color:rgb(136,136,136);font-size:13.3333339691162px">Sanjay Thakur</span></div><div><font color="#888888"><span style="font-size:13.3333330154419px">Research Intern</span></font></div><div><font color="#888888"><span style="font-size:13.3333330154419px">UQAM</span></font></div><div><font color="#888888"><span style="font-size:13.3333330154419px">Montreal, Canada</span></font></div></div></div></div></div></font></span></div></div></div></div></div></div>
</div>