首页
学习
活动
专区
圈层
工具
发布

自动化检测 Android APP 非 SDK 接口使用,防止非预期异常发生!

点击小卡片,回复 “合集” 获取系统性的学习笔记和测试开发技能图谱 背景 从 Android 9(API 级别 28)开始,Android 平台对应用能使用的非 SDK 接口实施了限制,只要应用引用非...区分 SDK 接口和非 SDK 接口 一般而言,公共 SDK 接口是在 Android 框架软件包索引中记录的那些接口,非 SDK 接口的处理是 API 抽象出来的实现细节,因此这些接口可能会在不另行通知的情况下随时发生更改...非 SDK API 名单 为最大程度地降低非 SDK 使用限制对开发工作流的影响,Google 将非 SDK 接口分成了几个名单,这些名单界定了非 SDK 接口使用限制的严格程度(取决于应用的目标 API...APP运行在 版本10.0且运行在>10.0的手机会抛出异常 测试你的应用是否使用了非 SDK 接口 这里我们通过veridex工具进行测试,veridex...工具会扫描 APK 的整个代码库(包括所有第三方库),并报告发现的所有使用非 SDK 接口的行为。

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux禁止非WHEEL用户使用SU命令 原

    一、禁止非whell组用户切换到root 1、 修改/etc/pam.d/su配置 [root@db01 ~]# vi /etc/pam.d/su ← 打开这个配置文件 #auth required...添加语句到行末以上操作完成后,可以再建立一个新用户,然后用这个新建的用户测试会发现,没有加入到wheel组的用户,执行“su -”命令,即使输入了正确的root密码,也无法登录为root用户 3、 添加一个用户woo,测试是否可以切换到...woo [woo@db01 ~]$ su - root ← 这时候我们看到是可以切换了 Password: [root@db01 ~]# 二、添加用户到管理员,禁止普通用户...su到root 6、添加用户,并加入管理员组,禁止普通用户su到root,以配合之后安装OpenSSH/OpenSSL提升远程管理安全 [root@db01 ~]# useradd admin [root

    6.5K51

    非 SDK 接口常见问题 | Android 开发者 FAQ Vol.13

    此类接口是 SDK 的内部实现细节,可能随时会被修改,且不对开发者另行通知。 常规问题 Q2 : Android P 在非 SDK 接口使用限制方面采取了哪些举措?...A:谷歌正在逐步限制非 SDK 接口的使用:针对不同接口采取不同形式的限制 (详情请参照条目 “应用运行时,我应该如何检测非 SDK 接口的使用?” )。...若您正在使用非 SDK 接口进行开发,请特别注意限制对应用行为造成的影响。 常规问题 Q3: 如果我正在使用非 SDK 接口,我应该如何提交请求,申请重新评估该接口?...相关应用兼容性问题 Q1: 原生代码中是否存在非 NDK 接口的限制? A:SDK 针对 Java 语言。...相关应用兼容性问题 Q4: 非 SDK 接口限制是否适用于所有应用 (包括系统应用和第一方应用),而不仅仅是第三方应用? A:是的。

    1.6K30

    一种绕过Android P对非SDK接口限制的简单方法

    众所周知,Android P 引入了针对非 SDK 接口(俗称为隐藏API)的使用限制。这是继 Android N上针对 NDK 中私有库的链接限制之后的又一次重大调整。...从今以后,不论是native层的NDK还是 Java层的SDK,我们只能使用Google提供的、公开的标准接口。这对开发者以及用户乃至整个Android生态,当然是一件好事。...恰好最近有人反馈 VirtualXposed 在 Android P上无法运行,那么今天就来探讨一下,如何突破Android P上针对非SDK接口调用的限制。 系统是如何实现这个限制的?...第二个条件 然后看第二个return语句,fn_caller_is_trusted,这里面的代码我就不分析了,直接给结论:这个方法通过回溯调用栈,通过调用者的Class来判断是否是系统代码的调用(所有系统的代码都通过...剑走偏锋 上面我们分析了系统的源代码,结合各种条件来实现绕过对非SDK API调用的检测;但实际上所有这些方式我们的目的都是一样的—— 通过某种方式修改函数的执行流程;而达到这个目标最直接的方法就是 inline

    2.6K41

    微信JS-SDK签名接口的使用与开发

    但是使用微信js-sdk需要获取签名、时间戳、随机字符串,等等一系列的参数,那问题就来了,这些参数是由后端提供能,还是前端自己获得呢?...首先我们看一下微信公众号开发关于微信JS-SDK的使用说明,如图: ? 一般来说,第一步由后端工程师完成,配置安全域名,微信规定只能在配置的域名下才能调用微信的JS-SDK,在哪里设置呢? ?...注入权限验证配置指的是向config这个函数中传递上图显示的特定参数,然后调用这个函数,这个函数调用后会验证当前页面是否能使用微信的JS-SDK。 那我们来看看具体有哪些参数呢?如图: ?...第六个需要使用的js的接口列表,这是干什么的呢?简单来说就是你需要使用微信js-sdk的那些功能,比方说调用扫一扫,相机,等等需要哪些功能就将代表其功能的字符串放进数组里面就可以了。...本片文章的标题为:微信JS-SDK签名接口的使用与开发,前面主要讲微信JS-SDK签名接口的使用,如果只是使用的话前面的文章基本够用了,那么下面将要讲的就是微信JS-SDK签名接口的开发了。

    8.2K51

    在 CC++ 异步 IO 中使用 MariaDB 的非阻塞接口

    所幸,从 MySQL fork 出来的 MariaDB 提供了异步的 C/C++ MySQL client 接口。下面是本人对官方文档的翻译。...同时,这也便于在同一个代码目录中混合使用阻塞和非阻塞调用架构。...下面是一个使用非阻塞 API 进行一次查询的简单(但完整)的示例。...不过这依然可以在任何开始使用非阻塞操作的时候调用。如果在没有使用 MYSQL_OPT_NONBLOCK 的情况下尝试任何非阻塞操作,应用程序一般情况下会因为空指针异常崩溃。...正常情况下,应用程序不需要修改这个值,可以传入 0 以使用默认值。 --- 混合阻塞和非阻塞操作 在同一个 MYSQL 连接中混合使用阻塞和非阻塞操作是完全可行的。

    3.7K20

    Python使用递归和非递归两种算法判断一个非递增序列是否可图化

    问题描述: 图的度序列是指图中所有顶点的度(与顶点关联的边的条数,允许图有自环边,也就是以同一个顶点作为出发点和终点的边)按非递增顺序排列得到的序列。...如果一个包含若干非负整数的非递增序列可以作为某个图的度序列,则称这个序列可图化,为可图化序列。容易得知,包含负数的序列一定是不可图化的,全0序列是可图化的。...已知,非递增序列[a[0], a[1], a[2], ..., a[n]]是否为可图化序列,等价于序列[a[1]-1, a[2]-1, a[3]-1, ...a[a[0]]-1, a[a[0]+1],...a[a[0]+2], ..., a[n]]中的整数非递增排列后得到的序列是否为可图化序列。...下面的函数func1()和func2()分别使用非递归算法和递归算法判断一个序列是否可图化,函数接收一个包含若干非负整数且按非递增顺序排列的元组seq作为参数,要求判断seq是否为可图化序列,是则返回True

    35510

    Dji RoboMaster Tello SDK封装.1(对视频接口使用cv2.VideoCapture接收))

    首先导入一些编写SDK的一些必要的库 因为是无线的连接所以要加一个网络的线程库,用来连接TT 接着导入时间库,因为会有一些资源的监控函数 导入cv库,这里是cv2,因为底层是C++的实现 最后一个是另外一个资源的监控类...def __init__(self, tello_ip: str = '192.168.10.2', debug: bool = True): # 在初始化的函数里面就是传入一个ip以及是否要打开调试功能...# 开启新的插口,我这里是喜欢这么叫 self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 通常使用这个设置来加强网络程序的健壮性...的初衷 官方的视频接口,我能力不够。...print('Sending command: {}'.format(command)) # 用Python的字符串方法打印 # 这两个语句就是日志 # 检查命令是否超时

    1.4K30

    以1个具体接口为例来展示腾讯云.NET SDK的使用

    dotnet:$PATH 生效方法(二选一): ①关闭当前终端窗口,重新打开一个新终端窗口就能生效 ②输入“source ~/.bashrc”命令,立即生效 有效期限:永久有效 用户局限:仅对当前用户 三、使用腾讯云...dotnet sdk 两种办法: ①git clone方式 yum install git -y git clone https://github.com/TencentCloud/tencentcloud-sdk-dotnet.git...的内容如下,中间那段就是引用,用的是2个..代表上层目录,上层目录里的TecentCloud项目 上图3小段,第1段是必须的,需要根据实际情况写版本号,第2段是git clone方式或直接下载压缩包、解压使用的方式的.../TencentCloud/TencentCloud.csproj 然后cat Test.csproj查看如下 Sdk="Microsoft.NET.Sdk">   接口做实验 操作过程如下图 最后一步: dotnet build dotnet run ②NuGet方式(windows、linux通用) 这里介绍3个命令,比如 ①查看包的命令:dotnet

    2.2K20

    找出 .NET Core SDK 是否使用预览版的全局配置文件在哪里(探索篇)

    你是否好奇 Visual Studio 2019 中的 .NET Core SDK 预览版开关是全局生效的,那个全局的配置在哪里呢? 本文将和你一起探索找到这个全局的配置文件。...去看一看那个文件的内容,发现只有一行: 1 UsePreviews=True 这基本上可以确认 Visual Studio 2019 设置是否使用 .NET Core SDK 预览版就是在这个文件中。...因为我们主要是验证 sdk.txt 文件,但同时希望看看是否还有其他文件。于是我们将 sdk.txt 文件相关的事件高亮。 点击 Filter -> Highlight......现在,将 sdk.txt 文件内容改为: 1 UsePreviews=False 编译一下使用了 .NET Core 3.0 新特性的项目(我使用了 Microsoft.NET.Sdk.WindowsDesktop...现在,将 sdk.txt 文件内容改为: 1 UsePreviews=True 编译相同的项目,发现可以正常编译通过了。 这可以证明,此文件正是决定是否使用预览版的决定性证据。

    69330

    如何使用Oozie API接口向非Kerberos环境的CDH集群提交Spark作业

    温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。...CDH集群提交Spark作业,本篇文章我们借助于oozie-client的API接口向非Kerberos集群提交Spark作业。...Livy相关文章: 《Livy,基于Apache Spark的开源REST服务,加入Cloudera Labs》 《如何编译Livy并在非Kerberos环境的CDH集群中安装》 《如何通过Livy的RESTful...API接口向非Kerberos环境的CDH集群提交作业》 《如何在Kerberos环境的CDH集群部署Livy》 《如何通过Livy的RESTful API接口向Kerberos环境的CDH集群提交作业...Oozie-client的API接口向非Kerberos集群提交Spark作业 * creat_user: Fayson * email: htechinfo@163.com * creat_date

    1.8K70
    领券