android安全问题(六) 抢先接收广播

导读:本文说明系统是如何注册动态广播以及静态广播,这里主要注意其注册的顺序

这篇文章主 要是针对我前两篇文章

android安全问题(四) 抢先开机启动 - 结果篇

android安全问题(五 ) 抢先拦截短信 - 结果篇

之前只给出了结果,并没有给出代码分析,现在给出第一步分的分析

大家都知道,广播接收器分为动态注册和静态注册两种

静态接收,就是配置到manifest.xml文 件中,PackageManagerService扫描后记录其信息……

动态接收,就是从代码中注册,通过调用下面的 方法实现

Intent android.content.Context.registerReceiver(BroadcastReceiver receiver, IntentFilter filter)

(下面的流程图估计画的比较水,将就看一下吧,得补习一下UML了)

首先分析静态注册Receiver的流程

静态receiver的注册是由PackageManagerService开机的时 候负责初始化

(PackageManagerService之后简称为PMS)

PMS在开机的时候会对系统一些目录 逐个扫描,解析apk文件。静态广播接收器就是在PMS做这件事情的时候顺便处理的。

PMS会解析apk的 manifest文件,查找这里注册的receiver,然后加载到内存中

下面看一下PMS是如何工作的

这 部分内容没有什么难度,只要有耐心就行,我画了一个很简单流程图,从调用PMS的构造函数开始

注意 ,这里有几个同名函数,大家需要分清。并不是同一个函数调用了两次

这里只看几处

1.PMS初 始化的时候干了些什么

当然,PMS会做很多很多事情,这里我们只看我们关注的,和这篇文章相关的部 分

// Collect all system packages.
mSystemAppDir = new File(Environment.getRootDirectory(), "app");
mSystemInstallObserver = new AppDirObserver(
    mSystemAppDir.getPath(), OBSERVER_EVENTS, true);
mSystemInstallObserver.startWatching();
scanDirLI(mSystemAppDir, PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR, 

scanMode, 0);

扫描目录的顺序

system/framework

system/app

vendor/app

data/app

drm/app- private

这里以system/app目录为例

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 函数
, android、初始化
, 静态
, 广播
, android 广播
, 注册
, system
, 开机广播
, app安全
, 动态加载apk
, 静态广播xml广播
, 静态注册
android广播接收者
android 接收广播、android 广播接收器、android 广播接收者、android广播接收不到、android 接收系统广播,以便于您获取更多的相关知识。

时间: 2024-10-31 22:03:44

android安全问题(六) 抢先接收广播的相关文章

android安全问题(七) 抢先接收广播

现在给出第二步分的分析 下面就来看看发送广播的流程 Context中的sendBroadCast函数的 实现是在ContextImpl中,和发送广播相关的有如下六个函数 void android.app.ContextImpl.sendBroadcast(Intent intent) void android.app.ContextImpl.sendBroadcast(Intent intent, String receiverPermission) void android.app.Conte

Android中BroadcastReceiver(异步接收广播Intent)的使用_Android

Broadcast Receiver简介 Broadcast Receiver是Android的五大组件之一,使用频率也很高. 用于异步接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast().广播接收者(BroadcastReceiver)用于异步接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast().Context.sendOrderedBroadcast()或者Context.sendStickyBr

Android中BroadcastReceiver(异步接收广播Intent)的使用

Broadcast Receiver简介 Broadcast Receiver是Android的五大组件之一,使用频率也很高. 用于异步接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast().广播接收者(BroadcastReceiver)用于异步接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast().Context.sendOrderedBroadcast()或者Context.sendStickyBr

android安全问题(五) 抢先拦截短信

同上篇文章一样,这里只陈述结果,代码分析稍后给出 导读:本文叙述如何先于某些伪杀毒软件 .病毒.常规软件获取到短信 注意:如果你想抢先接收到短信,请务必阅读我上一篇文章,先要保证 你的应用最先开机启动 众所周知,android系统在收到短信息的时候会发送广播,但是此广播是有序广 播,也就是说:先接收到广播的人,如果心情不好,它就不会向后传递此广播,后面的人就不会知道有短信到 来 这与无序广播不同,无序广播并不是真的没有顺序(只是似乎大家习惯这么叫而已),无序广播的 接收者也是排队等待广播的,只不

Android——发送和接收广播

一,发送广播   利用Intent来发送广播. 使用:在需要发送广播的地方创建一个Intent对象,将信息的内容和用于过滤的信息封装起来,通过以下三种方法将Intent广播出去: 1,Context.sendBroadcast 2,Context.sendOrderedBroadCast 3,Context.sendStickyBroadcast   三种方法的区别: 1,sendBroadcast和sendStickyBroadcast发送出去的Intent,对于所有满足条件的Broadcas

android屏幕加解锁事件广播的监听

想在程序中监听屏幕SCREEN_ON和SCREEN_OFF这两个action,实现屏幕锁定状态的监听,从而实现自己的相应功能.比较奇怪的是这两个action只能通过代码的形式注册才能被监听到,在AndroidManifest.xml中注册根本监听不到.去网上查了一下,原来是PowerManager那边在发这个广播的时候做了限制,限制只有register到代码中的receiver才能接收.特此记录! public class ScreenActionReceiver extends Broadca

Android之Broadcast, BroadcastReceiver(广播)

Android之Broadcast, BroadcastReceiver(广播) 在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver 活动(Activity) - 用于表现功能 服务(Service) - 相当于后台运行的 Activity 广播(Broadcast) - 用于发送广播 广播接收器(BroadcastReceiver) - 用于接收广播 Intent - 用于连接以上各个组件,并在其间传递消息 =======

udp-PC端用UDP组播文件,android上如何来接收到该文件

问题描述 PC端用UDP组播文件,android上如何来接收到该文件 如题所说,我在PC端用工具将.zip升级包通过命令的方式广播出来,我的android盒子端如何去接收到升级包文件,又如何判断包的完整性 解决方案 http://blog.csdn.net/cuiran/article/details/40558085

android安全问题(三) 钓鱼程序

这个话题是继续android安全问题(二) 程序锁延伸的 之前我已经展示了如何制作程序锁.当打 开指定应用的时候,弹出一个密码页面. 程序锁的话题虽然是和安全相关,但是这应该属于防范的范 围,如果被人恶意利用,那么后果-- 这期我来揭示一下一种钓鱼程序的原理,希望广大用户不要上 当受骗,最主要的是:希望大家意识到安全问 之前我用定时扫描activity的方法来检查打开的页面是 不是我们所需要的页面 ComponentName topActivity = mActivityManager.getR