第二篇、Android Supersu 屏蔽权限请求通知 SuReceiver广播

我们想要去定制Supersu 让其,过滤掉我们自己的应用,不显示权限提醒。我们可以来看看这个su调用系统发送广播。然后我们的Supersu.apk会收到弹窗的广播。我们可以在这里进行拦截过滤。

public class SuReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, Intent intent) {
        if (intent == null)
            return;

        String command = intent.getStringExtra("command");
        if (command == null)
            return;
        int uid = intent.getIntExtra("uid", -1);
        if (uid == -1)
            return;
        int desiredUid = intent.getIntExtra("desired_uid", -1);
        if (desiredUid == -1)
            return;
        String action = intent.getStringExtra("action");
        if (action == null)
            return;
        String fromName = intent.getStringExtra("from_name");
        String desiredName = intent.getStringExtra("desired_name");

        final LogEntry le = new LogEntry();
        le.uid = uid;
        le.command = command;
        le.action = action;
        le.desiredUid = desiredUid;
        le.desiredName = desiredName;
        le.username = fromName;
        le.date = (int)(System.currentTimeMillis() / 1000);
        le.getPackageInfo(context);

        //这里可以对super日志输出的拦截,过滤掉不想打印日志的应用
        UidPolicy u = SuperuserDatabaseHelper.addLog(context, le);

        String toast;
        if (UidPolicy.ALLOW.equals(action)) {//这里将会弹窗超级应用授权,我们可以在这里判断,让他不显示Toast提示
            toast = context.getString(R.string.superuser_granted, le.getName());
        }
        else {
            toast = context.getString(R.string.superuser_denied, le.getName());//拒绝用户的请求
        }

        if (u != null && !u.notification)
            return;

        switch (Settings.getNotificationType(context)) {//是否显示弹窗等。
        case Settings.NOTIFICATION_TYPE_NOTIFICATION:
            NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
            builder.setTicker(toast)
            .setAutoCancel(true)
            .setContentIntent(PendingIntent.getActivity(context, 0, new Intent(), 0))
            .setContentTitle(context.getString(R.string.superuser))
            .setContentText(toast)
            .setSmallIcon(R.drawable.ic_stat_notification);

            NotificationManager nm = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
            nm.notify(NOTIFICATION_ID, builder.getNotification());
            break;
        case Settings.NOTIFICATION_TYPE_TOAST:
            Toast.makeText(context, toast, Toast.LENGTH_SHORT).show();
            break;
        }
    }

    private static final int NOTIFICATION_ID = 4545;
}
下一篇,

下一篇将介绍如何屏蔽授权Acitivty的确认通知

通过su.c

#include "su.h"

/* intent actions */

#define ACTION_REQUEST "start", "-n", REQUESTOR "/" REQUESTOR_PREFIX ".RequestActivity"

#define ACTION_NOTIFY "start", "-n", REQUESTOR "/" REQUESTOR_PREFIX ".NotifyActivity"

#define ACTION_RESULT "broadcast", "-n", REQUESTOR "/" REQUESTOR_PREFIX ".SuReceiver"

#define AM_PATH "/system/bin/app_process", "/system/bin", "com.android.commands.am.Am"

这个我发现,su是通过,shell命令来启动一个权限请求的Acitivty这个就是我们所看到的 权限提醒界面。

时间: 2024-12-23 04:19:02

第二篇、Android Supersu 屏蔽权限请求通知 SuReceiver广播的相关文章

【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析

[渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP请求信息由3部分组成: 1.请求方法(GET/POST) URI 协议/版本 2.请求头(Request Header) 3.请求正文 下面我们来分析一个http请求: POST http://xg.mediportal.com.cn/health/sms/verify/telephone HTTP

Android 6.0 权限请求

在申请权限之前一定要在清单配置文件中添加该权限 private static final int MY_PERMISSIONS_REQUEST_RECORD_AUDIO = 1; //随便定义 public void setPermission(){ if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) //这里申请的是录音权限 != PackageManager.PERMISSION_GRAN

淘宝(阿里百川)手机客户端开发日记第二篇 android首页之顶部轮播特效制作 (二)

1.我们来设计flash_slide.xml 布局,这个xml主要做成模块化,方便其它的activity可以动态去调用. flash_slide.xml内容如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width

第二篇 android开发环境搭建--谷歌代理设置 adt-bundle下载,sdk Manager使用 android环境变量配置

一 .从谷歌下载ADT adt( Android Development Tools )是谷歌开发的andorid开发的工具,adt-bundle直接集成了eclipse和android sdk(一般里面有最新版本的sdk)下载adt-bundle之后可以直接打开里面的eclipse即可进行android的开发 下载地址:adt官网下载地址 不过大家都知道谷歌的网站在大陆是受到限制的,这里交给大家一个方法,让你方便访问谷歌的网站 当然方法无非就是设置一个代理,这里可以用"自由门"这个软

第一篇、Android Supersu 权限管理定制,隐藏过滤权限,指定APP最高权限

最近有个需求,在预装ROM的时候,需要权限,但是又不允许所有的应用都有权限,只允许自己的应用有最高的权限(当然没有系统签名情况下). 所以,编译了CM 提取了supersu进行了二次定制,让他进行权限屏蔽. 大概思路如下: 1.去除权限拦截的提醒 2.过滤权限(如果是我们指定的APP,直接拿到最高权限,其他的,一律拒绝权限) 其他代码分析,请待第二篇.分析.

Android开源项目第二篇——工具库篇

本文为那些不错的Android开源项目第二篇——开发工具库篇,主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. Android开源项目系列汇总已完成,包括: Android开源项目第一篇——个性化控件(View)篇 Android开源项目第二篇——工具库篇 Android开源项目第三篇——优秀项目篇 Android开源项目第四篇——开发及测试工具篇 Android开源项目第五篇——优秀个人和

gradle教程 [原创](eclipse/ADT下 非插件 非Android Studio/AS)纯手打 第二篇:gradle简单实战

一个bug 一个脚印的叫你们用gradle. 1介于网络上的很多资料都是老的 不适用与现在的新版本gradle 尤其是有些gradle方法改名了老的用不了 2介于网上都是粘贴复制并且零碎我很蛋疼啊,走了很多歪路才弄出来,所以我弄一个完全完整的版本 3我不但会写gradle还会写ant打包方式,希望能帮到大家 在这之前你需要有一个android工程(工程中不能有已经过时的方法) 可以没有eclipse或者ADT 因为只要你工程是ok的 gradle就可以直接用 后面我会越说越详细 前面都太简单了

Android Metro风格的Launcher开发系列第二篇

前言: 各位小伙伴们请原谅我隔了这么久才开始写这一系列的第二篇博客,没办法忙新产品发布,好了废话不说了,先回顾一下:在我的上一篇博客Android Metro风格的Launcher开发系列第一篇写了如何配置Android开发环境,只是用文字和图片展示了开发Metro风格Launcher的初步设计和产品要求,这一篇文章将会从代码上讲解如何实现对应的UI效果,好了,评书开讲! Launcher主体框架实现: Launcher主体框架我选用的是大家所熟悉的ViewPager控件,因为ViewPager

【转载】Android Metro风格的Launcher开发系列第二篇

前言: 各位小伙伴们请原谅我隔了这么久才开始写这一系列的第二篇博客,没办法忙新产品发布,好了废话不说了,先回顾一下:在我的上一篇博客Android Metro风格的Launcher开发系列第一篇写了如何配置Android开发环境,只是用文字和图片展示了开发Metro风格Launcher的初步设计和产品要求,这一篇文章将会从代码上讲解如何实现对应的UI效果,好了,评书开讲! Launcher主体框架实现: Launcher主体框架我选用的是大家所熟悉的ViewPager控件,因为ViewPager