<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;">Hi all,</div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;">I used soot as a eclipse plugin,and I catched the call graph for apk files,but my result was incomplete.</div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;"><div style="font-size: 14.2857151031494px; line-height: 22.6666660308838px;">The following code is that how I generated the dummymainmethod:</div><div style="font-size: 14.2857151031494px; line-height: 22.6666660308838px;"><snip></div><div style="font-size: 14.2857151031494px; line-height: 22.6666660308838px;"><div>soot.G.reset();</div><div><span class="Apple-tab-span" style="white-space: pre;">                </span></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>Options.v().set_src_prec(Options.src_prec_apk);</div><div><br></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>Options.v()</div><div><span class="Apple-tab-span" style="white-space: pre;">                                </span>.set_process_dir(</div><div><span class="Apple-tab-span" style="white-space: pre;">                                                </span>Collections</div><div><span class="Apple-tab-span" style="white-space: pre;">                                                                </span>.singletonList("D:/Program Files/soot/eclipse-soot/workspace/Test/bin/test5-29.apk"));</div><div><br></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>Options.v().set_force_android_jar("D:/Program Files/soot/android-17/android--1/android.jar");</div><div><span class="Apple-tab-span" style="white-space: pre;">                </span></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>Options.v().set_output_format(0);</div><div><br></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>Options.v().set_whole_program(true);</div><div><br></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>Options.v().set_allow_phantom_refs(true);</div><div><br></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>Options.v().set_output_format(Options.output_format_none);</div><div><span class="Apple-tab-span" style="white-space: pre;">                </span></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>PhaseOptions.v().setPhaseOption("cg", "enabled:true");</div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>PhaseOptions.v().setPhaseOption("cg", "implicit-entry:false");</div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>PhaseOptions.v().setPhaseOption("cg", "verbose:true");</div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>PhaseOptions.v().setPhaseOption("cg", "jdkver:7");</div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>PhaseOptions.v().setPhaseOption("cg", "all-reachable:true");</div><div><span class="Apple-tab-span" style="white-space: pre;">                </span></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>Scene.v().loadNecessaryClasses();</div><div><br></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span><span style="color: rgb(255, 0, 0);">SootMethod entryPoint = app.getEntryPointCreator().createDummyMain();</span></div><div><br></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>Options.v().set_main_class(entryPoint.getSignature());</div><div><br></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>Scene.v().setEntryPoints(Collections.singletonList(entryPoint));</div><div><br></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>PackManager.v().runPacks();</div><div><br></div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>System.out.println(Scene.v().getCallGraph().size());</div><div><span class="Apple-tab-span" style="white-space: pre;">                </span>CallGraph cg = Scene.v().getCallGraph();</div></div><div style="font-size: 14.2857151031494px; line-height: 22.6666660308838px;"></snip></div><div style="font-size: 14.2857151031494px; line-height: 22.6666660308838px;"><br></div></div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;">The following is my call graph result for one apk:</div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;"><p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;mso-pagination:
none;layout-grid-mode:both;text-autospace:none"><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><dummyMainClass:
void
dummyMainMethod()>---invoke---<com.example.test.DisplayContactActivity1:
void <init>()></span><span lang="EN-US" style="font-size:10.5pt;
font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;mso-pagination:
none;layout-grid-mode:both;text-autospace:none"><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><com.example.test.DisplayContactActivity1:
void <init>()>---invoke---<android.telephony.SmsManager:
android.telephony.SmsManager getDefault()></span><span lang="EN-US" style="font-size:10.5pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;mso-pagination:
none;layout-grid-mode:both;text-autospace:none"><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><com.example.test.DisplayContactActivity1:
void <init>()>---invoke---<android.app.Activity: void
<init>()></span><span lang="EN-US" style="font-size:10.5pt;font-family:
Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;mso-pagination:
none;layout-grid-mode:both;text-autospace:none"><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><com.example.test.MainActivity:
void <init>()>---invoke---<android.app.Activity: void
<init>()></span><span lang="EN-US" style="font-size:10.5pt;font-family:
Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;mso-pagination:
none;layout-grid-mode:both;text-autospace:none"><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><dummyMainClass:
void dummyMainMethod()>---invoke---<com.example.test.MainActivity: void
onCreate(android.os.Bundle)></span><span lang="EN-US" style="font-size:10.5pt;
font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;mso-pagination:
none;layout-grid-mode:both;text-autospace:none"><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><com.example.test.MainActivity:
void onCreate(android.os.Bundle)>---invoke---<android.app.Activity: void
onCreate(android.os.Bundle)></span><span lang="EN-US" style="font-size:10.5pt;
font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;mso-pagination:
none;layout-grid-mode:both;text-autospace:none"><span style="mso-ignore:vglayout;
position:absolute;z-index:251658240;margin-left:-11px;margin-top:1px;
width:1081px;height:263px"><img width="1081" height="263" src="file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif" v:shapes="_x0000_s1026"></span><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><com.example.test.DisplayContactActivity1:
void onCreate(android.os.Bundle)>---invoke---<java.lang.String:
java.lang.String valueOf(int)></span><span lang="EN-US" style="font-size:10.5pt;
font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;mso-pagination:
none;layout-grid-mode:both;text-autospace:none"><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><com.example.test.DisplayContactActivity1:
void onCreate(android.os.Bundle)>---invoke---<java.lang.StringBuilder:
void <init>(java.lang.String)></span><span lang="EN-US" style="font-size:10.5pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;mso-pagination:
none;layout-grid-mode:both;text-autospace:none"><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><com.example.test.DisplayContactActivity1:
void onCreate(android.os.Bundle)>---invoke---<android.widget.TextView:
void <init>(android.content.Context)></span><span lang="EN-US" style="font-size:10.5pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;mso-pagination:
none;layout-grid-mode:both;text-autospace:none"><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><com.example.test.DisplayContactActivity1:
void
onCreate(android.os.Bundle)>---invoke---<com.example.test.DisplayContactActivity1:
int add(int,int)></span><span lang="EN-US" style="font-size:10.5pt;font-family:
Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;mso-pagination:
none;layout-grid-mode:both;text-autospace:none"><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><com.example.test.DisplayContactActivity1:
void onCreate(android.os.Bundle)>---invoke---<android.app.Activity: void
onCreate(android.os.Bundle)></span><span lang="EN-US" style="font-size:10.5pt;
font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;mso-pagination:
none;layout-grid-mode:both;text-autospace:none"><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><com.example.test.DisplayContactActivity1:
void onCreate(android.os.Bundle)>---invoke---<java.lang.String:
java.lang.String valueOf(java.lang.Object)></span><span lang="EN-US" style="font-size:10.5pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:0cm;margin-bottom:.0001pt;mso-pagination:
none;layout-grid-mode:both;text-autospace:none"><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><dummyMainClass:
void dummyMainMethod()>---invoke---<com.example.test.MainActivity: void
<init>()></span><span lang="EN-US" style="font-size:10.5pt;font-family:
Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10.5pt; font-family: Consolas;"><dummyMainClass: void
dummyMainMethod()>---invoke---<com.example.test.DisplayContactActivity1:
void onCreate(android.os.Bundle)></span><span lang="EN-US" style="font-size:
10.5pt"><o:p></o:p></span></p></div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;">I have two problems about the incomplete call graph:</div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;">1. The call graph can just present the reachable method from the dummyMainMethod.But I want to catch the call graph from other mehod.I think I should change the entrypoint,but I don't know how to do it.For example,the following is the sourse code ship of the executed apk:</div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;"><snip></div><div><div>public void onClick(View a) {</div><div> <span class="Apple-tab-span" style="white-space:pre">        </span>String name=DisplayContactActivity1.catchContactNameByNumber(MainActivity.this);</div><div> <span class="Apple-tab-span" style="white-space:pre">        </span>Intent intent = new Intent(MainActivity.this,DisplayContactActivity1.class); </div><div> <span class="Apple-tab-span" style="white-space:pre">        </span>startActivity(intent);</div><div> }</div></div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;"></snip></div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;">The "onClick" method will execute when you click the corresponding button.So,I don't know how to generate the call graph from the "onClick" method. </div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;"><br></div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;">2. As presented in the result, targets of the method <span style="font-family: Consolas; font-size: 14.2857151031494px; line-height: 22.6666660308838px;"><com.example.test.DisplayContactActivity1: void onCreate(android.os.Bundle)>is not complete.The following is jimple code for the "onClick" method:</span></div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;"><span style="font-family: Consolas; font-size: 14.2857151031494px; line-height: 22.6666660308838px;"><snip></span></div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;"><p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US">protected void
onCreate(android.os.Bundle){</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US">
com.example.test.DisplayContactActivity1 $r0;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> android.os.Bundle $r1;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> android.widget.TextView $r2, r7;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> int $i0;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> java.lang.String $r3, $r5;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> android.telephony.SmsManager $r4;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> java.lang.StringBuilder $r6, r8;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> android.content.Context r9;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> $r0 := @this:
com.example.test.DisplayContactActivity1;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> $r1 := @parameter0: android.os.Bundle;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> <span style="color:red">specialinvoke
$r0.<android.app.Activity: void onCreate(android.os.Bundle)>($r1);<o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> <span style="color:red">$i0 =
virtualinvoke $r0.<com.example.test.DisplayContactActivity1: int
add(int,int)>(1, 2);<o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> <span style="color:red"> $r3 = staticinvoke <java.lang.String:
java.lang.String valueOf(int)></span>($i0);</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> r7 = new android.widget.TextView;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> $r2 = r7;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> r9 = (android.content.Context) $r0;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> <span style="color:red"> specialinvoke r7.<android.widget.TextView:
void <init>(android.content.Context)>(r9);<o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> virtualinvoke
$r2.<android.widget.TextView: void setTextSize(float)>(40.0F);</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> virtualinvoke
$r2.<android.widget.TextView: void setText(java.lang.CharSequence)>($r3);</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> virtualinvoke
$r0.<com.example.test.DisplayContactActivity1: void
setContentView(android.view.View)>($r2);</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> $r4 = $r0.<com.example.test.DisplayContactActivity1:
android.telephony.SmsManager smsManager>;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> $r5 =
$r0.<com.example.test.DisplayContactActivity1: java.lang.String
phoneNumber>;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> r8 = new java.lang.StringBuilder;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> <span style="color:red">$r3 =
staticinvoke <java.lang.String: java.lang.String
valueOf(java.lang.Object)>($r3);<o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> <span style="color:red"> specialinvoke r8.<java.lang.StringBuilder:
void <init>(java.lang.String)>($r3);<o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> $r6 = virtualinvoke
r8.<java.lang.StringBuilder: java.lang.StringBuilder
append(java.lang.String)>("heoo");</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> $r3 = virtualinvoke
$r6.<java.lang.StringBuilder: java.lang.String toString()>();</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> virtualinvoke
$r4.<android.telephony.SmsManager: void sendTextMessage(java.lang.String,java.lang.String,java.lang.String,android.app.PendingIntent,android.app.PendingIntent)>($r5,
null, $r3, null, null);</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> return;</span></p>
<p class="MsoNormal" style="line-height:11.0pt"><span lang="EN-US"> }</span></p></div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;"><span style="font-family: Consolas; font-size: 14.2857151031494px; line-height: 22.6666660308838px;"></snip></span></div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;">Where the code of red color was presented in my result,but the others was not. I don't know how to deal with it.</div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;"><br></div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;">Please help me!I am so appreciated!!</div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;"><br></div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;">Best regards!!</div><div style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; line-height: 1.7;">ConlyXia</div></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>