searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

安卓应用程序与恶意软件同源性概念介绍

2024-12-06 09:30:51
6
0

一、Android文件结构

Android操作系统以安卓应用程序包作为其应用的软件分发与安装格式。类似于Windows平台下的EXE文件,APK文件是一个经过打包的文件,包含应用程序正常运行所需的所有文件,如代码文件、资源文件、清单文件等。

APK文件的本质是ZIP格式的压缩包,由Android应用的各种文件与目录构成。以下是APK文件中常见组成部分及其描述:

META-INF目录:该目录包含与系统安全相关的数据,文件的发布名称、签名、验证签名有效性的证书等信息被存储于MANIFEST.MFCERT.SFCERT.RSA等文件中。

res目录:该目录下存储不同类型的应用资源,这些资源与应用的显示与外观相关,如界面布局信息、部分图像文件等。

assets目录:同样存储应用的资源文件。但是与前者不同,此目录下的文件不参与编译过程,而是以原生文件的形式存在,如音视频资源。

lib目录:包含与CPU架构相关的原生库文件,这些库文件通常是被编译为共享对象(so文件)的C/C++库。这些库文件被存放于对应CPU架构的子目录下,如armeabi-v7aarm64-v8ax86等。

AndroidManifest.xml文件:清单文件,是APK目录下的核心文件之一,描述了应用的基本信息,包括四大组件的静态注册信息、应用声明的权限信息与该应用适配的Android版本信息。

resource.arsc文件:与前面提到的存储资源的目录不同,一个Android应用的部分资源被编译后以二进制格式存储在该文件中。

classes.dex文件:DEXDalvik Executable)文件,即能够在Dalvik虚拟机(Dalvik Virtual MachineDVM)环境下直接运行的可执行文件,是Android应用的代码文件。在Android 5.0及之后的版本中,DVM被安卓运行时(Android RuntimeART)所取代,但DEX文件格式依然是应用程序代码的标准编译格式。

由以上描述可以看出,DEX文件是APK目录下的核心代码文件。虽然以二进制格式存储,但它仍然包含了大量的信息,包括字节码指令、字符串常量、类型信息等,这些信息描述了应用程序的逻辑和行为,可以被分析和利用来提取特征。

二、Android恶意软件生成与同源性

Android应用完成从代码转换到APK文件的过程包括代码编译、资源处理、打包和签名。首先,应用发布者使用Java/Kotlin语言编写源代码,对XML文件与资源文件进行声明。然后,源代码先被编译器编译为Java字节码(class文件),再通过D8dx编译器完成多个class文件的结构优化与合并,并生成可执行的DEX文件。接下来,在完成部分资源的编译后,可执行文件、清单文件与资源文件被打包,同时为了应用的安全性,采用摘要与签名技术来确保文件的完整性与发布者的真实性。

与上述过程相反,当用户在Google Play或应用商店获取到APK文件后,经过解析、验证、预编译、文件复制与组件注册过程,Android应用程序就完成了在终端设备上的安装。

恶意软件通常采用复用和变种现有恶意代码的生成策略,从而以较小代价达到绕过检测与范围扩散的目的。具体地,应用开发者选择一个现有成熟的恶意软件作为基线,通过修改原始恶意代码的某些部分来生成变种。这些成熟的恶意软件可能具有有效的传播机制、难以检测的特性或者能够实现特定的恶意功能。

在该过程中,由于代码重用、共享的功能模块、相似的通信模式、共享的逃避检测技术、以及相似的攻击手段以及构建信息等多方面的一致性,恶意软件的同源性得到体现,并由此引出恶意软件家族的概念。

恶意软件家族是指一组具有相似特征、共享同一代码基础、展现相似行为模式,或由同一作者或团体创建的恶意软件集合。著名的恶意软件家族包括主要用于金融诈骗的Zeus、利用漏洞自动传播的勒索软件WannaCry等。

0条评论
0 / 1000
c****7
2文章数
0粉丝数
c****7
2 文章 | 0 粉丝
c****7
2文章数
0粉丝数
c****7
2 文章 | 0 粉丝
原创

安卓应用程序与恶意软件同源性概念介绍

2024-12-06 09:30:51
6
0

一、Android文件结构

Android操作系统以安卓应用程序包作为其应用的软件分发与安装格式。类似于Windows平台下的EXE文件,APK文件是一个经过打包的文件,包含应用程序正常运行所需的所有文件,如代码文件、资源文件、清单文件等。

APK文件的本质是ZIP格式的压缩包,由Android应用的各种文件与目录构成。以下是APK文件中常见组成部分及其描述:

META-INF目录:该目录包含与系统安全相关的数据,文件的发布名称、签名、验证签名有效性的证书等信息被存储于MANIFEST.MFCERT.SFCERT.RSA等文件中。

res目录:该目录下存储不同类型的应用资源,这些资源与应用的显示与外观相关,如界面布局信息、部分图像文件等。

assets目录:同样存储应用的资源文件。但是与前者不同,此目录下的文件不参与编译过程,而是以原生文件的形式存在,如音视频资源。

lib目录:包含与CPU架构相关的原生库文件,这些库文件通常是被编译为共享对象(so文件)的C/C++库。这些库文件被存放于对应CPU架构的子目录下,如armeabi-v7aarm64-v8ax86等。

AndroidManifest.xml文件:清单文件,是APK目录下的核心文件之一,描述了应用的基本信息,包括四大组件的静态注册信息、应用声明的权限信息与该应用适配的Android版本信息。

resource.arsc文件:与前面提到的存储资源的目录不同,一个Android应用的部分资源被编译后以二进制格式存储在该文件中。

classes.dex文件:DEXDalvik Executable)文件,即能够在Dalvik虚拟机(Dalvik Virtual MachineDVM)环境下直接运行的可执行文件,是Android应用的代码文件。在Android 5.0及之后的版本中,DVM被安卓运行时(Android RuntimeART)所取代,但DEX文件格式依然是应用程序代码的标准编译格式。

由以上描述可以看出,DEX文件是APK目录下的核心代码文件。虽然以二进制格式存储,但它仍然包含了大量的信息,包括字节码指令、字符串常量、类型信息等,这些信息描述了应用程序的逻辑和行为,可以被分析和利用来提取特征。

二、Android恶意软件生成与同源性

Android应用完成从代码转换到APK文件的过程包括代码编译、资源处理、打包和签名。首先,应用发布者使用Java/Kotlin语言编写源代码,对XML文件与资源文件进行声明。然后,源代码先被编译器编译为Java字节码(class文件),再通过D8dx编译器完成多个class文件的结构优化与合并,并生成可执行的DEX文件。接下来,在完成部分资源的编译后,可执行文件、清单文件与资源文件被打包,同时为了应用的安全性,采用摘要与签名技术来确保文件的完整性与发布者的真实性。

与上述过程相反,当用户在Google Play或应用商店获取到APK文件后,经过解析、验证、预编译、文件复制与组件注册过程,Android应用程序就完成了在终端设备上的安装。

恶意软件通常采用复用和变种现有恶意代码的生成策略,从而以较小代价达到绕过检测与范围扩散的目的。具体地,应用开发者选择一个现有成熟的恶意软件作为基线,通过修改原始恶意代码的某些部分来生成变种。这些成熟的恶意软件可能具有有效的传播机制、难以检测的特性或者能够实现特定的恶意功能。

在该过程中,由于代码重用、共享的功能模块、相似的通信模式、共享的逃避检测技术、以及相似的攻击手段以及构建信息等多方面的一致性,恶意软件的同源性得到体现,并由此引出恶意软件家族的概念。

恶意软件家族是指一组具有相似特征、共享同一代码基础、展现相似行为模式,或由同一作者或团体创建的恶意软件集合。著名的恶意软件家族包括主要用于金融诈骗的Zeus、利用漏洞自动传播的勒索软件WannaCry等。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0