We all use ADB during development for debugging and admin tasks. But, what else can you find out and what can you do with it?

In this talk I will show how to use ADB as a window into the internal workings of the Android operating system. I will begin with system services, which are the core of Android, and show how to dump state, interact with them from the command line, and how to send binder messages. You can, for example, place a
phone call from the command line

At an even lower level, we have native services. These are Unix daemons that are started during early boot. You can list them, start and stop them, and even restart the Android run-time

Next, file permissions: what prevents an app or service from accessing a file? This is a story of Unix file permissions and SELinux policy. I will show how you can see the permissions and the policy, and change them – but only if you have root access

Finally, I will look at system properties. These are global variables used throughout Android to tune the framework, to record status information and to act as signals when a property changes