Coder Social home page Coder Social logo

Missing IPCs about ic3 HOT 6 OPEN

siis avatar siis commented on May 27, 2024
Missing IPCs

from ic3.

Comments (6)

docteau avatar docteau commented on May 27, 2024 1

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.

docteau avatar docteau commented on May 27, 2024 1

No, IC3 only considers whatever is part of the Soot call graph.

from ic3.

ReyhanJB avatar ReyhanJB commented on May 27, 2024

@aegiryy @hvijay @docteau @rms5643 @npapernot

from ic3.

ReyhanJB avatar ReyhanJB commented on May 27, 2024

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.

ReyhanJB avatar ReyhanJB commented on May 27, 2024

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.

ReyhanJB avatar ReyhanJB commented on May 27, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.