【论文总结】揭秘 Android 非 SDK API:测量和理解

揭秘 Android 非 SDK API:测量和理解

介绍

这是来自2022年ICSE的一篇论文《Demystifying Android Non-SDK APIs: Measurement and Understanding》,作者有:Shishuai Yang, Rui Li, Jiongyi Chen, Wenrui Diao, and Shangqing Guo。

前置知识

non-sdk:一般而言,公共 SDK 接口是在 Android 框架软件包索引中记录的那些接口。非 SDK 接口的处理是 API 抽象出来的实现细节,因此这些接口可能会在不另行通知的情况下随时发生更改。

下图可能更能简单解释什么是非sdk,android.jar是属于一个公共sdk,在framework.jar中既有公共的sdk和非sdk。而开发环境所需的API是由公共的sdk android.jar提供的,但是在运行环境中,所需要的是framework.jar,其中包括的公共sdk和非公共sdk。公共的sdk是绝对安全的,但是部分非sdk可能会引起运行崩溃的情况。
在这里插入图片描述
non-SDK API可以分为

  1. Internal API:这部分的API通常在com.android.internal包中,此包下所有类的源代码都是不可见的,并且只能被系统应用程序使用。该包会提供系统的核心功能,可用于访问一些敏感资源。
  2. Restricted API:这些API由Private或default标记
  3. Hidden API:这些API在java文档中标记@hide

non-SDK访问方式:

  1. SDK替换:使用自定义的android.jar来替换默认的android.jar
  2. java反射:通过Java反射,开发人员可以运行调用任何对象的方法和属性
  3. JNI:通过定义JNI函数来调用本机代码,还可以通过NDK访问SDK和Non-SDK API

non-SDK分类:

  1. 黑名单:只要使用了这个API,就会触发运行崩溃
  2. 灰名单-max-x:这部分-max-p意味该应用程序目标sdk不超过Android P。可以访问非SDK API,但目标SDK API不大于Android P。若大于Android P,访问非SDK API会发生崩溃。
  3. 灰名单:这个列表的API不支持使用,但目前仍不受限制,可以使用
  4. 白名单:该列表的API可以自由使用。

数据集来源

应用商城+Virustotal恶意数据集

测量方法

在这里插入图片描述
RQ1:是否可以绕过谷歌的非SDK限制

RQ2:当前应用程序中使用非SDK现状

RQ3:在恶意应用程序和良性应用程序之间使用非SDK API的区别

扫描二维码关注公众号,回复: 14919814 查看本文章

RQ4:非SDK API在Android框架中是如何发展的

测量角度

1.是否存在方法绕过谷歌的非SDK限制
在这里插入图片描述
使用双反射和调用堆栈中断来绕过谷歌对非SDK的限制策略

2.应用程序中使用非SDK现状
应用使用非SDK API的总体情况
在这里插入图片描述
每个应用平均非SDK API使用情况
在这里插入图片描述由应用程序引用的非SDK API分布情况
在这里插入图片描述
Top 10所属包
在这里插入图片描述
3.恶意应用和良性应用程序之间使用非SDK API的区别
总体情况:61%的恶意软件使用了至少一个非SDK API

4.Android框架中的非SDK API发展变化
恶意应用和良性应用使用的Top10非SDK API
在这里插入图片描述
非SDK数量变化
在这里插入图片描述相邻的Android版本之间按列表类型更改的非SDK API数量
在这里插入图片描述
在列表更改过程中受影响最大的特性以及相关API的数量
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Ohh24/article/details/128611577