安卓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定位等功能,也是在模块中填写对应的方法名和类名称即可进行监测; 如果不知道对应权限的类名和方法名的话可以百度或者咨询一下开发;

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值