Comments (6)
In your first example, it looks like you have a dynamically-registered broadcast receiver that is itself sending an intent. Have you actually registered it somewhere? Even if you have, I'm not sure that the initial call graph construction looks at the types of the receiver in registerReceiver instructions (so it might not have realized that the onReceive method is ever called). It is possible that you would need another iteration of the analysis to do this, after properly patching things. I don't remember the details of IccTA, but since it does connect components for you it might do what you need or part of it.
Regards,
Damien
from ic3.
No, IC3 only considers whatever is part of the Soot call graph.
from ic3.
@aegiryy @hvijay @docteau @rms5643 @npapernot
from ic3.
This is the output of the IC3 on my app:
out.txt
This is the protobuf file generate by IC3 for my app:
edu.uci.seal.testapp_1.txt
None of my classes are identified as phantom class and all the calls are reachable (I checked since these two are the main reasons of preventing IC3 to identify calls)
from ic3.
As another example, IC3 fails to find the following ICC communication:
private void contactSpinner(){
Spinner spinner = (Spinner) findViewById(R.id.spinner_contact);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if(!parent.getItemAtPosition(position).toString().equals("Contact")){
Intent intent = new Intent(getApplicationContext(), DisplayContactActivity.class);
intent.putExtra(EXTRA_MESSAGE, parent.getItemAtPosition(position).toString());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) { }
});
}
The method "contactSpinner" is called inside the "onCreate" method of an activity. Therefore, "DisplayContactActivity" should be listed as an exit-point for the activity that implements this method.
from ic3.
Thank you very much, @docteau.
Looking more closely to the call graph generated by soot, I can see that there is no corresponding node in the call graph corresponding to onCreate method of broadcast receiver in the first example, and onItemSelected method in the second example. So, if an entry point is missed in soot analysis, IC3 does not consider it for further analysis?
from ic3.
Related Issues (20)
- The results of IC3 HOT 12
- IC3 failed in Windows soot.CompilationDeathException:Couldn't resolve clas spath entry HOT 2
- Analysis Exception HOT 1
- IC3 returns NullPointerException on a simple app
- IC3 gives me the Manifets file information only HOT 11
- ic3-0.2.0 can not parse intent in the callback method in the layout XML files. HOT 4
- Can not find edu.psu.cse.siis.ic3.Ic3Data; HOT 2
- Is this a bug in ic3-0.2.0 ? The same apk can be solved well in ic3-0.1.0 HOT 1
- What is the exporting folder "sootOutput" ? HOT 1
- Tutorial or any guide on how to use IC3 and its working HOT 1
- Unresolved strings since aapt2
- `Ran into a constructor generation loop` when trying to generate ICC model
- Wrong ExitComponents in results
- obtain Dare HOT 1
- How to interpret ic3 results
- ic3-0.2.0.jar can not run HOT 1
- NullPointerException HOT 1
- The website provided is no longer accessible HOT 2
- Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ic3.