IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 安卓APP隐私权限测试--剪切/粘贴板权限 -> 正文阅读

[移动开发]安卓APP隐私权限测试--剪切/粘贴板权限

在日常的app测试过程中,除了常规的功能验证外,app端还需要验证隐私与权限合规测试,因为如果app在随意获取用户隐私和权限的话,软件很容易被工商局给强制下线,所以我们测试,在测试过程中还需要注意测试隐私权限方面的内容,下面文章将从剪切板的权限获取测试来切入,深入的了解一下我们如何开发一个用于隐私测试的工具;

某天产品提出一个需求叫帮忙测试,规则如下: app一进入后会获取用户剪切板的数据,识别剪辑版文字来跳转到对应的页面(比如拼多多的助力链接一样); 这里存在一个问题,首次安装app进入后,会有一个用户协议,需要用户点击同意后,软件才能去获取剪切板的权限,不同意的话,软件是不能去获取,不然会违反工信部的规定; 之前的app是用户未点击同意的时候,软件也会获取剪切板的信息,这次改动后,需要点击同意后才能去获取。 针对此次改动,我们常用的测试方法已经无法实现测试验证;这时需要我们去hook开发的代码才能验证这个功能。
在这里插入图片描述
在这里插入图片描述

文章大致主要采用的技术: java语言
开发工具: Android Studio
准备环境: 安卓开发环境,电脑端安卓模拟器(夜神模拟器,已root), xposed
成型工具: xposed 模块(不了解的同学可以百度一下,就是安卓的一些插件,如微信抢红包之类的)
检测实现原理:利用模块中的hook钩子来监测app在运行过程中,调用的方法和类; 通过识别固定的类名称和方法名来判断app是否调用了权限获取。

一:创建安卓项目

点击New Project 新建一个安卓项目
在这里插入图片描述
默认选中Empty Activity,点击Next
在这里插入图片描述
设置名称,点击创建
在这里插入图片描述
将项目设置为 project 模式,便于后期讲解
在这里插入图片描述

二: 开发Xposed模块

开发Xposed模块,流程可以参照下图:
在这里插入图片描述
下面,我们来一一实现
1. 让手机知道,这个apk是xposed的一个模块
打开 项目名称/app/src/main/AndroidMainifest.xml 文件, 加入下面代码

<meta-data
    android:name="xposedmodule"
    android:value="true"/>
<meta-data
    android:name="xposeddescription"
    android:value="这是一个xposed程序的用途" />

<meta-data
    android:name="xposedminversion"
    android:value="53" />

在这里插入图片描述
2. 加入带有xposed API的第三方jar包到程序中
这边提供的有82版本的api jar包; 链接:https://pan.baidu.com/s/1QI7nU7wu–X1fkXARao0UA
提取码:5ue0

将jar包放入 app/libs 文件夹中
在这里插入图片描述
在这里插入图片描述
点击Add As libray 将jar包加入项目中
在这里插入图片描述

3.编写hook程序,监测目标app
在 com.example.myapp文件夹下创建一个java类
在这里插入图片描述
叫做HookTest 类型选Class
在这里插入图片描述
HookTest .class 编写代码:
1.导入xposed API的包

import  de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

在这里插入图片描述
2.编写Hook函数

public class HookTest implements IXposedHookLoadPackage {
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable{

//        如果没有发现应用信息就返回,不进行后续的判断处理
        if (loadPackageParam == null) {
            return;
        }
//        打日志
        XposedBridge.log("开始进入Hook程序------------->");

		// 模板 使用其他方法的话也这样写
        //hook获取剪切板信息方法
        XposedHelpers.findAndHookMethod(
                android.content.ClipboardManager.class.getName(), // 写获取剪切版权限的方法的类名
                loadPackageParam.classLoader,  // 固定写法
                "getPrimaryClip",  // 对应的方法名
                new XC_MethodHook() {
                    @Override
                    protected void beforeHookedMethod(MethodHookParam param) {
                        XposedBridge.log("getPrimaryClip()获取了当前的剪切板内容");
                    }

                    @Override
                    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
//                        打印调用类信息
//                        XposedBridge.log(getMethodStack());
                        super.afterHookedMethod(param);
                    }
                }
        );
    }
}

在这里插入图片描述

4.让程序知道,那个文件是放hook模块方法的
首先在main文件夹下 创建一个 Assets Folder文件
在这里插入图片描述
在这里插入图片描述
创建一个文件 ,名称为:xposed_init
在这里插入图片描述
在这里插入图片描述
在该文件中写入hook测试类的路径
在这里插入图片描述

至此:所以代码层都已编写完成,可以将代码打包为apk,安装到模拟器中了, 点击顶部的播放按钮,安装软件到手机中,注意需要连接上手机或者模拟器
在这里插入图片描述

构建完成后,能看到已经安装上了
在这里插入图片描述
打开Xposed模块,能够看到,已经可以识别刚刚安装上的程序了;这时,我们点击勾选,重启模拟器
在这里插入图片描述

三: 测试 获取剪切版权限

1.首先启动刚刚安装的app.再打开xposed日志,清空之前的日志
在这里插入图片描述
2. 打开被测试app,调用获取剪切板权限的功能

在这里插入图片描述
3.再次打开日志文件,能够看到,我们已经监测到了app调用了这个方法
在这里插入图片描述

总结:
使用上面的方法,我们可以实现对,app获取剪切板权限的测试; 只需要在软件刚进入后,用户不点击同意协议前,监测软件,查看一下日志,即可知道开发是否调用了剪切板权限的方法; 向其他方法,如获取mac地址,GPS定位等功能,也是在模块中填写对应的方法名和类名称即可进行监测; 如果不知道对应权限的类名和方法名的话可以百度或者咨询一下开发;

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:27:25  更:2022-09-13 11:28:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 4:43:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码