CN117370977A - 一种Android系统恶意软件反编译方法和系统 - Google Patents
一种Android系统恶意软件反编译方法和系统 Download PDFInfo
- Publication number
- CN117370977A CN117370977A CN202311221275.3A CN202311221275A CN117370977A CN 117370977 A CN117370977 A CN 117370977A CN 202311221275 A CN202311221275 A CN 202311221275A CN 117370977 A CN117370977 A CN 117370977A
- Authority
- CN
- China
- Prior art keywords
- apk
- file
- malicious
- data
- android
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000004458 analytical method Methods 0.000 claims abstract description 35
- 230000003068 static effect Effects 0.000 claims abstract description 25
- 238000000605 extraction Methods 0.000 claims abstract description 14
- 238000007781 pre-processing Methods 0.000 claims abstract description 13
- 230000002155 anti-virotic effect Effects 0.000 claims abstract description 12
- 230000002159 abnormal effect Effects 0.000 claims abstract description 9
- 238000012545 processing Methods 0.000 claims abstract description 7
- 238000012216 screening Methods 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 claims description 18
- 230000006835 compression Effects 0.000 claims description 11
- 238000007906 compression Methods 0.000 claims description 11
- 238000004422 calculation algorithm Methods 0.000 claims description 10
- 230000006837 decompression Effects 0.000 claims description 8
- 230000008901 benefit Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 claims description 4
- 230000006399 behavior Effects 0.000 claims description 3
- 230000009193 crawling Effects 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 3
- 238000005549 size reduction Methods 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims description 2
- 238000013480 data collection Methods 0.000 claims 1
- 241000700605 Viruses Species 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000011951 anti-virus test Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
一种新Android系统恶意软件反编译方法和系统,其方法包括:1)数据采集:通过网络爬虫,从目标杀毒软件中抓取安卓APK文件,作为良性APK数据的来源,同时获取恶意APK文件;2)数据预处理:检测并处理异常或不合法的APK文件;根据需要筛选数据,以删除或保留特定类型或属性的APK文件;最后,验证恶意APK数据;3)APK反编译:在传统工具Androguard的基础上,引入了对具有反抗静态分析策略的恶意应用程序进行解析的能力,对解析zip文件和xml文件的相关代码模块进行重新编写;4)APK特征提取:对APK文件进行解析,计算并获取各种统计特征;5)APK特征结果比较:针对恶意APK样本和良性APK样本,对API特征和权限特征调用数量差异较大的特征进行综合分析。
Description
技术领域
本发明涉及计算机技术领域,具体而言,本发明涉及一种Android系统恶意软件反编译方法和系统。
背景技术
安卓(Android)是当前世界上流行的智能终端操作系统之一,因其开放性和免费特点而在全球范围内广泛应用。正因如此,许多研究人员和恶意软件分析者将他们的关注点放在了Android平台上。随着技术不断进步,制作Android恶意软件的成本也逐渐降低,这导致Android恶意软件的数量不断增加。AV-Test Institute最近的估计报告指出,每天新产生超过36万个恶意软件,平均每秒大约产生4.2个恶意软件。随之而来的是大量依附于移动恶意应用和移动恶意代码的黑灰色广告和流量变现的产业链,并导致一系列的安全问题,不仅仅直接侵害了个人用户的权益,还侵蚀和破坏整个开发者的良性生态。
目前对Android恶意应用程序的反编译工具有很多,由google提供的APK(AndroidApplication Package)编译工具APKtool,可以将APK文件解压成smali代码和资源文件,同时也支持对这些代码和资源文件的重新打包。使用APKtool可以方便地查看APK文件的内容,修改其中的资源或代码,或者分析其中的逻辑。APKtool的使用比较简单,只需要在命令行中输入相应的指令即可。dex2jar是一款将Android应用程序的dex文件转换成Java字节码文件的工具,可以用于反编译APK文件。使用dex2jar可以将APK文件中的dex文件提取出来,并转换成Java字节码文件,然后再使用Java反编译工具(如jd-gui)查看Java代码。JD-GUI是一款Java反编译工具,可以用于查看Java字节码文件,并将其转换成Java代码。如果使用dex2jar将APK文件中的dex文件转换成Java字节码文件后,再使用JD-GUI打开,就可以看到其中的Java代码。JADX是一款可以将APK文件转换成Java代码的工具,它不需要将dex文件转换成Java字节码文件,而是直接解析dex文件中的代码并将其转换成Java代码。使用JADX可以方便地查看APK文件中的代码,也可以对其中的代码进行修改和分析。Androguard是一款Python工具,可以用于反编译APK文件并进行静态分析。它可以将APK文件解压成smali代码和资源文件,并提供了一些API,可以用于分析smali代码中的类、方法和字段等信息。
随着技术的不断发展,当前的恶意APK越来越智能地采用了对抗静态分析的方法。这意味着恶意应用程序不仅仅是通过传统的静态分析技术容易检测和分析的,它们还使用了各种技巧和机制来逃避检测,使静态分析变得更加具有挑战性。这些方法包括代码混淆、动态加载、反调试技术等,使恶意APK更加难以分析和检测。
因此,为克服传统静态分析方法所面临的限制,以确保能够有效地识别和理解当前应用程序的内部结构和运行机制,本发明专利设计了一种新的反编译APK的方法。利用该方法获取APK包含的各种文件,并从这些文件中提取目标应用程序的特征,然后对这些特征进行分析。
发明内容
为了克服传统反编译方法的不足,本发明提出一种Android系统恶意软件反编译方法和系统,适用于采用了反抗静态分析的恶意应用程序的情形。
本发明解决其技术问题所采用的技术方案是:
一种Android系统恶意软件反编译方法,包括以下步骤:
1)数据采集:通过网络爬虫,从目标杀毒软件中抓取安卓APK文件,作为良性APK数据的来源。与此同时,从在线恶意样本库MalwareBazaar中获取恶意APK文件,作为恶意APK数据的来源;
2)数据预处理:检测并处理异常或不合法的APK文件,这些文件可能由于错误或损坏而无法正常分析。同时,根据需要筛选数据,以删除或保留特定类型或属性的APK文件。最后,验证恶意APK数据,以确保数据的准确性;
3)APK反编译:在传统工具Androguard的基础上,引入了对具有反抗静态分析策略的恶意应用程序进行解析的能力,对解析zip文件和xml文件的相关代码模块进行重新编写,以应对当前恶意应用程序的高级分析需求;
4)APK特征提取:利用3)中的APK反编译方法,对APK文件进行解析,从中提取AndroidManifest.xml和classes.dex文件。然后,通过对这些源代码的静态分析,计算并获取各种统计特征;
5)APK特征结果比较:针对恶意APK样本和良性APK样本,对API特征和权限特征调用数量差异较大的特征进行综合分析,以全面了解它们之间的差异。
优选地,所述步骤1)中,数据采集包括以下过程:
步骤101,良性APK数据获取阶段,使用预设的网络抓取框架提供的网络爬虫脚本,从目标杀毒软件(例如,金山毒霸和360杀毒)中提取应用程序,即从目标杀毒软件中爬取良性的应用程序,并将这些抓取到的应用程序标记为后续分析的良性APK数据集样本;
步骤102,恶意APK数据获取阶段,从MalwareBazaar在线平台中,获取最新的恶意APK数据集样本。
优选地,所述步骤2)中数据预处理包括以下过程:
步骤201,数据处理阶段,首先,遍历整个APK数据集,计算每个APK文件的唯一标识(如哈希值)。通过比较这些标识,识别和删除重复的APK数据,从而确保每个样本只出现一次,有效减少数据集的冗余性。其次,在数据收集或下载APK文件时,由于网络或其他原因,有时会出现下载中断的情况,导致文件不完整。为了确保数据的完整性,检查每个下载的APK文件,如果发现文件损坏或不完整,将其标记为问题文件并将其从数据集中移除,以保持数据集的完整性和可靠性。此外,为了确保数据集的质量,执行APK文件验证过程,以确定其是否为有效的Android应用程序包。如果发现无效或损坏的APK文件,将其识别并从数据集中排除。
通过这一系列处理步骤,维护一个高质量、干净的APK数据集,以确保后续的分析工作基于可靠的数据进行,同时降低了潜在的错误和干扰。
优选地,所述步骤3)中APK反编译包括以下过程:
步骤301,ZIP解析阶段,在ZIP文件中,每个文件的头部信息标记变量被设置为b"\x50\x4b\x03\x04",中央目录的起始标记变量设置为b"\x50\x4b\x01\x02",中央目录的结束标记变量设置为b"\x50\x4b\x05\x06"。这些标记变量是ZIP文件格式中的关键标识,用于指示文件头、中央目录和中央目录的结束位置。此外,设置新的变量ZIP_DEFLATED=8,用于表示使用DEFLATE算法对文件进行压缩,以减小文件的大小。DEFLATE算法是一种常用的压缩算法,可以有效地减小文件的体积。另外,设置新的变量ZIP_STORED=0,该变量用于表示在文件已经高度压缩或不适合再次压缩时使用。在一些情况下,文件可能已经被压缩到了极限,再次压缩可能不会带来明显的大小减小,因此可以选择不使用压缩,即采用存储(STORED)方式来存储文件,以保持文件的原始状态。
在CentralDirectory类中,为防止恶意应用程序使用异常的字符进行对抗,对该类中存储ZIP文件中某个中央目录条目所对应的文件的名称变量file_name,和存储ZIP文件中某个中央目录条目的额外字段变量extra_fileld,以及存储ZIP文件中某个中央目录条目的注释信息变量comment使用二进制进行保存。
在LocalFileHeader类中,同样,为防止恶意应用程序使用异常字符进行对抗,将此类中file_name、extra_field以及file_data变量使用二进制进行保存,在此类中,extra_field的长度变量使用LocalFileHeader类中通过buff[cd.local_header_off+4:cd.local_header_off+FILE_HEADER_SIZE]保存的长度,而compressed_size变量使用CentralDirectory类中保存的长度。另外,在Android操作系统的源代码中,用于判断ZIP文件中文件解压前的数据长度的方式似乎与一般的ZIP文件规范不太一样,通常,ZIP文件中的文件解压前的数据长度应该由文件头中的uncompressed_size字段来指定。然而,在Android系统的源代码中,作者似乎采用了一种与规范不太一致的方法。而一些恶意应用程序会利用这一不一致性,使得传统解析工具解析失败。为应对此类情况,需要判断文件的压缩方法是否为deflated,若不是deflated(即不是采用标准的DEFLATE压缩算法),那么解压前的数据长度将以uncompressed_size为准。若文件采用了deflated压缩方式,解压前的数据长度将以compressed_size为准,而不是uncompressed_size;
步骤302,xml文件解析阶段,创建树状结构对AndroidManifest.xml文件进行解析,而有些恶意APK会故意加入错误字符,导致无法解析成标准xml。为应对这种情况,在创建新的节点的过程中,当遇到错误字符串时,插入一个空的节点,确保树状结构的完整性和稳定性,以便对xml文件能够继续处理和分析。
优选地,所述步骤4)中APK特征提取包括以下过程:
步骤401,特征选择阶段,将所有Android权限集定义为P,函数集定义为F:
P={p1,p2,p3,...,pn},(1)
F={f1,f2,f3,...,fn},(2)
根据Android API文档提供的内容,将权限与函数之间的关联映射定义为C:
然后,计算二进制API特征,这些特征表示对每个权限控制函数的调用是否存在,称为BC(Binary API Features),以及计算数值API特征,这些特征表示对每个权限控制函数的调用次数,称为NC(Numerical API Features)。
BC={bc1,bc2,bc3,...,bcn},(4)
NC={nc1,nc2,nc3,...,ncn}, (6)
nci=∑δ(fi), (7)
与声明的权限相比,实际使用的权限更精确地揭示了应用程序的行为模式。因此,计算二进制权限特征,这些特征表示对每个权限控制的函数调用是否存在,称为BP(BinaryPermission Features);以及计算数值权限特征,这些特征表示对每个权限控制的所有函数的调用次数,称为NP(Numerical Permission Features)。
BP={bp1,bp2,bp3,...,bpn},(8)
NP={np1,np2,np3,...,npn},(10)
npi=∑δ((fj|(pi,fj)∈C)),(11)
优选地,所述步骤5)中APK特征结果比较包括以下过程:
步骤501,特征结果比较阶段,对恶意APK样本和良性APK样本的特征进行排序,重点关注nci(API调用数量)和npi(权限调用数量)这两个特征。首先,统计恶意APK和良性APK中每个特征的nci和npi;然后,对每个特征在恶意APK中的nci或npi与在良性APK中的nci或npi进行差值计算;最后,分别对API特征和权限特征的差值进行排序,并选择差值较大的特征进行汇总分析。
本发明的第二个方面涉及实施本发明的一种Android系统恶意软件反编译方法的系统,包括数据采集模块、数据预处理模块、APK反编译模块、APK特征提取模块、APK特征结果比较模块,其中,
数据采集模块:通过网络爬虫,从目标杀毒软件中抓取安卓APK文件,作为良性APK数据的来源;与此同时,从在线恶意样本库MalwareBazaar中获取恶意APK文件,作为恶意APK数据的来源;
数据预处理模块:检测并处理异常或不合法的APK文件,这些文件可能由于错误或损坏而无法正常分析;同时,根据需要筛选数据,以删除或保留特定类型或属性的APK文件;最后,验证恶意APK数据,以确保数据的准确性;
APK反编译模块:在传统工具Androguard的基础上,引入了对具有反抗静态分析策略的恶意应用程序进行解析的能力,对解析zip文件和xml文件的相关代码模块进行重新编写,以应对当前恶意应用程序的高级分析需求;
APK特征提取模块:利用上述中的APK反编译方法,对APK文件进行解析,从中提取AndroidManifest.xml和classes.dex文件;然后,通过对这些源代码的静态分析,计算并获取各种统计特征;
APK特征结果比较模块:针对恶意APK样本和良性APK样本,对API特征和权限特征调用数量差异较大的特征进行综合分析,以全面了解它们之间的差异。
本发明的第三个方面涉及一种Android系统恶意软件反编译装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现本发明的Android系统恶意软件反编译方法
本发明的第四个方面涉及一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现本发明的Android系统恶意软件反编译方法。
本发明的优点和积极效果:
本发明针对现有的APK反编译方法无法解析当前的新型恶意应用程序的问题,设计了一种新的APK反编译方法。这一方法采用了解析反抗静态分析的策略,以应对当前新型恶意应用程序样本的挑战。经过对新的数据集,包括1290个样本的广泛测试验证,可以更加确信该方法的有效性。即使在不同的样本数据集情况下,该方法都能够成功解析和提取所需的信息。本发明为解析新型恶意应用程序提供了一种可靠的解决方案,满足后续对恶意APK样本的特征提取需求。这一创新方法为恶意应用程序分析和安全防护领域提供了有力的工具。
附图说明
图1是本发明方法的整体流程图。
图2(a)~图2(b)是本发明方法的实验结果图,其中图2(a)是恶意样本与良性样本中API特征分布,调用次数差值TOP20的情况,图2(b)是恶意样本与良性样本中Permission特征分布,调用次数差值TOP20的情况。
具体实施方式
为了使本发明的技术方案、设计思路能更加清晰,下面结合附图对本发明做进一步详尽的描述。
实施例1
一种Android系统恶意软件反编译方法,在静态数据集的基础上,基于传统Androguard方法,加入解析反抗静态分析的策略,能够对当前新型恶意APK进行反编译,并利用反编译手段筛选得到基于静态数据集的静态特征,对当前恶意APK和良性APK的特征进行分析对比。
一种Android系统恶意软件反编译方法结合了传统的Androguard技术,并引入了抵抗静态分析的策略。该方法不仅能够成功反编译最新的恶意APK,还能够巧妙地综合静态数据集的信息。通过这一策略,能够提取与静态数据集相关的特征,对比分析当前的恶意APK和良性APK之间的特征差异。这一过程可以帮助更好地理解和检测恶意软件。
参照图1、图2,一种Android系统恶意软件反编译方法,包括以下步骤:
1)数据采集:通过网络爬虫,从目标杀毒软件中抓取安卓APK文件,作为良性APK数据的来源。与此同时,从在线恶意样本库MalwareBazaar中获取恶意APK文件,作为恶意APK数据的来源;
2)数据预处理:检测并处理异常或不合法的APK文件,这些文件可能由于错误或损坏而无法正常分析。同时,根据需要筛选数据,以删除或保留特定类型或属性的APK文件。最后,验证恶意APK数据,以确保数据的准确性;
3)APK反编译:在传统工具Androguard的基础上,引入了对具有反抗静态分析策略的恶意应用程序进行解析的能力,对解析zip文件和xml文件的相关代码模块进行重新编写,以应对当前恶意应用程序的高级分析需求;
4)APK特征提取:利用3)中的APK反编译方法,对APK文件进行解析,从中提取AndroidManifest.xml和classes.dex文件。然后,通过对这些源代码的静态分析,计算并获取各种统计特征;
5)APK特征结果比较:针对恶意APK样本和良性APK样本,对API特征和权限特征调用数量差异较大的特征进行综合分析,以全面了解它们之间的差异。
优选地,所述步骤1)中,数据采集包括以下过程:
步骤101,良性APK数据获取阶段,使用预设的网络抓取框架提供的网络爬虫脚本,从目标杀毒软件(例如,金山毒霸和360杀毒)中提取应用程序,即从目标杀毒软件中爬取良性的应用程序,并将这些抓取到的应用程序标记为后续分析的良性APK数据集样本;
步骤102,恶意APK数据获取阶段,从MalwareBazaar在线平台中,获取最新的恶意APK数据集样本。
优选地,所述步骤2)中数据预处理包括以下过程:
步骤201,数据处理阶段,首先,遍历整个APK数据集,计算每个APK文件的唯一标识(如哈希值)。通过比较这些标识,识别和删除重复的APK数据,从而确保每个样本只出现一次,有效减少数据集的冗余性。其次,在数据收集或下载APK文件时,由于网络或其他原因,有时会出现下载中断的情况,导致文件不完整。为了确保数据的完整性,检查每个下载的APK文件,如果发现文件损坏或不完整,将其标记为问题文件并将其从数据集中移除,以保持数据集的完整性和可靠性。此外,为了确保数据集的质量,执行APK文件验证过程,以确定其是否为有效的Android应用程序包。如果发现无效或损坏的APK文件,将其识别并从数据集中排除。
通过这一系列处理步骤,维护一个高质量、干净的APK数据集,以确保后续的分析工作基于可靠的数据进行,同时降低了潜在的错误和干扰。
优选地,所述步骤3)中APK反编译包括以下过程:
步骤301,ZIP解析阶段,在ZIP文件中,每个文件的头部信息标记变量被设置为b"\x50\x4b\x03\x04",中央目录的起始标记变量设置为b"\x50\x4b\x01\x02",中央目录的结束标记变量设置为b"\x50\x4b\x05\x06"。这些标记变量是ZIP文件格式中的关键标识,用于指示文件头、中央目录和中央目录的结束位置。此外,设置新的变量ZIP_DEFLATED=8,用于表示使用DEFLATE算法对文件进行压缩,以减小文件的大小。DEFLATE算法是一种常用的压缩算法,可以有效地减小文件的体积。另外,设置新的变量ZIP_STORED=0,该变量用于表示在文件已经高度压缩或不适合再次压缩时使用。在一些情况下,文件可能已经被压缩到了极限,再次压缩可能不会带来明显的大小减小,因此可以选择不使用压缩,即采用存储(STORED)方式来存储文件,以保持文件的原始状态。
在CentralDirectory类中,为防止恶意应用程序使用异常的字符进行对抗,对该类中存储ZIP文件中某个中央目录条目所对应的文件的名称变量file_name,和存储ZIP文件中某个中央目录条目的额外字段变量extra_fileld,以及存储ZIP文件中某个中央目录条目的注释信息变量comment使用二进制进行保存。
在LocalFileHeader类中,同样,为防止恶意应用程序使用异常字符进行对抗,将此类中file_name、extra_field以及file_data变量使用二进制进行保存,在此类中,extra_field的长度变量使用LocalFileHeader类中通过buff[cd.local_header_off+4:cd.local_header_off+FILE_HEADER_SIZE]保存的长度,而compressed_size变量使用CentralDirectory类中保存的长度。另外,在Android操作系统的源代码中,用于判断ZIP文件中文件解压前的数据长度的方式似乎与一般的ZIP文件规范不太一样,通常,ZIP文件中的文件解压前的数据长度应该由文件头中的uncompressed_size字段来指定。然而,在Android系统的源代码中,作者似乎采用了一种与规范不太一致的方法。而一些恶意应用程序会利用这一不一致性,使得传统解析工具解析失败。为应对此类情况,需要判断文件的压缩方法是否为deflated,若不是deflated(即不是采用标准的DEFLATE压缩算法),那么解压前的数据长度将以uncompressed_size为准。若文件采用了deflated压缩方式,解压前的数据长度将以compressed_size为准,而不是uncompressed_size;
步骤302,xml文件解析阶段,创建树状结构对AndroidManifest.xml文件进行解析,而有些恶意APK会故意加入错误字符,导致无法解析成标准xml。为应对这种情况,在创建新的节点的过程中,当遇到错误字符串时,插入一个空的节点,确保树状结构的完整性和稳定性,以便对xml文件能够继续处理和分析。
优选地,所述步骤4)中APK特征提取包括以下过程:
步骤401,特征选择阶段,将所有Android权限集定义为P,函数集定义为F:
P={p1,p2,p3,...,pn},(1)
F={f1,f2,f3,...,fn},(2)
根据Android API文档提供的内容,将权限与函数之间的关联映射定义为C:
然后,计算二进制API特征,这些特征表示对每个权限控制函数的调用是否存在,称为BC(Binary API Features),以及计算数值API特征,这些特征表示对每个权限控制函数的调用次数,称为NC(Numerical API Features)。
BC={bc1,bc2,bc3,...,bcn},(4)
NC={nc1,nc2,nc3,...,ncn}, (6)
nci=∑δ(fi), (7)
与声明的权限相比,实际使用的权限更精确地揭示了应用程序的行为模式。因此,计算二进制权限特征,这些特征表示对每个权限控制的函数调用是否存在,称为BP(BinaryPermission Features);以及计算数值权限特征,这些特征表示对每个权限控制的所有函数的调用次数,称为NP(Numerical Permission Features)。
BP={bp1,bp2,bp3,...,bpn},(8)
NP={np1,np2,np3,...,npn},(10)
npi=∑δ((fj|(pi,fj)∈C)),(11)
优选地,所述步骤5)中APK特征结果比较包括以下过程:
步骤501,特征结果比较阶段,对恶意APK样本和良性APK样本的特征进行排序,重点关注nci(API调用数量)和npi(权限调用数量)这两个特征。首先,统计恶意APK和良性APK中每个特征的nci和npi;然后,对每个特征在恶意APK中的nci或npi与在良性APK中的nci或npi进行差值计算;最后,分别对API特征和权限特征的差值进行排序,并选择差值较大的特征进行汇总分析。
特征结果说明:图2a和2b显示,本发明使用包含645个恶意APK样本和645个良性APK样本,并对样本中最终选择的特征进行分析。研究结果表明,在新型恶意APK和良性APK之间存在明显的差异。这些差异在API特征和权限特征的调用数量上显现,呈现出恶意应用程序和良性应用程序之间的显著差异模式。
实施例2
本实施例涉及实施实施例1的一种Android系统恶意软件反编译方法的系统,包括数据采集模块、数据预处理模块、APK反编译模块、APK特征提取模块、APK特征结果比较模块;数据采集模块、数据预处理模块、APK反编译模块、APK特征提取模块、APK特征结果比较模块分别对应实施例1的步骤1)~5)的内容。
实施例3
本实施例涉及一种Android系统恶意软件反编译装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现实施例1的Android系统恶意软件反编译方法。
实施例4
本实施例涉及一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现实施例1的Android系统恶意软件反编译方法。
以上实施例仅用以说明本发明的技术方案,而非对其限制。尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员依然可以根据前述实施例或附图进行其他不同形式的修改或变动。这里无法对所有实施方式或技术方案进行穷举,所有本发明原则内的修改、更换等,均应包含在本发明要求的保护范围内。
Claims (9)
1.一种Android系统恶意软件反编译方法,其特征在于,包括以下步骤:
1)数据采集:通过网络爬虫,从目标杀毒软件中抓取安卓APK文件,作为良性APK数据的来源;与此同时,从在线恶意样本库MalwareBazaar中获取恶意APK文件,作为恶意APK数据的来源;
2)数据预处理:检测并处理异常或不合法的APK文件,这些文件可能由于错误或损坏而无法正常分析;同时,根据需要筛选数据,以删除或保留特定类型或属性的APK文件;最后,验证恶意APK数据,以确保数据的准确性;
3)APK反编译:在传统工具Androguard的基础上,引入了对具有反抗静态分析策略的恶意应用程序进行解析的能力,对解析zip文件和xml文件的相关代码模块进行重新编写,以应对当前恶意应用程序的高级分析需求;
4)APK特征提取:利用步骤3)中的APK反编译方法,对APK文件进行解析,从中提取AndroidManifest.xml和classes.dex文件;然后,通过对这些源代码的静态分析,计算并获取各种统计特征;
5)APK特征结果比较:针对恶意APK样本和良性APK样本,对API特征和权限特征调用数量差异较大的特征进行综合分析,以全面了解它们之间的差异。
2.如权利要求1所述的一种Android系统恶意软件反编译方法,其特征在于,所述步骤1)中,数据采集包括以下过程:
步骤101,良性APK数据获取阶段,使用预设的网络抓取框架提供的网络爬虫脚本,从目标杀毒软件中提取应用程序,即从目标杀毒软件中爬取良性的应用程序,并将这些抓取到的应用程序标记为后续分析的良性APK数据集样本;
步骤102,恶意APK数据获取阶段,从MalwareBazaar在线平台中,获取最新的恶意APK数据集样本。
3.如权利要求1所述的一种Android系统恶意软件反编译方法,其特征在于,所述步骤2)中数据预处理包括以下过程:
步骤201,数据处理阶段,首先,遍历整个APK数据集,计算每个APK文件的唯一标识;通过比较这些标识,识别和删除重复的APK数据,从而确保每个样本只出现一次,有效减少数据集的冗余性;其次,在数据收集或下载APK文件时,由于网络或其他原因,有时会出现下载中断的情况,导致文件不完整;为了确保数据的完整性,检查每个下载的APK文件,如果发现文件损坏或不完整,将其标记为问题文件并将其从数据集中移除,以保持数据集的完整性和可靠性;此外,为了确保数据集的质量,执行APK文件验证过程,以确定其是否为有效的Android应用程序包;如果发现无效或损坏的APK文件,将其识别并从数据集中排除;
通过这一系列处理步骤,维护一个高质量、干净的APK数据集,以确保后续的分析工作基于可靠的数据进行,同时降低潜在的错误和干扰。
4.如权利要求1所述的一种Android系统恶意软件反编译方法,其特征在于,所述步骤3)中,APK反编译包括以下过程:
步骤301,ZIP解析阶段,在ZIP文件中,每个文件的头部信息标记变量被设置为b"\x50\x4b\x03\x04",中央目录的起始标记变量设置为b"\x50\x4b\x01\x02",中央目录的结束标记变量设置为b"\x50\x4b\x05\x06";这些标记变量是ZIP文件格式中的关键标识,用于指示文件头、中央目录和中央目录的结束位置;此外,设置新的变量ZIP_DEFLATED=8,用于表示使用DEFLATE算法对文件进行压缩,以减小文件的大小;;另外,设置新的变量ZIP_STORED=0,该变量用于表示在文件已经高度压缩或不适合再次压缩时使用;在一些情况下,文件可能已经被压缩到了极限,再次压缩可能不会带来明显的大小减小,因此可以选择不使用压缩,即采用存储STORED方式来存储文件,以保持文件的原始状态;
在CentralDirectory类中,为防止恶意应用程序使用异常的字符进行对抗,对该类中存储ZIP文件中某个中央目录条目所对应的文件的名称变量file_name,和存储ZIP文件中某个中央目录条目的额外字段变量extra_fileld,以及存储ZIP文件中某个中央目录条目的注释信息变量comment使用二进制进行保存;
在LocalFileHeader类中,同样,为防止恶意应用程序使用异常字符进行对抗,将此类中file_name、extra_field以及file_data变量使用二进制进行保存,在此类中,extra_field的长度变量使用LocalFileHeader类中通过buff[cd.local_header_off+4:cd.local_header_off+FILE_HEADER_SIZE]保存的长度,而compressed_size变量使用CentralDirectory类中保存的长度;另外,在Android操作系统的源代码中,用于判断ZIP文件中文件解压前的数据长度的方式似乎与一般的ZIP文件规范不太一样,通常,ZIP文件中的文件解压前的数据长度应该由文件头中的uncompressed_size字段来指定;然而,在Android系统的源代码中,作者似乎采用了一种与规范不太一致的方法;而一些恶意应用程序会利用这一不一致性,使得传统解析工具解析失败;为应对此类情况,需要判断文件的压缩方法是否为deflated,若不是deflated(即不是采用标准的DEFLATE压缩算法),那么解压前的数据长度将以uncompressed_size为准;若文件采用了deflated压缩方式,解压前的数据长度将以compressed_size为准,而不是uncompressed_size;
步骤302,xml文件解析阶段,创建树状结构对AndroidManifest.xml文件进行解析,而有些恶意APK会故意加入错误字符,导致无法解析成标准XML;为应对这种情况,在创建新的节点的过程中,当遇到错误字符串时,插入一个空的节点,确保树状结构的完整性和稳定性,以便对xml文件能够继续处理和分析。
5.如权利要求1所述的一种Android系统恶意软件反编译方法,其特征在于,所述步骤4)中APK特征提取包括以下过程:
步骤401,特征选择阶段,将所有Android权限集定义为P,函数集定义为F:
P={p1,p2,p3,...,pn}, (1)
F={f1,f2,f3,...,fn}, (2)
根据Android API文档提供的内容,将权限与函数之间的关联映射定义为C:
然后,计算二进制API特征,这些特征表示对每个权限控制函数的调用是否存在,称为BC(Binary API Features),以及计算数值API特征,这些特征表示对每个权限控制函数的调用次数,称为NC(Numerical API Features);
BC={bc1,bc2,bc3,...,bcn}, (4)
NC={nc1,nc2,nc3,...,ncn}, (6)
nci=∑δ(fi), (7)
与声明的权限相比,实际使用的权限更精确地揭示了应用程序的行为模式;因此,计算二进制权限特征,这些特征表示对每个权限控制的函数调用是否存在,称为BP(BinaryPermission Features);以及计算数值权限特征,这些特征表示对每个权限控制的所有函数的调用次数,称为NP(Numerical Permission Features);
BP={bp1,bp2,bp3,...,bpn}, (8)
NP={np1,np2,np3,...,npn}, (10)
npi=∑δ((fj|(pi,fj)∈C)), (11)。
6.如权利要求1所述的一种Android系统恶意软件反编译方法,其特征在于,所述步骤5)中APK特征结果比较包括以下过程:
步骤501,特征结果比较阶段,对恶意APK样本和良性APK样本的特征进行排序,重点关注nci(API调用数量)和npi(权限调用数量)这两个特征;首先,统计恶意APK和良性APK中每个特征的nci和npi;然后,对每个特征在恶意APK中的nci或npi与在良性APK中的nci或npi进行差值计算;最后,分别对API特征和权限特征的差值进行排序,并选择差值较大的特征进行汇总分析。
7.实现权利要求1所述的一种Android系统恶意软件反编译方法的系统,其特征在于:包括数据采集模块、数据预处理模块、APK反编译模块、APK特征提取模块、APK特征结果比较模块,其中,
数据采集模块:通过网络爬虫,从目标杀毒软件中抓取安卓APK文件,作为良性APK数据的来源;与此同时,从在线恶意样本库MalwareBazaar中获取恶意APK文件,作为恶意APK数据的来源;
数据预处理模块:检测并处理异常或不合法的APK文件,这些文件可能由于错误或损坏而无法正常分析;同时,根据需要筛选数据,以删除或保留特定类型或属性的APK文件;最后,验证恶意APK数据,以确保数据的准确性;
APK反编译模块:在传统工具Androguard的基础上,引入了对具有反抗静态分析策略的恶意应用程序进行解析的能力,对解析zip文件和xml文件的相关代码模块进行重新编写,以应对当前恶意应用程序的高级分析需求;
APK特征提取模块:利用上述中的APK反编译方法,对APK文件进行解析,从中提取AndroidManifest.xml和classes.dex文件;然后,通过对这些源代码的静态分析,计算并获取各种统计特征;
APK特征结果比较模块:针对恶意APK样本和良性APK样本,对API特征和权限特征调用数量差异较大的特征进行综合分析,以全面了解它们之间的差异。
8.一种Android系统恶意软件反编译装置,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-6中任一项所述的Android系统恶意软件反编译方法。
9.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现权利要求1-6中任一项所述的Android系统恶意软件反编译方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311221275.3A CN117370977A (zh) | 2023-09-21 | 2023-09-21 | 一种Android系统恶意软件反编译方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311221275.3A CN117370977A (zh) | 2023-09-21 | 2023-09-21 | 一种Android系统恶意软件反编译方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117370977A true CN117370977A (zh) | 2024-01-09 |
Family
ID=89401296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311221275.3A Pending CN117370977A (zh) | 2023-09-21 | 2023-09-21 | 一种Android系统恶意软件反编译方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117370977A (zh) |
-
2023
- 2023-09-21 CN CN202311221275.3A patent/CN117370977A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108763928B (zh) | 一种开源软件漏洞分析方法、装置和存储介质 | |
Chen et al. | Detecting android malware using clone detection | |
CN106845171B (zh) | 一种Android应用程序代码保护机制鉴别方法 | |
US20170372068A1 (en) | Method to identify known compilers functions, libraries and objects inside files and data items containing an executable code | |
Glanz et al. | CodeMatch: obfuscation won't conceal your repackaged app | |
US20040205411A1 (en) | Method of detecting malicious scripts using code insertion technique | |
EP2693356B1 (en) | Detecting pirated applications | |
US20070152854A1 (en) | Forgery detection using entropy modeling | |
US11048798B2 (en) | Method for detecting libraries in program binaries | |
JP2006522395A (ja) | マクロと実行可能なスクリプトにおいてマルウェアを検出する方法およびシステム | |
JPWO2006087780A1 (ja) | 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法 | |
Li et al. | FEPDF: a robust feature extractor for malicious PDF detection | |
WO2020014663A1 (en) | Systems and methods for detecting obfuscated malware in obfuscated just-in-time (jit) compiled code | |
CN114386032A (zh) | 电力物联网设备的固件检测系统及方法 | |
Ladisa et al. | Towards the detection of malicious java packages | |
CN109800575A (zh) | 一种Android应用程序的安全检测方法 | |
CN105760761A (zh) | 软件行为分析方法和装置 | |
Feichtner et al. | Obfuscation-resilient code recognition in Android apps | |
CN117435480A (zh) | 一种二进制文件检测方法、装置、电子设备及存储介质 | |
CN117370977A (zh) | 一种Android系统恶意软件反编译方法和系统 | |
KR101824699B1 (ko) | 안드로이드 앱 분석 장치 및 그 방법과, 이를 실행하는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 | |
CN114417347A (zh) | 应用程序的漏洞检测方法、装置、设备、存储介质和程序 | |
CN115310087A (zh) | 一种基于抽象语法树的网站后门检测方法和系统 | |
CN114925369A (zh) | 一种针对业务系统容器安全的静态分析方法与系统 | |
CN113626823A (zh) | 一种基于可达性分析的组件间交互威胁检测方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |