一种基于eBPF的Android软件脱壳方法及系统

文档序号:37599800发布日期:2024-04-18 12:40阅读:14来源:国知局
一种基于eBPF的Android软件脱壳方法及系统

本发明属于android安全领域,具体涉及一种基于ebpf的android软件脱壳方法及系统。


背景技术:

1、截至2023年一月,android操作系统占据移动操作系统的大部分份额,约71.77%。并且android平台一直以来都是移动恶意软件的重要攻击目标,根据卡巴斯基的数据,仅2022年,android平台共检测到1661743个恶意安装程序,196476个新的移动银行木马病毒,以及10543个新的移动勒索软件木马。因此,恶意软件检测对于android移动安全至关重要。android软件加壳技术原本是用来保护软android软件dex代码不被泄露,防止逆向工程,保护软件知识产权。但同时,android恶意软件滥用加壳技术来防止恶意代码被分析,保护恶意载荷,躲避代码审查,对android移动安全造成了巨大威胁。

2、android软件脱壳技术用于对抗android软件加壳技术,暴露软件原始载荷,即apk中的dex文件数据,对android移动安全具有重要意义。android软件脱壳中常用的方法包括虚拟机脱壳,动态调试脱壳,动态二进制插桩脱壳,编写脱壳镜像等方式。实验表明,随着加壳技术的不断进化,以上方法均被现有的加壳技术不同程度地反制,加壳技术通过检测设备指纹,特殊内存和文件,特殊进程等方式进行反脱壳。

3、为了提高android软件脱壳的有效性和效率,研究者提出了多种方案。du an等人开发了droidunpack系统,通过修改android系统源码,修改特定系统函数来达到捕获dex数据的目的,但脱壳策略比较固定,实现较为复杂且已无法处理现在的大多数软件壳。xue等人提出了一种适应性的脱壳方法(packerg rind),通过动态二进制插桩观察软件壳行为来确定脱壳策略。但随着加壳技术加入对二进制插桩进程的检测,该方法也不再有效。xue等人提出硬件辅助的脱壳方法,可以有效应对反脱壳技术。然而,其依然依赖于传输数据到电脑主机进行分析,架构复杂且易受网络攻击。


技术实现思路

1、针对上述现有问题,本发明的目的在于提供一种基于ebpf的android软件脱壳方法,该方法使用linux内核中的ebpf技术,通过从内核层级监控加壳软件的dex数据流,从内核层级跟踪native函数及系统调用,能够有效规避各种反脱壳技术,提高了android软件脱壳的有效性和效率。

2、为了达到上述目的,本发明采用如下技术方案:

3、一种基于ebpf的android软件脱壳方法,所述方法包括:

4、对android软件脱壳即获取apk中隐藏的dex数据;

5、识别加壳的apk文件,并根据apk壳信息生成对应的ebpf配置文件;

6、使用生成的ebpf配置文件初始化ebpf程序,挂载对应的用户层及内核层的监控点;

7、从内核层级监控相关函数是否执行、并收集相关参数和内存数据;

8、数据收集完成后,根据收集的数据重新组装dex文件,并修复dex文件的头信息等内容。

9、根据监控的情况修改ebpf配置,提高监控程序运行和脱壳效率。

10、进一步的,所述根据apk壳信息生成对应的ebpf配置文件过程,需要对apk信息进行扫描识别,提取apk所包含的java方法、java类、so文件特征信息,根据特征识别壳的来源。

11、进一步的,所述识别软件壳的来源的过程需要提前构建apk壳的特征数据库,根据提取的特征与数据库中的特征进行相似度计算从而得出软件壳的来源,具体相似度计算公式如下:

12、

13、其中,w*表示为每一项特征赋予的权重,和分别表示某种软件壳的具体项特征和待分析软件壳的具体项特征,分别表示加壳软件的java方法、java类、so库文件的特征。

14、进一步的,所述android软件脱壳需要挂载的监控点主要包括uprobe和kprobe两类,根据android版本不同,挂载的具体监控点也不同。监控的函数主要包括dex加载类,dex解析类,dex对象生成类,class解析类,codeitem解释类,文件操作类的函数。

15、进一步的,所述挂载对应监控点的过程需要计算函数地址偏移,具体包括:

16、需要提前根据设备的android系统信息,构建监控点函数所在内存地址偏移的映射,具体步骤包括:

17、读取系统/proc/pid/maps的内容(其中pid为zygote或zygote64进程的pid)。

18、查找目标共享库的内存地址。

19、使用objdump查看监控点函数的地址偏移信息。

20、计算整体地址偏移,具体计算公式为:

21、offset=addrl+offsetf

22、其中addrl为共享库在内存中的地址,offsetf为目标函数在共享库中的偏移。

23、进一步的,所述数据收集过程包括:

24、在监控点挂载后,只有当目标函数被调用时,才会进行对应数据的收集,并且提前确定待脱壳软件的独特uid,根据uid进行程序过滤,提高脱壳效率及性能。

25、使用ebpf程序提供的函数从内核层级收集具体内存地址的数据,并根据所监控的具体函数收集参数值。监控到的事件信息和所收集到的数据通过perf缓冲区输出到相应的事件处理程序进行进一步处理。

26、进一步的,当没有监控到新的dex数据后,ebpf程序停止运行,并将收集到的dex数据进行分析组装,输出为有效的dex文件。

27、进一步的,所述dex数据收集过程完成后,需要对dex文件的内容进行修复,以防止反编译失败。具体的修复内容包括:对dex文件进行校验,确保其结构完整性。修复可能因文件损坏或其他问题导致的校验错误。恢复dex文件的头部信息,包括dex魔数、版本号等。恢复dex文件中的类和方法索引,以确保类与方法的正确链接。修复可能存在的字节码对齐问题,以确保字节码的正确解析和执行。

28、本发明还提供了一种基于ebpf的android软件脱壳系统,其特征在于,所述系统包括:

29、分析准备模块,分析apk加壳来源,生成ebpf配置文件;

30、脱壳模块,用于ebpf程序初始化,设置监控点,收集dex数据;

31、数据处理模块,用于分析处理收集的dex数据,组装dex文件,对dex文件进行修复。

32、因为本发明采用上述技术方案,因此具备以下有益效果:

33、一、本发明使用ebpf技术监控android native函数及系统调用进行android软件脱壳,因此可以规避加壳技术中的反脱壳技术,解决了现有android软件脱壳技术方案会被反制的问题,提高了android软件脱壳的有效性和效率。

34、二、提出了根据apk壳信息生成ebpf配置文件的技术方案,提前对apk壳进行扫描识别,提取特征信息,根据特征匹配确定壳的来源,有效识别软件壳。

35、三、提出了针对android版本的监控点挂载方案,根据不同版本挂载不同的监控点,适应性强。

36、四、提出了计算函数地址偏移的技术方案,提前构建映射关系,精确计算地址偏移,确保监控准确。

37、五、提出了数据收集与处理的技术方案,仅收集目标函数调用时的数据,提高效率。并针对收集的数据进行校验、修复,确保脱壳质量。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1