Android 基础回顾:Broadcast 基础

安卓渗透测试实战:利用Metasploit生成后门APK与远程控制 在移动安全领域,渗透测试是评估应用与系统安全性的核心方法。其原理是通过模拟攻击者行为,发现潜在漏洞与风险点。这项技术的价值在于,它能帮助安全人员与开发者提前识别威胁,从而加固防御体系,尤其在安卓生态中,应用安全与系统权限管理是常见攻击面。典型的应用场景包括企业移动应用安全评估、老旧设备风险分析以及安全意识培训。本文聚焦于一次贴近实战的安卓安全评估,详细演示了如何利用Kali Linux和Metasploit框架,从生成定制化后门APK到建立远程控制会话的完整流程。过程中涉及的关键操作,如使用msfvenom 阅读详情

1、关于广播

广播是 Android 提供的一种全局通信机制。

1.1 分类

  1. 按照注册方式:静态注册和动态注册两种;
  2. 按照作用范围:本地广播和普通广播两种,普通广播是全局的,所有应用程序都可以接收到,容易会引起安全问题。本地广播只能够在应用内传递,广播接收器也只能接收应用内发出的广播;
  3. 按照是否有序:有序广播和无序广播两种,无序广播各接收器接收的顺序无法确定,并且在广播发出之后接收器只能接收,不能拦截和进行其他处理,两者的区别主要体现在发送时调用的方法上。

1.2 实现

1.2.1 静态广播

注册,这里的 StaticBroadcastReceiver 是自定义类:

<receiver android:name=".StaticBroadcastReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

我们可以将要实现的逻辑放在这个类的方法中进行执行:

public class StaticBroadcastReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		// Do something
	}
}

需要注意 Andrdoid 8.0 之后系统对广播进行了一些限制(官方文档),具体地:

  1. 在 Android 8.0 的平台上,应用不能对大部分的广播进行静态注册,也就是说,不能在AndroidManifest 文件对有些广播进行静态注册(注意“有些”,因为不是所有的广播都不能注册)。
  2. 当程序运行在后台的时候,静态广播中不能启动服务。比如之前实现闹钟的时候是监听时间变化来实现的,在 8.0 之后就会抛出异常。

解决方式是使用动态注册方式(一般情况下使用动态注册就好了)。

1.2.2 动态广播

与静态广播相似,但是不需要在 Manifest 中进行注册。

    // 监听广播:一般在 Activity 的 onCreate() 方法中注册
    netWorkChangReceiver = new StaticBroadcastReceiver();
    IntentFilter filter = new IntentFilter();
    filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
    registerReceiver(netWorkChangReceiver, filter);

    // 取消监听:然后在 Activity 的 onDestroy() 中取消注册
    unregisterReceiver(netWorkChangReceiver);

注意当页面被销毁的时候需要取消注册广播!

1.2.3 本地广播

本地广播的核心类是 LocalBroadcastManager,使用它的静态方法 getInstance() 获取一个单例之后就可以使用该单例的 registerReceiver()、unregisterReceiver() 和 sendBroadcast() 等方法来进行操作了。

    // 获取单例
    localBroadcastManager = LocalBroadcastManager.getInstance(this);

    // 注册广播
    IntentFilter filter = new IntentFilter();
    filter.addAction("me.shouheng.MyBroadcastReceiver");
    localReceiver = new LocalReceiver();
    localBroadcastManager.registerReceiver(localReceiver, filter);

    // 发送广播
    Intent intent = new Intent("me.shouheng.MyBroadcastReceiver");
    localBroadcastManager.sendBroadcast(intent);

    // 取消注册
    localBroadcastManager.unregisterReceiver(localReceiver);
1.2.4 有序广播

在 xml 中进行注册的时候通过 android:priority 指定一个范围在 -1000~1000 之间的整数来指定广播的接收顺序。优先级高的会先接收到,优先级相等的话则顺序不确定。并且前面的广播可以在方法中向 Intent 写入数据,后面的广播可以接收到写入的值。

    <receiver android:name=".MyReceiver_1">
        <intent-filter android:priority="200">
            <action android:name="com.song.123"/>
        </intent-filter>
    </receiver>
    <receiver android:name=".MyReceiver_2">
        <intent-filter android:priority="1000">
            <action android:name="com.song.123"/>
        </intent-filter>
    </receiver>

Android 基础梳理系列文章,关注作者及时获取更多学习资料

基于FART12与Pixel 2打造安卓脱壳专用机:原理、实战与逆向分析 在安卓应用安全领域,脱壳是逆向分析的关键步骤,旨在还原被加固保护的原始代码逻辑。其核心原理在于拦截应用运行时在内存中的解密与加载过程,从而获取可分析的DEX文件。传统基于Frida或Xposed的动态注入方法面临环境检测与反调试的挑战,而系统底层的ART虚拟机修改方案则提供了更根本的对抗能力。这种技术价值在于能够有效应对方法抽取壳、VMP保护等高级加固手段,为深度安全审计、漏洞挖掘和恶意代码分析提供支持。本文聚焦于将这一理论工程化,详细阐述了如何利用FART12框架改造Pixel 2手机,构建一个高度自动化 阅读详情

相关推荐

mipi协议中的calibration和scramble模式

在MIPI(Mobile Industry Processor Interface)协议中,calibration(校准)和scramble(加扰)模式是两个重要的特性,它们分别用于优化数据传输的准确性和减少信号干扰。

flomingo1的专栏 2397

【Android Broadcast】BroadcastReceiver

广播发送者:发送广播,发布广播后,订阅过的接收者就可以接收到广播。广播接收者:接收广播(想要接收广播,必须要注册即订阅相应的广播)BroadcastReceiver是一个全局的监听器,它可以监听安卓系统、其他App、自己App发出的广播。并作出相应的处理。是安卓的四大组件之一。

dev晴天的博客 3857

国产操作系统替换方案:3个避坑指南

坑核心误区避坑核心原则关键动作坑一:选型只看信创信创目录=唯一标准兼容性优先,信创是约束三维评估(兼容性+信创+生态),分场景选型坑二:迁移只管能跑功能能跑=迁移成功性能确认+运维回归适配-压测-回归三阶段,基线对比坑三:不防二次迁移解决停服=完成任务一步到位,两级兼容信创路线优先,双轨制发布,终态规划。

weixin_43524706的博客 294

Android创建Service后台常驻服务并使用Broadcast通信

本文基于Broadcast通信方式实现了一种Service Thread与Activity异步工作的方法

staticnetwind的专栏 1万+

JavaScript 书签脚本实战:腾讯/优酷/爱奇艺等5大视频站m3u8链接一键提取

本文详细介绍了如何使用JavaScript书签脚本一键提取腾讯视频、优酷、爱奇艺等五大视频平台的m3u8流媒体链接。通过分析播放器内部对象结构,开发者可以高效获取视频源文件,避免录屏画质损失。文章包含各平台适配方案、实战增强功能开发及企业级解决方案设计,帮助用户快速掌握这一实用技术。

weixin_27945229的博客 604

保姆级教程:不用看古早代码,5分钟搞懂泛微ecology9附件存储与接口调用

本文详细解析了泛微ecology9附件存储与接口调用的核心原理,提供从基础概念到实战操作的完整指南。通过拆解文档化附件设计理念、解析RESTful接口参数,并给出Python代码示例,帮助开发者快速掌握附件上传与业务集成的关键技巧,提升二次开发效率。

weixin_28688385的博客 349

Android Bluetooth Framework源码剖析(二)它们都重要

在具体讲述每个模块前我们先来看看一些公共的知识点,如Binder、JNI、Service、AIDL、Broadcast等,它们都是Android/Java基础的知识点,在网络上有许多相关的文章,本文就不深入的讲述它们,但在Bluetooth Framework或者app中都大量的使用了它们,所以本文主要是结合代码做一个回顾,后续文章可能一笔带过,不再花费篇幅讲解,主要集中在具体代码逻辑中。

qq_25370227的博客 2415

别再让充电器‘罢工’了!聊聊Charger里VIN-DPM这个不起眼但关键的功能

本文深入探讨了充电IC中的VIN-DPM(输入电压动态电源管理)功能,揭示其如何智能调节充电策略以避免电源适配器过载。通过实际案例和实验室数据,展示了VIN-DPM在提升充电稳定性和效率中的关键作用,并提供了选型、设计和故障排查的实用指南。

weixin_33738578的博客 416

记录学习Android基础的心得06:线程、服务和广播

文章目录前言一、多线程使用1.二、1.总结 只看后浪催前浪,当悟新人胜旧人。——释文向《过苕溪》 前言 本文总结四大组件里最后两种:服务service和广播broadcast,首先总结android中多线程的使用,然后介绍普通服务, 一、多线程使用 1. 二、 1. 总结 ...

YQYUN的博客 656

Android13系统设置第三方app为设备所有者

DevicePolicyManagerService.java文件所在目录是frameworks/base,记得将包类名换成自己app的。2. 将拷贝到系统分区下的两个xml文件继续通过init.rc服务拷贝到data/system/目录下并修改权限。1. 拷贝设备所有者和设备管理器两个对应的xml文件到系统分区。

wzh048503的博客 2502

Arduino IDE 2.3.2 配置 UNO R4 WIFI 开发环境避坑指南(附LED矩阵驱动测试)

本文详细介绍了如何在Arduino IDE 2.3.2中配置UNO R4 WIFI开发环境,并提供了LED矩阵驱动的实战指南。从开发环境搭建到硬件连接,再到LED矩阵的初始化和弹球动画实现,手把手教你避开常见配置陷阱,最终实现流畅的动画效果。特别适合刚接触UNO R4 WIFI的开发者快速上手。

weixin_28675839的博客 219

【Android Framework (九) 】- Broadcast

Broadcast是一个很简单的组件,它是我们应用程序之间传输信息的一种机制。BroadcastReceiver是用来接收来自系统和应用的广播 并对其做出相应的组件,我们发送广播是通过Intent,在Intent中我们可以带我们需要传递的数据。广播的注册:1.静态注册(AndroidManifest中使用receiver标签) 2.动态注册 registerReceiver方法。发送广播:sendBroadcast动态注册。

不靠谱先森的博客 1111

RK3588开发笔记-麦克风阵列多pdm通道合并成一个声卡

在音频设备的开发中,特别是在多通道音频数据处理场景中,如何将多个PDM(Pulse Density Modulation)通道整合成一个声卡设备,是一个非常具有挑战性的问题。RK3588芯片作为一款性能强大的平台,提供了对多个音频通道的支持。本文将介绍如何在RK3588上将多个PDM通道合并成一个麦克风阵列声卡,从而在Linux系统下统一管理和使用,提高多通道音频的同步性。在本文中我们主要介绍使用2通道回采+4通道mic声音采集构成一个6通道声卡,加以回声消除实现一个多麦克风阵列。

flypig has a dream! 1924

系统开发干货技能:系统广播broadcast调试命令汇总

摘要:使用dumpsys命令查看Android广播信息 本文介绍了如何使用dumpsys命令查看Android系统中的广播信息。通过dumpsys activity b命令可以获取广播相关的详细信息,包括所有注册的广播接收者(Registered Receivers)、历史发送的广播记录(Historical broadcasts)以及粘性广播(Sticky broadcasts)。文章重点讲解了如何分析这三个关键部分的信息,并提供了具体的命令示例和输出解析方法。这些技巧对于系统开发中调试广播相关问题(如音

liaosongmao1的专栏 120

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

树莓派4B与Android之缘(四):Android基本知识回顾(1)

一、Android基本定义 安卓(Android)是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。您可以使用 Kotlin、Java 和 C++ 语言编写 Android 应用。Android SDK 工具会将您的代码连同任何数据和资源文件编译成一个 APK(Android 软件包),即带有 .apk 后缀的归档文件。一个 APK 文件包含 Android 应用的所有内容,它也是 Android 设备用来安装应用的文件。 二、Android安全性 (一)每个 Android 应用都

qq_44707992的博客 720

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android学习笔记(二)--------浅谈Broadcast 广播

浅谈BroadCast         上节回顾,上节博客浅谈了Intent是什么,有何作用,如何用。上节主要围绕Intent发送请求给activity做了说明,本节主要说明BroadCast如何使用。    一、广播                  前面已经看到,Intent可以启动新的应用程序组件,实际上他们也可以使用sendBroadcast方法在组件中匿名的广播消息。

u012576638的专栏 603

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android知识回顾---4大组件之broadcast广播

1.怎么可以让自定义的广播被指定app接收   思路就是自定义广播设置权限,接收的权限,只有指定的app的接收者才可以接收,其实activity service broadcast都是一样的,如果不设置这样的权限,在android系统中都是可以通过api或者指令去启用activity。简单思路: 首先接收者需要在 xml文件中注册广播,需要自定义权限   然后注册的广播的时候加上这个权限。

cenfei78325747的专栏 369

一起Talk Android吧(第二百三十六回:Android中的四大组件概述)

各位看官们大家好,上一回中咱们说的是Android中数据存储大结局的例子,这一回咱们说的例子是四大组件。闲话休提,言归正转。让我们一起Talk Android吧! 看官们,我们在这一回中介绍一下Android中的四大组件,它们是 Activity Service Broadcast ContentProvider。 其实这些内容我们都介绍过,接下来我们一起回顾一下这些知识. Activity是程序界面的载体,它负责加载程序的界面,同时通过生命周期回调函数来管理界面,每个程序都有Activity,因此它

talk_8的专栏 237

Android编程权威指南(第二版)学习笔记(二十七)—— 第27章 broadcast intent

本章主要讲的是 Android 系统的广播机制,并介绍了广播的使用,权限以及有序广播的用法

退而结网 532

Android 12+ 强制声明 exported 属性:Manifest 合并失败解决方案

在 Android 应用开发中,Manifest 文件是定义应用组件和权限的核心配置文件。其合并机制负责整合主应用与第三方库的组件声明,确保最终 APK 包含正确的组件信息。随着 Android 系统安全性的不断提升,Google 在 Android 12(API 31)中引入了一项关键变更:要求所有包含 `<intent-filter>` 的 Activity、Service 或 BroadcastReceiver 必须显式声明 `android:exported` 属性。这一变更旨在强化应用组件的安全边

weixin_33834137的博客 426

金3银四正式结束,回顾一下我2个月面试的公司....

今年面试终于结束了,打工人的日常双双落幕~

m0_56144365的博客 97

as点击发送广播_Android中广播的发送BroadcastReceiver

之前在进行Android开发的过程中,由于某些原因,对android中广播的注册等相关知识进行了回顾及总结。也查看了相关源码及写demo验证。发现对广播的认识更深了一层。下面将所学进行记录,以备随时查看。这些内容在网上也参考了他人的博客,相关链接如下:【1】、基于源码分析的系统发送广播的流程:http://blog.youkuaiyun.com/zhangyongfeiyong/article/details...

weixin_39531374的博客 237

剖析ActivityManagerService源码,了解广播接收和发送机制(二)

1.简介 “在安卓的广播机制中,用户自定义的Activity或自定义的子类BroadcastReceiver扮演着接收器的角色,Activity本身以及各类系统事件(如有电话拨入)也可以扮演广播发出者的角色。而其中,Android的Activity Manager Service无疑扮演着核心角色。总体上,安卓的广播采用的是订阅者、发布者的设计模式。”

Honored_的博客 475

Android应用程序发送广播(sendBroadcast)的过程分析

前面我们分析了Android应用程序注册广播接收器的过程,这个过程只完成了万里长征的第一步,接下来它还要等待ActivityManagerService将广播分发过来。ActivityManagerService是如何得到广播并把它分发出去的呢?这就是本文要介绍的广播发送过程了。        广播的发送过程比广播接收器的注册过程要复杂得多了,不过这个过程仍然是以ActivityManagerSe

老罗的Android之旅 16万+
上一篇: Android 基础回顾:Service 基础
下一篇: Android 性能优化 - 启动优化
开发者如是说
博客等级 码龄10年 67粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值