专业的JAVA编程教程与资源

网站首页 > java教程 正文

通过隔离和拦截第三方原生库来保护Android应用程序

temp10 2024-11-10 11:38:33 java教程 7 ℃ 0 评论

NativeProtector:通过隔离和拦截第三方原生库来保护 Android 应用程序

?

通过隔离和拦截第三方原生库来保护Android应用程序

第三方Android应用程序的大幅增加,让它们可以轻松下载和安装。但是,也会发生大量恶意应用程序,以泄露用户私人信息并执行危险操作。因此,防止隐私泄露并在Android应用程序中启用细粒度控制是必要的。

?

已经提出了许多方法来保护Android应用程序的安全性,但它们通常侧重于Java代码,因为Android应用程序通常是用Java语言编写的。事实上,Android 还提供了JNI(Java 原生接口)用于在应用中调用原生库,许多开发者倾向于使用第三方原生库来复用现有代码或执行 CPU 密集型任务(如图像过滤和视频编码)。但是,这些第三方原生库的安全性经常被忽略。

?

只有少数现有方法专注于 Android 中原生库的安全性。NativeGuard 是一个典型的框架,它使用进程隔离来沙箱原生应用程序库。它有两个主要优点。首先,NativeGuard 将原生库分离到另一个独立的应用,因此原生库无法完全访问整个应用地址空间,原生库与 Java 代码之间的交互是通过 Android 进程间通信 (IPC) 机制实现的。其次,生成的本机库应用程序不再被授予权限,因此无法执行危险操作。

?

但是,NativeGuard仍然存在一些限制。首先,由于没有向本机库应用程序授予任何权限,因此良性本机库在需要必要权限时会崩溃。其次,NativeGuard 缺乏对原生库的细粒度控制来管理它们的行为。

?

为了确保 Android 中原生库的安全性,我们提出了一种名为 NativeProtector 的实用方法。一方面,受 NativeGuard 的启发,我们使用进程隔离来防止原生库访问整个应用程序地址空间并限制原生库的权限。

?

另一方面,我们通过检测第三方原生库并拦截原生库调用来访问私有数据并执行危险的系统调用,从而对原生库进行细粒度控制。

?

具体而言,第三方本机库作为独立应用程序分开,因此本机库对 Java 代码的访问受到细粒度访问控制的限制。通过结合隔离和拦截,我们可以确保原生库的安全性,而不会使良性原生库崩溃。

?

同时,NativeProtector非常容易部署。它可以在没有 root 权限的情况下作为通用应用程序运行,因为 NativeProtector 静态检测目标应用程序。因此,不需要对 Android 框架进行任何修改。

?

通过结合隔离和拦截,我们提出了一种名为NativeProtector的实用方法,以保护Android应用程序免受恶意第三方本机库的侵害。

?

我们构建了 NativeProtector 的原型,将应用程序与原生库应用程序和 Java 代码分离,并检测原生库以执行细粒度访问控制。

?

我们已经在实际和手动构建的应用程序中评估了NativeProtector。结果表明,NativeProtector对安全性有效,兼容许多应用,性能开销也是可以接受的。

?

Java 原生接口与桌面Java程序类似,Android提供了Java本机接口(JNI)来定义Java代码和本机代码相互调用的框架。通常,开发人员在其应用程序中使用本机库进行代码重用、CPU 密集型任务或应用程序强化。

?

Android 提供了原生开发工具包 (NDK),允许开发人员使用 C 和 C++ 等原生语言实现部分应用。NDK 将原生源代码文件编译为共享库,这些库可以根据应用程序的 Java 代码请求动态加载。

?

我们已经用Java和C编程语言实现了NativeProtector的原型。每个Android应用程序都以名为APK(Android应用程序包)的包文件格式分发。APK文件包含一个名为AndroidManifest.xml的清单文件,dex字节码形式的应用程序代码,XML资源,其他资源以及作为独立Linux共享对象文件(.so)的本机库。为了支持任意应用程序,我们所做的一切都是在APK文件上。

?

我们已经介绍了NativeProtector的设计,实现和评估,这是一个用于调节Android应用程序中第三方原生库的系统。NativeProtector 将本机库和生成的挂钩库分离到另一个服务器应用,原始应用的其余部分作为客户端应用生成。

?

客户端应用在启动时绑定到服务器应用,所有本机函数调用都将替换为对服务器应用的 IPC。挂钩库在服务器应用中截获系统调用,以强制服务器应用中本机库的安全性。我们已经实现了NativeProtector的原型。我们的评估表明,NativeProtector 可以成功调节 Android 应用中的第三方原生库,并引入可接受的开销。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表