55
Android Internals Lecture 3 Security of Mobile Devices 2020 SMD Android Internals, Lecture 3 1/55

Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

  • Upload
    others

  • View
    21

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Android InternalsLecture 3

Security of Mobile Devices

2020

SMD Android Internals, Lecture 3 1/55

Page 2: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Android Arhitecture

Linux Kernel

Binder

Android Framework

Managers

SMD Android Internals, Lecture 3 2/55

Page 3: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Outline

Android Arhitecture

Linux Kernel

Binder

Android Framework

Managers

SMD Android Internals, Lecture 3 3/55

Page 4: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Android Architecture

SMD Android Internals, Lecture 3 4/55

Page 5: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Outline

Android Arhitecture

Linux Kernel

Binder

Android Framework

Managers

SMD Android Internals, Lecture 3 5/55

Page 6: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Linux Kernel

I ”Androidized” kernel

I Hundreds of patches over the standard kernel

I Device-specific functionality, fixes, enhancements

I Android Mainlining Project / Android Upstreaming Project

I Many features get into the mainline kernel

SMD Android Internals, Lecture 3 6/55

Page 7: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Androidisms

I Wakelocks

I Low-Memory Killer

I Binder

I Anonymous Shared Memory

I Alarm

I RAM Console

I Paranoid Networking

SMD Android Internals, Lecture 3 7/55

Page 8: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Wakelocks

I On desktops and laptopsI The user decides when the system goes to sleep

I The Android kernel goes to sleep as often as possibleI Sometimes you want to keep the system from going to sleep

I Input from the user, critical operations

I Wakelocks keep the system awake

SMD Android Internals, Lecture 3 8/55

Page 9: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Wakelocks

I A wakelock must be obtained by the application when it needsto stay awake

I Apps use abstractions that handle lockingI Apps can request wakelocks directly from PowerManager

ServiceI Device drivers call in-kernel wakelock primitives

I Equivalent included in mainline, from Linux 3.5I AutosleepI epoll() flag EPOLLWAKEUP

SMD Android Internals, Lecture 3 9/55

Page 10: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Low-Memory Killer

I Linux has Out-of-memory (OOM) killerI Low-Memory Killer:

I Prevents the activation of the OOM killerI Kills processes with components unused for a long timeI System unlikely to run out of memoryI Included in mainline, from Linux 3.10

SMD Android Internals, Lecture 3 10/55

Page 11: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Low-Memory Killer

I Based on OOM adjustments mechanismI Different OOM kill priorities for different processes

I The userspace may control OOM killing policies

I Policies applied at startup by init

I Modified and enforced by Activity Manager

SMD Android Internals, Lecture 3 11/55

Page 12: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Low-Memory Killer

I Levels assigned to processes based on their componentsI Levels from -17 to 15 (high -> killed)

I Threshold (MinFree) for each type of processI Foreground app - application in foregroundI Visible app - visible but not in foregroundI Secondary server - serviceI Hidden app - hidden, needed by a running appI Content provider - provide dataI Empty app - app not active

I Starts killing when the threshold is reached

SMD Android Internals, Lecture 3 12/55

Page 13: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Anonymous Shared Memory (ashmem)

I IPC mechanism

I SysV IPC can lead to resource leakage in the kernel(vulnerability)

I File-based, reference-countedI Similar to POSIX SHM, differences:

I Uses reference counting to destroy the memory regionsI Shrink mapped regions when the system needs memoryI To shrink a region it must be unpinned

SMD Android Internals, Lecture 3 13/55

Page 14: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Anonymous Shared Memory (ashmem)

I First process creates region, uses Binder to share descriptorwith other processes

I System services rely on ashmem, through IMemory interfaceI Surface Flinger, Audio Flinger

I Driver included in the staging tree from Linux 3.3

SMD Android Internals, Lecture 3 14/55

Page 15: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Alarm

I Uses the RTC and HRT functionalitiesI setitimer()

I Generate a signal when the time expiresI Based on HRTI Does not work when the system is suspendedI The application receives the signal when the device wakes up

SMD Android Internals, Lecture 3 15/55

Page 16: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Alarm

I Using RTC, the alarm will be fired even if the system issuspended

I RTC hardware deviceI /dev/rtc - ioctl() calls

I Uses HRT by default

I When the system is about to suspend, it uses RTC

I Apps use alarms even when the system is suspended

SMD Android Internals, Lecture 3 16/55

Page 17: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Alarm

I /dev/alarm character device, ioctl()I SystemClock, AlarmManager class rely on the driver

I SystemClock - obtain and set timeI AlarmManager - provide alarms to apps

I The driver and AlarmManager use WakeLocksI The app that receives the alarm runs before the system is

suspended again

I Included in mainline, from Linux 3.20

SMD Android Internals, Lecture 3 17/55

Page 18: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Paranoid Networking

I Standard LinuxI Processes are allowed to create sockets and access the network

I AndroidI Restrict access to the networkI Based on the group of the caller process

SMD Android Internals, Lecture 3 18/55

Page 19: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Paranoid Networking - GIDs

I AID_INET - AF_INET and AF_INET6 socketsI android.permission.INTERNET

I AID_NET_RAW - raw INET socketsI AID_NET_ADMIN - configuration of network interfaces and

routing tablesI android.permission.NET_ADMIN

SMD Android Internals, Lecture 3 19/55

Page 20: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Paranoid Networking - GIDs

I AID_NET_BT - Bluetooth socketsI android.permission.BLUETOOTH

I AID_NET_BT_ADMIN - configure BluetoothI android.permission.BLUETOOTH_ADMIN

SMD Android Internals, Lecture 3 20/55

Page 21: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Paranoid Networking - Permissions

I Association between permissions and GIDs

I /etc/permissions/platform.xml

<p e rm i s s i o n name=”and ro i d . p e rm i s s i o n .BLUETOOTH ADMIN” ><group g i d=”ne t b t adm in ” />

</pe rm i s s i on><p e rm i s s i o n name=”and ro i d . p e rm i s s i o n .BLUETOOTH” >

<group g i d=”n e t b t ” /></pe rm i s s i on><p e rm i s s i o n name=”and ro i d . p e rm i s s i o n . INTERNET” >

<group g i d=” i n e t ” /></pe rm i s s i on><p e rm i s s i o n name=”and ro i d . p e rm i s s i o n .NET ADMIN” >

<group g i d=”net admin ” /></pe rm i s s i on>

SMD Android Internals, Lecture 3 21/55

Page 22: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Outline

Android Arhitecture

Linux Kernel

Binder

Android Framework

Managers

SMD Android Internals, Lecture 3 22/55

Page 23: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Binder History

I RPC mechanism

I Initially in BeOS (then bought by Palm)

I OpenBinder project

I OpenBinder developers working in Android teamI Android Binder does not derive from OpenBinder

I Clean re-write of the same functionality

I OpenBinder documentation for understanding the mechanism

I Binder driver in the mainline from kernel 3.19

SMD Android Internals, Lecture 3 23/55

Page 24: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

RPC principles

SMD Android Internals, Lecture 3 24/55

Page 25: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Binder

I Remote object invocationI Remote services as objectsI Interface definition and reference to it

I Cornerstone of Android architectureI Apps talk to systems servicesI Apps talk to application services

I Developers don’t use the Binder directly

I Use interfaces and stubs generated with the aidl tool

I Public API uses stubs to communicate with system services

SMD Android Internals, Lecture 3 25/55

Page 26: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Binder Driver

I Part of the Binder implemented in a kernel driver

I Character device

I /dev/binder

I ioctl() calls

I Transmit parcels of data (serialized) between entities

SMD Android Internals, Lecture 3 26/55

Page 27: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Binder communication

SMD Android Internals, Lecture 3 27/55

Page 28: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Outline

Android Arhitecture

Linux Kernel

Binder

Android Framework

Managers

SMD Android Internals, Lecture 3 28/55

Page 29: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Android Framework

I On top of the native userspace

I android.* packages, System Services, Android Runtime

I Code in frameworks/ directory in AOSP

I Key building blocks: Service Manager, Dalvik/ART, Zygote

SMD Android Internals, Lecture 3 29/55

Page 30: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

System Services

I Form an object-oriented OS on top of LinuxI System Server

I All components run in the system_server processI Many Java-based services/managers, 2 C-based servicesI Power Manager, Activity Manager, Location Manager, etc.I Surface Flinger, Sensor Service (C/C++)

I Media ServerI mediaserver processI C/C++ codeI Audio Flinger, Media Player Service, Camera Service

SMD Android Internals, Lecture 3 30/55

Page 31: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Dalvik

I Default before Android 5.0I Java VM optimized for mobile architectures

I Lower memory footprint

I Works with .dex files instead of .jar filesI 50% smaller

I Incompatible with Java bytecode

I Register based, not stack based

I 16 bit instructions instead of 8 bit instructions (stack)

I Less instructions and higher execution speed

SMD Android Internals, Lecture 3 31/55

Page 32: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Dalvik

I Includes Just-in-Time (JIT) compilerI From Android 2.2I ARM, x86, MIPSI Profiles the applications at runtimeI Translates segments of bytecode (traces) into machine

instructionsI Code runs directly on the CPU, not one instruction at a time

by the VMI The rest of the bytecode interpreted by DalvikI Performance improvements

SMD Android Internals, Lecture 3 32/55

Page 33: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Android Runtime (ART)

I Available from Android 4.4

I Default from Android 5.0

I Dalvik Executable formatI Ahead-of-Time compilation (AoT)

I dex2oat toolI Translate the dex file into an executable for the target deviceI At installation timeI Replaces JIT compilation and Dalvik interpretationI Installation takes longerI Executables occupy storage spaceI Additional verifications

SMD Android Internals, Lecture 3 33/55

Page 34: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

ART

I Improved garbage collectionI More efficient

I Support for sampling profilerI Does not affect app performance

I More debugging featuresI Especially for monitoring and GC

I More details in case of exceptions and crash reports

SMD Android Internals, Lecture 3 34/55

Page 35: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Zygote

I Daemon used to launch apps

I Parent of all processes

I Preloads in RAM all Java classes and resources needed byapps

I Listens to connections on its socket for requests to start appsI /dev/socket/zygote

I When it gets a request, it forks itself and launches the app

SMD Android Internals, Lecture 3 35/55

Page 36: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Zygote

I Copy-on-write (COW)I Classes and resources are not modified, so all apps use them

from ZygoteI A single version of classes and resources in RAM

I The System Server is started explicitly by Zygote

I The PPID of all apps is the PID of Zygote

SMD Android Internals, Lecture 3 36/55

Page 37: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Zygote

h e r o 2 l t e : / # psUSER PID PPID NAMEroo t 1 0 / i n i tr o o t 3279 1 zygo tesystem 3689 3279 s y s t em s e r v e rsystem 5063 3279 com . samsung . and ro i d . r a d i o b a s e d l o c a t i o nu0 a10 5090 3279 com . samsung . and ro i d . p r o v i d e r s . c on t e x tadvmodem 5117 3279 com . samsung . and ro i d . n e two r k d i a g n o s t i cu0 a99 5271 3279 com . samsung . and ro i d . w idgetapp . b r i e f i n gu0 a45 5287 3279 com . samsung . and ro i d . s e r v i c e . p e o p l e s t r i p eu0 a4 5313 3279 com . samsung . and ro i d . app . a o d s e r v i c eu0 a128 5922 3279 com . samsung . and ro i d . sdk . h andw r i t i n gu0 a6 6178 3279 com . samsung . and ro i d . c on t a c t ssystem 6927 3279 com . samsung . ucs . agent . bootu0 a108 6939 3279 com . samsung . ucs . agent . e s eu0 a37 12229 3279 com . samsung . k lmsagentsystem 24833 3279 com . samsung . and ro i d . l o o lsystem 25118 3279 com . samsung . and ro i d . s e c u r i t y l o g a g e n tsystem 25354 3279 com . samsung . and ro i d . sm . p r o v i d e r

SMD Android Internals, Lecture 3 37/55

Page 38: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Xposed

I open source framework

I requires rooted device

I /system/bin/app_process which loads the Android andJava classes

I it extends the file above with a custom jar

I pre and post hooks for Android middleware methods

I Example: getLocation post hook - overwrite location

SMD Android Internals, Lecture 3 38/55

Page 39: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Xprivacy

SMD Android Internals, Lecture 3 39/55

Page 40: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Logd

I From Android 5.0

I Logd daemon

I Centralized user-mode logger

I Addresses the disadvantages of circular buffersI Integration with SELinux

I Registers as auditdI Receive messages via netlink

SMD Android Internals, Lecture 3 40/55

Page 41: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Logd

I Uses 4 sockets

I /dev/socket/logd - control

I /dev/socket/logdw - write-only

I /dev/socket/logdr - read-only

I Unnamed netlink socket - SELinux

SMD Android Internals, Lecture 3 41/55

Page 42: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Logd

I Write log messages:

1. Log class2. Liblog library3. /dev/socket/logdw socket

I Read log messages:

1. logcat

2. Liblog library3. /dev/socket/logdr socket

SMD Android Internals, Lecture 3 42/55

Page 43: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Android Logger architecture

SMD Android Internals, Lecture 3 43/55

Page 44: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Outline

Android Arhitecture

Linux Kernel

Binder

Android Framework

Managers

SMD Android Internals, Lecture 3 44/55

Page 45: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Service Manager

I Performs system service handle lookups

I The Yellow pages book of all system services

I A service must be registered to the Service Manager to beavailable

I Started by init before any other service

I Opens /dev/binder and becomes the Context Manager ofthe Binder

I Binder ID 0 = ”magic object” = Service Manager

SMD Android Internals, Lecture 3 45/55

Page 46: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Service Manager

I System Server registers every service with the Service ManagerI Any component that wants to talk to a system service:

I Asks the Service Manager for a handleI getSystemService()I Invokes the methods of the service using the handle

I Only to access system services

I Used by the dumpsys utility to obtain the status of thesystem services

SMD Android Internals, Lecture 3 46/55

Page 47: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Activity Manager

I One of the most important services in the System Server

I Handles activity lifecycle

I Sends intents

I Starts new components (activities, services)

I Obtains content providers

SMD Android Internals, Lecture 3 47/55

Page 48: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Activity Manager

I Responsible with the Application Not Responding (ANR)messages

I Involved inI Permission checksI OOM adjustments for the Low-Memory KillerI Task management

SMD Android Internals, Lecture 3 48/55

Page 49: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Activity Manager

I Starts the Launcher (with Intent.CATEGORY_HOME)I When an app is started from Launcher

I Launcher’s onClick() callback is calledI Launcher calls the startActivity() from ActivityManager

(through Binder)I ActivityManager calls startViaZygote() methodI Opens socket to Zygote and asks to start the activity

I am command for invoking the functionality of theActivityManager

SMD Android Internals, Lecture 3 49/55

Page 50: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Package Manager

I Manages the .apk files in the systems

I API for installing, uninstalling, upgrading .apk filesI Works with files located in /data/system/

I packages.xml - permissions and packagesI packages.list - details about packages

SMD Android Internals, Lecture 3 50/55

Page 51: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Package Manager

I Runs in system_server (system user)

I Uses installd processes for operations (root user)I Resolves intents

I Searches in Manifest files

I pm command for invoking the functionality of thePackageManager

I List packages, list permissions, install/uninstall/disablepackages, etc.

SMD Android Internals, Lecture 3 51/55

Page 52: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Power Manager

I Control the power state of the device

I Handles WakeLocksI Includes the WakeLock class

I acquire(), release()

I Apps request WakeLocks from PowerManager

SMD Android Internals, Lecture 3 52/55

Page 53: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Power Manager

I All calls to the Power Management (kernel) go throughPowerManager

I Can force device to go to sleep

I Set the brightness of the backlights

SMD Android Internals, Lecture 3 53/55

Page 54: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Bibliography

I Karim Yaghmour, ”Embedded Android: Porting, Extending,and Customizing”, Chapter 2

I Joshua J. Drake, Zach Lanier, Collin Mulliner, Pau Oliva Fora,Stephen A. Ridley, Georg Wicherski, ”Android Hacker’sHandbook”, Chapter 2

I https://wiki.linaro.org/LMG/Kernel/Upstreaming

I https://source.android.com/devices/tech/dalvik/

SMD Android Internals, Lecture 3 54/55

Page 55: Android Internals - Lecture 3 - ERASMUS Pulse · I Paranoid Networking SMD Android Internals, Lecture 3 7/55. Wakelocks I On desktops and laptops I The user decides when the system

Keywords

I Linux kernel

I WakeLocks

I Low-Memory killer

I Binder

I Ashmem

I Alarm

I System Server

I Dalvik

I ART

I Zygote

I Logd

I Service Manager

I Activity Manager

I Package Manager

I Power Manager

SMD Android Internals, Lecture 3 55/55