本发明涉及信息安全检测,尤其涉及一种基于语义信息提取的android应用跨语言静态分析方法及系统。
背景技术:
1、近十年来,随着android应用研究的繁荣,已经提出了许多应用静态分析技术。这些技术的主要目标是处理android应用中的dex字节码。然而,除了dex字节码之外,现代android应用中普遍存在的是本地代码(通常基于java native interface(jni)接口,使用c/c++编写)。
2、目前,大多数现有的分析框架通常忽略了对其的分析,把本地代码调用看作黑盒,因此,某些敏感行为可能会被忽略。例如,恶意软件可能会在本地方法中隐藏其敏感行为。
技术实现思路
1、本发明通过提供一种基于语义信息提取的android应用跨语言静态分析方法及系统,解决了现有技术中如何检测app跨语言jni代码中的静态数据流分析的技术问题,从而实现了网络信息安全检测。
2、本发明提供了一种基于语义信息提取的android应用跨语言静态分析方法,包括:
3、对带有二进制代码的待分析应用apk安装包进行解包,得到apk中代表java代码的dex字节码文件和代表二进制代码的动态链接库文件;
4、从所述动态链接库文件中提取出语义信息;
5、将所述语义信息转换为java字节码;
6、将所述java字节码重打包到所述dex字节码文件中,生成新的字节码文件;
7、将所述新的字节码文件重打包到apk安装包中,生成新的apk文件;
8、对所述新的apk文件进行静态分析。
9、具体来说,还包括:
10、根据所述java代码中是否有本地修饰符,找到注册到java代码的二进制代码;
11、所述从所述动态链接库文件中提取出语义信息,包括:
12、从所述注册到java代码的二进制代码为入口点,启动基于抽象解释技术的二进制代码静态数据流分析,记录下api接口操作和api调用时的数据流关系。
13、具体来说,所述对所述新的apk文件进行静态分析,包括:
14、通过静态分析工具对所述新的apk文件进行静态分析。
15、本发明还提供了一种基于语义信息提取的android应用跨语言静态分析系统,包括:
16、解包模块,用于对带有二进制代码的待分析应用apk安装包进行解包,得到apk中代表java代码的dex字节码文件和代表二进制代码的动态链接库文件;
17、语义信息提取模块,用于从所述动态链接库文件中提取出语义信息;
18、语义信息转换模块,用于将所述语义信息转换为java字节码;
19、第一重打包模块,用于将所述java字节码重打包到所述dex字节码文件中,生成新的字节码文件;
20、第二重打包模块,用于将所述新的字节码文件重打包到apk安装包中,生成新的apk文件;
21、跨语言静态分析模块,用于对所述新的apk文件进行静态分析。
22、具体来说,还包括:
23、二进制代码获取模块,用于根据所述java代码中是否有本地修饰符,找到注册到java代码的二进制代码;
24、所述语义信息提取模块,具体用于从所述注册到java代码的二进制代码为入口点,启动基于抽象解释技术的二进制代码静态数据流分析,记录下api接口操作和api调用时的数据流关系。
25、具体来说,所述跨语言静态分析模块,具体用于通过静态分析工具对所述新的apk文件进行静态分析。
26、本发明中提供的一个或多个技术方案,至少具有如下技术效果或优点:
27、先提取本地代码的语义摘要,然后将jni接口函数的使用模式转换为相应的java字节码操作,并将本地库函数调用提升为字节码调用。通过利用本地二进制数据流分析,可以揭示这些操作之间的跨语言数据流关系,为本地代码分析提供了一个有前景的方向。本发明能够有效地桥接android应用中的dex字节码和本地代码之间的分析鸿沟,从而实现了网络信息安全检测。与现有技术相比,本发明在准确性、可扩展性和效率方面均表现出色。更重要的是,本发明能够在安装包层面上直接支持现有的工具,不需要对它们做出修改。
1.一种基于语义信息提取的android应用跨语言静态分析方法,其特征在于,包括:
2.如权利要求1所述的基于语义信息提取的android应用跨语言静态分析方法,其特征在于,还包括:
3.如权利要求1或2所述的基于语义信息提取的android应用跨语言静态分析方法,其特征在于,所述对所述新的apk文件进行静态分析,包括:
4.一种基于语义信息提取的android应用跨语言静态分析系统,其特征在于,包括:
5.如权利要求4所述的基于语义信息提取的android应用跨语言静态分析系统,其特征在于,还包括:
6.如权利要求4或5所述的基于语义信息提取的android应用跨语言静态分析系统,其特征在于,所述跨语言静态分析模块,具体用于通过静态分析工具对所述新的apk文件进行静态分析。
