CN109740311A - 安卓应用的安全加固方法及装置 - Google Patents

安卓应用的安全加固方法及装置 Download PDF

Info

Publication number
CN109740311A
CN109740311A CN201910015396.XA CN201910015396A CN109740311A CN 109740311 A CN109740311 A CN 109740311A CN 201910015396 A CN201910015396 A CN 201910015396A CN 109740311 A CN109740311 A CN 109740311A
Authority
CN
China
Prior art keywords
file
android
encryption
destination
file destination
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
Application number
CN201910015396.XA
Other languages
English (en)
Inventor
谢展琰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Xiaopeng Motors Technology Co Ltd
Original Assignee
Guangzhou Xiaopeng Motors Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Xiaopeng Motors Technology Co Ltd filed Critical Guangzhou Xiaopeng Motors Technology Co Ltd
Priority to CN201910015396.XA priority Critical patent/CN109740311A/zh
Publication of CN109740311A publication Critical patent/CN109740311A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本申请提供的安卓应用的安全加固方法及装置,属于安卓技术领域。该安卓应用的安全加固方法包括:对安卓应用编译后生成的待加密文件进行加密,生成加密文件;修改所述加密文件的文件头标识,得到目标文件;调用所述目标文件对应的加载模块对所述目标文件进行解密并加载,以运行所述安卓应用。从而实现对APK中的待加密文件进行加密,并通过调用目标文件对应的加载模块对目标文件进行解密并加载,使得加解密不在APK中进行,进而有效避免非法用户直接通过反编译工具对该安卓应用进行反编译,进一步保证了安卓应用的安全性,进而有效避免了给软件开发商造成巨大损失,保障了软件开发商的利益。

Description

安卓应用的安全加固方法及装置
技术领域
本申请涉及安卓技术领域,具体而言,涉及安卓应用的安全加固方法及装置。
背景技术
目前市场上针对Android(安卓)应用的攻防愈来愈激烈,但是对于Android应用的防护手段始终停留在Android应用侧的保护与攻击。并且目前的加固方案都是针对APK(AndroidPackage,安卓安装包)本身的,比如对dex文件做加密后,然后仍然需要在APK本身里面做一个脱壳程序进行解密,否则APK是不能正常运行的,但是一旦被攻击者或者是非法用户拿到APK后,便可以通过反编译工具对APK进行逆向编译,得到APK内的解密程序,从而对APK中被加密的文件进行破解,进而使得非法用户可以使用破解后的应用,进而给软件开发商造成巨大损失。
发明内容
有鉴于此,本申请实施例提供安卓应用的安全加固方法及装置。
第一方面,本申请实施例提供的一种安卓应用的安全加固方法,包括:对安卓应用编译后生成的待加密文件进行加密,生成加密文件;修改所述加密文件的文件头标识,得到目标文件;调用所述目标文件对应的加载模块对所述目标文件进行解密并加载,以运行所述安卓应用。在本申请实施例中,通过对安卓应用编译后生成的待加密文件进行加密,生成加密文件;修改所述加密文件的文件头标识,得到目标文件;调用所述目标文件对应的加载模块对所述目标文件进行解密并加载,以运行所述安卓应用。从而实现对APK中的待加密文件进行加密,并通过调用目标文件对应的加载模块对目标文件进行解密并加载,使得加解密不在APK中进行,进而有效避免非法用户直接通过反编译工具对该安卓应用进行反编译,进一步保证了安卓应用的安全性,进而有效避免了给软件开发商造成巨大损失,保障了软件开发商的利益。
结合第一方面,本申请实施例提供了第一方面的第一种可能的实施方式,所述待加密文件包括可执行的第一文件和用于动态链接共享库的第二文件,所述对安卓应用编译后生成的待加密文件进行加密,生成加密文件,包括:对安卓应用编译后生成的所述可执行文件进行加密,生成第一加密文件;和/或对安卓应用编译后生成的所述共享库文件进行加密,生成第二加密文件。在本申请实施例中,通过分别对安卓应用编译后生成的所述可执行文件进行加密,生成第一加密文件;和/或对安卓应用编译后生成的所述共享库文件进行加密,生成第二加密文件,进一步保障了安卓应用的安全性。
结合第一方面的第一种可能的实施方式,本申请实施例提供了第一方面的第二种可能的实施方式,所述可执行文件为dex文件,所述用于动态链接的共享库文件为so文件,所述修改所述加密文件的文件头标识,得到目标文件,包括:将所述第一加密文件的文件头标识dex修改为dox,得到第一目标文件;将所述第二加密文件的文件头标识0x7f修改为0x7e,得到第二目标文件。在本申请实施例中,通过将所述第一加密文件的文件头标识dex修改为dox,得到第一目标文件;将所述第二加密文件的文件头标识0x7f修改为0x7e,得到第二目标文件。从而避免后期对不需要解密的文件进行解密,节约数据处理资源,进而降低数据的处理压力,提高数据处理效率,加快解密时间。进一步缩短在加载安卓应用时的无效等待时间。
结合第一方面的第二种可能的实施方式,本申请实施例提供了第一方面的第三种可能的实施方式,所述调用所述目标文件对应的加载模块对所述目标文件进行解密并加载,以运行所述安卓应用的步骤之前包括:确定所述目标文件的文件头标识是否与预设标识匹配。在本申请实施例中,通过在调用所述目标文件对应的加载模块对所述目标文件进行解密并加载之前对目标文件的文件头进行识别,从而可以进一步避免对不需要解密的文件进行解密,节约数据处理资源,进而降低数据的处理压力,提高数据处理效率。
结合第一方面的第三种可能的实施方式,本申请实施例提供了第一方面的第四种可能的实施方式,所述确定所述目标文件的文件头标识是否与预设标识匹配进一步包括:若所述目标文件为所述第一目标文件,判断所述第一目标文件的文件头标识是否与所述dox匹配;若所述目标文件为所述第二目标文件,判断所述第二目标文件的文件头标识是否与所述0x7e匹配。
结合第一方面的第二种可能的实施方式,本申请实施例提供了第一方面的第五种可能的实施方式,所述调用所述目标文件对应的加载模块对所述目标文件进行解密并加载,以运行所述安卓应用的步骤,包括:若所述目标文件为所述第一目标文件,基于第一加载模块对所述第一目标文件进行解密并加载;若所述目标文件为所述第二目标文件,基于第二加载模块对所述第二目标文件进行解密并加载。在本申请实施例中,通过使用第一加载模块对第一目标文件进行解密并加载和基于第二加载模块对所述第二目标文件进行解密并加载,从而针对不同的目标文件使用不同的加载模块进行解密和加载,进一步保障了安卓应用的安全性。
结合第一方面的第五种可能的实施方式,本申请实施例提供了第一方面的第六种可能的实施方式,所述第一加载模块为虚拟机。
结合第一方面的第五种可能的实施方式,本申请实施例提供了第一方面的第七种可能的实施方式,所述第二加载模块为链接器。
结合第一方面,本申请实施例提供了第一方面的第八种可能的实施方式,所述方法还包括:在采集到用于动态调试所述安卓应用的调试指令时,获取所述安卓应用中用于禁用进程跟踪的配置参数;根据所述配置参数禁止执行所述调试指令,以使安卓系统中的进程跟踪被禁用。在本申请实施例中,通过在采集到用于动态调试所述安卓应用的调试指令时,获取所述安卓应用中用于禁用进程跟踪的配置参数;根据所述配置参数以使内核禁用ptrace函数,从而禁止执行所述调试指令,以使所述安卓系统中的进程跟踪被禁用。从而有效避免非法用户通过动态调试的方式实现对该安卓应用的反编译,进一步保证了安卓应用的安全性,进而有效避免了给软件开发商造成巨大损失,保障了软件开发商的利益。
第二方面,本申请实施例提供的一种安卓应用的安全加固装置,所述装置包括:加密模块,用于对安卓应用编译后生成的待加密文件进行加密,生成加密文件;修改模块,用于修改所述加密文件的文件头标识,得到目标文件;安卓应用解密模块,用于调用所述目标文件对应的加载模块对所述目标文件进行解密并加载,以运行所述安卓应用。
结合第二方面,本申请实施例提供了第二方面的第一种可能的实施方式,所述待加密文件包括编译生成的可执行文件和/或用于动态链接的共享库文件,加密模块,还用于对安卓应用编译后生成的所述可执行文件进行加密,生成第一加密文件;和/或对安卓应用编译后生成的所述共享库文件进行加密,生成第二加密文件。
结合第二方面的第一种可能的实施方式,本申请实施例提供了第二方面的第二种可能的实施方式,所述可执行文件为dex文件,所述用于动态链接的共享库文件为so文件,所述修改模块,还用于将所述第一加密文件的文件头标识dex修改为dox,得到第一目标文件;将所述第二加密文件的文件头标识0x7f修改为0x7e,得到第二目标文件。
结合第二方面的第二种可能的实施方式,本申请实施例提供了第二方面的第三种可能的实施方式,在所述解密模块之前,所述装置还包括,识别模块,用于确定所述目标文件的文件头标识是否与预设标识匹配。
结合第二方面的第三种可能的实施方式,本申请实施例提供了第二方面的第四种可能的实施方式,识别模块,还用于若所述目标文件为所述第一目标文件,判断所述第一目标文件的文件头标识是否与所述dox匹配;若所述目标文件为所述第二目标文件,判断所述第二目标文件的文件头标识是否与所述0x7e匹配。
结合第二方面的第二种可能的实施方式,本申请实施例提供了第二方面的第四种可能的实施方式,所述解密模块,还用于若所述目标文件为所述第一目标文件,基于第一加载模块对所述第一目标文件进行解密并加载;若所述目标文件为所述第二目标文件,基于第二加载模块对所述第二目标文件进行解密并加载。
结合第二方面的第五种可能的实施方式,本申请实施例提供了第二方面的第六种可能的实施方式,所述第一加载模块为虚拟机。
结合第二方面的第五种可能的实施方式,本申请实施例提供了第二方面的第六种可能的实施方式,所述第二加载模块为链接器。
结合第二方面,本申请实施例提供了第二方面的第八种可能的实施方式,所述安卓应用的安全加固装置还包括:处理模块,用于在采集到用于动态调试所述安卓应用的调试指令时,获取所述安卓应用中用于禁用进程跟踪的配置参数;根据所述配置参数禁止执行所述调试指令,以使安卓系统中的进程跟踪被禁用。
本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请第一实施例提供的安卓应用的安全加固方法的流程图;
图2为本申请第二实施例提供的安卓应用的安全加固装置的功能模块示意图;
图3为本申请第三实施例提供的一种终端设备的示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
第一实施例
由于现有的安卓应用的加固方案存在被非法用户通过反编译工具对APK进行逆向编译以进行破解,使得安卓应用的安全性较低的技术问题,为了提高安卓应用的安全性以及避免给软件开发商造成巨大损失,本实施例首先提供了一种安卓应用的安全加固方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。以下对本实施例进行详细介绍。
第一实施例
请参阅图1,是本申请实施例提供的安卓应用的安全加固方法的流程图,所述方法应用于安装有安卓系统的终端设备。下面将对图1所示的具体流程进行详细阐述。
步骤S101,对安卓应用编译后生成的待加密文件进行加密,生成加密文件。
可选的,待加密文件包括可执行的第一文件和用于动态链接共享库的第二文件。
可选的,第一文件为dex文件(即class.dex文件),所述第二文件为so文件(即.so格式的文件)。
作为一种实施场景,待加密文件包括编译生成的可执行文件和用于动态链接的共享库文件,步骤S101包括:对安卓应用编译后生成的所述可执行文件进行加密,生成第一加密文件;和对安卓应用编译后生成的所述共享库文件进行加密,生成第二加密文件。
举例来说,若在某一安卓应用中同时存在可执行文件和用于动态链接的共享库文件时,在加载可执行文件和共享库文件时,可以先加载可执行文件,然后加载共享库文件,当然,也可以是先加载共享库文件,再加载可执行文件。或者是通过多进程(或多线程)同时加载可执行文件和共享库文件。
在本申请实施例中,通过分别对安卓应用编译后生成的所述可执行文件进行加密,生成第一加密文件;和对安卓应用编译后生成的所述共享库文件进行加密,生成第二加密文件,进一步保障了安卓应用的安全性。
作为另一种实施场景,待加密文件包括编译生成的可执行文件或用于动态链接的共享库文件,步骤S101包括:对安卓应用编译后生成的所述可执行文件进行加密,生成第一加密文件;或对安卓应用编译后生成的所述共享库文件进行加密,生成第二加密文件。
作为另一种实施场景,在对安卓应用编译后生成的所述可执行文件进行加密,生成第一加密文件之前,本申请实施例所提供的安卓应用的安全加固方法还包括:获取基于安卓应用所编译出的安卓应用初始文件;将所述初始文件所对应的文件类型转换为预设文件类型,生成第一文件。
可选的,安卓应用为安卓平台的应用程序。
可选的,初始文件为classes.jar文件。
可选的,预设文件类型为dex文件类型。
作为一种应用场景,在Andorid系统在编译安卓应用时,会先编译出classes.jar文件(即初始文件),然后将classes.jar文件的文件类型转换为classes.dex文件。
在本申请实施例中,通过将初始文件转换为预设文件类型,生成第一文件,从而实现对特定文件格式(即预设文件类型)的第一文件进行加密,进行有效提高了安卓应用的安全性。
在本申请实施例中,所述安卓应用中不包括用于对所述加密文件进行解密的解密算法。
作为一种实施方式,步骤S101包括:基于AES加密算法对安卓应用编译后生成的所述可执行文件进行加密,生成第一加密文件;和/或基于AES加密算法对安卓应用编译后生成的所述共享库文件进行加密,生成第二加密文件。
当然,在实际使用中,还可以基于MD5算法或者是DES算法对所述待加密文件进行加密。在此,不作具体限定。
步骤S102,修改所述加密文件的文件头标识,得到目标文件。
作为一种实施场景,所述可执行文件为dex文件,所述用于动态链接的共享库文件为so文件,步骤S102,包括:将所述第一加密文件的文件头标识dex修改为dox,得到第一目标文件;将所述第二加密文件的文件头标识0x7f修改为0x7e,得到第二目标文件。
在本申请实施例中,由于第一加密文加密前为dex文件,其中dex文件所对应的文件头标识为dex。第二加密文加密前为so文件,其中so文件所对应的文件头标识为0x7f。
在本申请实施例中,通过将所述第一加密文件的文件头标识dex修改为dox,得到第一目标文件;将所述第二加密文件的文件头标识0x7f修改为0x7e,得到第二目标文件。进一步改造待加密文件,通过进一步改造待加密文件让待加密文件不是一个标准的dex文件以及不是一个标准的so文件,进而从根本上解决反编译工具静态逆向编译dex文件和so文件,进一步加强了安卓应用的安全性。进一步地,通过将加密后的文件的文件头标识进行修改,使得在对该加密后的文件进行解密时,可以快速找到该文件,进而加快处理效率,缩短解密时间。
步骤S103,调用所述目标文件对应的加载模块对所述目标文件进行解密并加载,以运行所述安卓应用。
作为一种实施方式,步骤S103包括:若所述目标文件为所述第一目标文件,基于第一加载模块对所述第一目标文件进行解密并加载,以运行所述安卓应用;若所述目标文件为所述第二目标文件,基于第二加载模块对所述第二目标文件进行解密并加载,以运行所述安卓应用。
可选的,所述第一加载模块为虚拟机。
可选的,若目标文件为所述第二目标文件,在加载所述目标文件时可以基于第二加载模块加载所述第二目标文件。
可选的,所述第二加载模块为链接器。
可选的,所述基于第一加载模块对所述第一目标文件进行解密并加载,包括:基于第一加载模块中预设的用于对所述第一目标文件进行解密的解密规则对所述第一目标文件进行解密。
可选的,解密规则为预先约定的,以用于对所述第一目标文件进行解密。
可选的,所述基于第二加载模块对所述第二目标文件进行解密并加载,包括:基于第二加载模块中预设的用于对所述第二目标文件进行解密的解密规则对所述第二目标文件进行解密。
可选的,解密规则为预先约定的,以用于对所述第二目标文件进行解密。
当然,在实际使用中,也可以是先在安卓系统中预先配置多种解密算法,从而实现对所述待解密文件进行解密。在此,不作具体限定。
可选的,基于第二加载模块中预设的用于对所述第二目标文件进行解密的解密规则对所述第二目标文件进行解密,包括:所述安卓系统中的链接器基于预设的解密算法对所述待解密文件进行解密。
可选的,所述解密算法与对所述第二目标文件进行加密的算法对应,即解密算法为与对所述第二目标文件进行加密的算法是对称算法。例如,该解密算法可以是AES(Advanced Encryption Standard,高级加密标准)解密算法。
当然,在实际使用中,也可以使用与所述待解密文件进行加密的算法非对称的解密算法来对目标文件(第一目标文件和第二目标文件)进行解密。例如,解密算法也可以是基于MD5(Message Digest Algorithm,消息摘要算法第五版)算法或者是DES(DataEncryption Standard,数据加密标准)算法,以实现对所述待解密文件进行解密。在此,不作具体限定。
在本申请实施例中,通过使用第一加载模块对第一目标文件进行解密并加载和基于第二加载模块对所述第二目标文件进行解密并加载,从而针对不同的目标文件使用不同的加载模块进行解密和加载,进一步保障了安卓应用的安全性。
在一可能的实施例中,在步骤S103之前,本申请实施例所提供的安卓应用的安全加固方法还包括:确定所述目标文件的文件头标识是否与预设标识匹配。
可选的,预设标识为用户预先设置的,一般的,可以根据用户需求进行设置。例如,当目标文件为第一目标文件时,该预设标识为dox。当目标文件为第二目标文件时,该预设标识为0x7e。
可选的,所述确定所述目标文件的文件头标识是否与预设标识匹配进一步包括:若所述目标文件为所述第一目标文件,判断所述第一目标文件的文件头标识是否与所述dox匹配;若所述目标文件为所述第二目标文件,判断所述第二目标文件的文件头标识是否与所述0x7e匹配。
可选的,当第一目标文件的文件头标识为dox时,则表征第一目标文件的文件头标识与所述dox匹配。
可选的,当第二目标文件的文件头标识为0x7e时,则表征第二目标文件的文件头标识与所述0x7e匹配。
在本申请实施例中,通过对目标文件的文件头进行识别,从而可以进一步避免对不需要解密的文件进行解密,节约数据处理资源,进而降低数据的处理压力,提高数据处理效率。
在一可能的实施例中,在步骤S103之后,本申请实施例提供的安卓应用的安全加固方法还包括:安装解密后的目标文件所对应的安卓应用于终端设备。
可选的,解密后的目标文件所对应的所述安卓应用是指在对目标文件正确解密后的安卓应用。
在一可能的实施例中,安卓应用的安全加固方法还包括:在采集到用于动态调试所述安卓应用的调试指令时,获取所述安卓应用中用于禁用进程跟踪的配置参数;根据所述配置参数禁止执行所述调试指令,以使所述安卓系统中的进程跟踪被禁用。
其中,配置参数为在安卓应用开发时所配置的。一般的,配置参数的具体设置可以根据用户需求来设置,在此,不作具体限定。
在本申请实施例中,通过在采集到用于动态调试所述安卓应用的调试指令时,获取所述安卓应用中用于禁用进程跟踪的配置参数;根据所述配置参数以使内核禁用ptrace函数(即进程监控函数,如父进程可以控制子进程),从而禁止执行所述调试指令,以使所述安卓系统中的进程跟踪被禁用。从而有效避免非法用户通过动态调试的方式实现对该安卓应用的反编译,进一步保证了安卓应用的安全性,进而有效避免了给软件开发商造成巨大损失,保障了软件开发商的利益。
作为一种应用场景,在汽车的车载电脑中安装该安卓应用时,先通过车载电脑中预先配置的安卓系统读取安卓应用中的待解密文件,再通过车载电脑中的安卓系统中的解密区域中的解密模块对目标文件进行解密。进而安装解密后的所述安卓应用于所述车载电脑中。使得即使方法用户获取到该安卓应用后,也无法通过反编译工具对该安卓应用进行反编译,必须通过车载电脑中的安卓系统中预设的用于对所述待解密文件进行解密的解密规则对所述待解密文件进行解密,进而保证了安卓应用的安全性。
在一可能的实施例中,安卓应用的安全加固方法还包括:配置用于禁用进程跟踪的配置参数至所述安卓应用中。
可选的,配置参数为在安卓应用开发时所配置的。一般的,配置参数的具体设置可以根据用户需求来设置,在此,不作具体限定。
在本申请实施例中,通过配置用于禁用进程跟踪的配置参数至所述安卓应用中,进而使得用户在使用该安卓应用时,一旦监测到用户调用内核ptrace函数(即进程监控函数,如父进程可以控制子进程)对该安卓应用进行动态调试,从而禁用内核ptrace,以使所述安卓系统中的进程跟踪被禁用。从而有效避免非法用户通过动态调试的方式实现对该安卓应用的反编译,进一步保证了安卓应用的安全性,进而有效避免了给软件开发商造成巨大损失,保障了软件开发商的利益。
本申请实施例所提供的安卓应用的安全加固方法,通过对安卓应用编译后生成的待加密文件进行加密,生成加密文件;修改所述加密文件的文件头标识,得到目标文件;安卓应用调用所述目标文件对应的加载模块对所述目标文件进行解密并加载,以运行所述安卓应用。从而实现对APK中的待加密文件进行加密,并通过调用目标文件对应的加载模块对目标文件进行解密并加载,使得加解密不在APK中进行,进而有效避免非法用户直接通过反编译工具对该安卓应用进行反编译,进一步保证了安卓应用的安全性,进而有效避免了给软件开发商造成巨大损失,保障了软件开发商的利益。
第二实施例
对应于第一实施例中的安卓应用的安全加固方法,图2示出了采用第一实施例所示的安卓应用的安全加固方法一一对应的安卓应用的安全加固装置。如图2所示,所述安卓应用的安全加固装置400包括加密模块410、修改模块420和解密模块430。其中,加密模块410、修改模块420和解密模块430的实现功能与第一实施例中对应的步聚一一对应,为避免赘述,本实施例不一一详述。
加密模块410,用于对安卓应用编译后生成的待加密文件进行加密,生成加密文件。
可选的,所述待加密文件包括编译生成的可执行文件和/或用于动态链接的共享库文件,加密模块410,还用于对安卓应用编译后生成的所述可执行文件进行加密,生成第一加密文件;和/或对安卓应用编译后生成的所述共享库文件进行加密,生成第二加密文件。
修改模块420,用于修改所述加密文件的文件头标识,得到目标文件。
可选的,所述可执行文件为dex文件,所述用于动态链接的共享库文件为so文件,所述修改模块420,还用于将所述第一加密文件的文件头标识dex修改为dox,得到第一目标文件;将所述第二加密文件的文件头标识0x7f修改为0x7e,得到第二目标文件。
解密模块430,用于若所述目标文件的文件头标识与所述预设标识匹配时,在与所述目标文件所对应的安卓应用之外的解密区域中对所述目标文件进行解密。
可选的,所述解密模块430,还用于若所述目标文件为所述第一目标文件,基于第一加载模块对所述第一目标文件进行解密并加载;若所述目标文件为所述第二目标文件,基于第二加载模块对所述第二目标文件进行解密并加载。
可选的,所述第一加载模块为虚拟机。
可选的,所述第二加载模块为链接器。
在一可能的实施例中,在所述解密模块430之前,所述安卓应用的安全加固装置400还包括,识别模块,用于确定所述目标文件的文件头标识是否与预设标识匹配。
可选的,所述识别模块430,还用于若所述目标文件为所述第一目标文件,判断所述第一目标文件的文件头标识是否与所述dox匹配;若所述目标文件为所述第二目标文件,判断所述第二目标文件的文件头标识是否与所述0x7e匹配。
在一可能的实施例中,所述安卓应用的安全加固装置400还包括:处理模块,用于在采集到用于动态调试所述安卓应用的调试指令时,获取所述安卓应用中用于禁用进程跟踪的配置参数;根据所述配置参数禁止执行所述调试指令,以使安卓系统中的进程跟踪被禁用。
第三实施例
如图3所示,是终端设备500的示意图。所述终端设备500内安装有安卓系统,所述终端设备500包括存储器502、处理器504以及存储在所述存储器502中并可在所述处理器504上运行的计算机程序503,所述计算机程序503被处理器504执行时实现第一实施例中的所述安卓应用的安全加固方法,为避免重复,此处不再赘述。或者,所述计算机程序503被处理器504执行时实现第二实施例所述安卓应用的安全加固装置中各模块/单元的功能,为避免重复,此处不再赘述。
示例性的,计算机程序503可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器502中,并由处理器504执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序503在终端设备500中的执行过程。例如,计算机程序503可以被分割成第二实施例中的加密模块410、修改模块420和解密模块430,各模块的具体功能如第一实施例或第二实施例所述,在此不一一赘述。
可选的,终端设备500可以是安装有安卓系统的车载电脑、智能手机、桌上型计算机、笔记本、掌上电脑等计算设备。
可选的,终端设备500也可以是安装有安卓系统且可以编译安卓应用的车载电脑、智能手机、桌上型计算机、笔记本、掌上电脑等计算设备。
其中,存储器502可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器502用于存储程序,所述处理器504在接收到执行指令后,执行所述程序,前述本申请实施例任一实施例揭示的流程定义的方法可以应用于处理器504中,或者由处理器504实现。
处理器504可能是一种集成电路芯片,具有信号的处理能力。上述的处理器504可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
可以理解的是,图3所示的结构仅为终端设备500的一种结构示意图,终端设备500还可以包括比图3所示更多或更少的组件。图3中所示的各组件可以采用硬件、软件或其组合实现。
第四实施例
本申请实施例还提供一种存储介质,所述存储介质上存储有指令,当所述指令在计算机上运行时,所述计算机程序被处理器执行时实现第一实施例中的所述安卓应用的安全加固方法,为避免重复,此处不再赘述。或者,所述计算机程序被处理器执行时实现第二实施例中的所述安卓应用的安全加固装置中各模块/单元的功能,为避免重复,此处不再赘述。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现,基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景的方法。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

Claims (10)

1.一种安卓应用的安全加固方法,其特征在于,所述方法包括:
对安卓应用编译后生成的待加密文件进行加密,生成加密文件;
修改所述加密文件的文件头标识,得到目标文件;
调用所述目标文件对应的加载模块对所述目标文件进行解密并加载,以运行所述安卓应用。
2.根据权利要求1所述的方法,其特征在于,所述待加密文件包括编译生成的可执行文件和/或用于动态链接的共享库文件,所述对安卓应用编译后生成的待加密文件进行加密,生成加密文件,包括:
对安卓应用编译后生成的所述可执行文件进行加密,生成第一加密文件;和/或
对安卓应用编译后生成的所述共享库文件进行加密,生成第二加密文件。
3.根据权利要求2所述的方法,其特征在于,所述可执行文件为dex文件,所述用于动态链接的共享库文件为so文件,所述修改所述加密文件的文件头标识,得到目标文件,包括:
将所述第一加密文件的文件头标识dex修改为dox,得到第一目标文件;
将所述第二加密文件的文件头标识0x7f修改为0x7e,得到第二目标文件。
4.根据权利要求3所述的方法,其特征在于,所述调用所述目标文件对应的加载模块对所述目标文件进行解密并加载,以运行所述安卓应用的步骤之前包括:
确定所述目标文件的文件头标识是否与预设标识匹配。
5.根据权利要求4所述的方法,其特征在于,所述确定所述目标文件的文件头标识是否与预设标识匹配进一步包括:
若所述目标文件为所述第一目标文件,判断所述第一目标文件的文件头标识是否与所述dox匹配;
若所述目标文件为所述第二目标文件,判断所述第二目标文件的文件头标识是否与所述0x7e匹配。
6.根据权利要求3所述的方法,其特征在于,所述调用所述目标文件对应的加载模块对所述目标文件进行解密并加载,以运行所述安卓应用的步骤,包括:
若所述目标文件为所述第一目标文件,基于第一加载模块对所述第一目标文件进行解密并加载;
若所述目标文件为所述第二目标文件,基于第二加载模块对所述第二目标文件进行解密并加载。
7.根据权利要求6所述的方法,其特征在于,所述第一加载模块为虚拟机。
8.根据权利要求6所述的方法,其特征在于,所述第二加载模块为链接器。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在采集到用于动态调试所述安卓应用的调试指令时,获取所述安卓应用中用于禁用进程跟踪的配置参数;
根据所述配置参数禁止执行所述调试指令,以使安卓系统中的进程跟踪被禁用。
10.一种安卓应用的安全加固装置,其特征在于,所述装置包括:
加密模块,用于对安卓应用编译后生成的待加密文件进行加密,生成加密文件;
修改模块,用于修改所述加密文件的文件头标识,得到目标文件;
解密模块,用于调用所述目标文件对应的加载模块对所述目标文件进行解密并加载,以运行所述安卓应用。
CN201910015396.XA 2019-01-07 2019-01-07 安卓应用的安全加固方法及装置 Pending CN109740311A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910015396.XA CN109740311A (zh) 2019-01-07 2019-01-07 安卓应用的安全加固方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910015396.XA CN109740311A (zh) 2019-01-07 2019-01-07 安卓应用的安全加固方法及装置

Publications (1)

Publication Number Publication Date
CN109740311A true CN109740311A (zh) 2019-05-10

Family

ID=66363861

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910015396.XA Pending CN109740311A (zh) 2019-01-07 2019-01-07 安卓应用的安全加固方法及装置

Country Status (1)

Country Link
CN (1) CN109740311A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110414217A (zh) * 2019-07-31 2019-11-05 广东小天才科技有限公司 应用程序的安全运行方法、装置、电子设备和存储介质
CN110764782A (zh) * 2019-10-31 2020-02-07 贵阳动视云科技有限公司 软件的保护方法及装置
CN111914225A (zh) * 2020-07-15 2020-11-10 广东电网有限责任公司 一种源代码保护系统及源代码加密方法
CN113987471A (zh) * 2021-10-29 2022-01-28 山西大鲲智联科技有限公司 可执行文件执行方法、装置、电子设备和计算机可读介质
CN113987470A (zh) * 2021-10-29 2022-01-28 山西大鲲智联科技有限公司 可执行文件处理方法、装置、电子设备和计算机可读介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105844160A (zh) * 2016-06-21 2016-08-10 北京金山安全软件有限公司 驱动程序隐藏方法、装置和设备
CN106650330A (zh) * 2016-12-22 2017-05-10 合肥国信车联网研究院有限公司 一种基于Dex加载器的Android应用软件加固保护方法
CN107025390A (zh) * 2017-04-26 2017-08-08 北京洋浦伟业科技发展有限公司 软件安装包的加固方法及装置
CN107122635A (zh) * 2017-04-27 2017-09-01 北京洋浦伟业科技发展有限公司 一种so文件的加固方法、装置和apk的加固方法
CN107977553A (zh) * 2017-12-25 2018-05-01 中国电子产品可靠性与环境试验研究所 移动应用程序的安全加固的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105844160A (zh) * 2016-06-21 2016-08-10 北京金山安全软件有限公司 驱动程序隐藏方法、装置和设备
CN106650330A (zh) * 2016-12-22 2017-05-10 合肥国信车联网研究院有限公司 一种基于Dex加载器的Android应用软件加固保护方法
CN107025390A (zh) * 2017-04-26 2017-08-08 北京洋浦伟业科技发展有限公司 软件安装包的加固方法及装置
CN107122635A (zh) * 2017-04-27 2017-09-01 北京洋浦伟业科技发展有限公司 一种so文件的加固方法、装置和apk的加固方法
CN107977553A (zh) * 2017-12-25 2018-05-01 中国电子产品可靠性与环境试验研究所 移动应用程序的安全加固的方法及装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110414217A (zh) * 2019-07-31 2019-11-05 广东小天才科技有限公司 应用程序的安全运行方法、装置、电子设备和存储介质
CN110414217B (zh) * 2019-07-31 2023-03-24 广东小天才科技有限公司 应用程序的安全运行方法、装置、电子设备和存储介质
CN110764782A (zh) * 2019-10-31 2020-02-07 贵阳动视云科技有限公司 软件的保护方法及装置
CN111914225A (zh) * 2020-07-15 2020-11-10 广东电网有限责任公司 一种源代码保护系统及源代码加密方法
CN111914225B (zh) * 2020-07-15 2024-03-19 广东电网有限责任公司 一种源代码保护系统及源代码加密方法
CN113987471A (zh) * 2021-10-29 2022-01-28 山西大鲲智联科技有限公司 可执行文件执行方法、装置、电子设备和计算机可读介质
CN113987470A (zh) * 2021-10-29 2022-01-28 山西大鲲智联科技有限公司 可执行文件处理方法、装置、电子设备和计算机可读介质
CN113987470B (zh) * 2021-10-29 2022-12-23 山西大鲲智联科技有限公司 可执行文件处理方法、装置、电子设备和计算机可读介质

Similar Documents

Publication Publication Date Title
CN109740311A (zh) 安卓应用的安全加固方法及装置
US10148442B2 (en) End-to-end security for hardware running verified software
Noorman et al. Sancus: Low-cost trustworthy extensible networked devices with a zero-software trusted computing base
US10176324B2 (en) System, method and computer program product for protecting software via continuous anti-tampering and obfuscation transforms
US7870399B2 (en) Software trusted platform module and application security wrapper
EP2864925B1 (en) Managing use of a field programmable gate array with reprogrammable cryptographic operations
US11392672B2 (en) Computer program code obfuscation methods and systems
CN100447736C (zh) 包括固件接口运行时环境保护字段的设备和方法
US11216570B2 (en) Reducing compromise of sensitive data in virtual machine
US7970133B2 (en) System and method for secure and flexible key schedule generation
CN110750791B (zh) 基于内存加密保障可信执行环境抗物理攻击的方法及系统
CN106599627A (zh) 基于虚拟机保护应用安全的方法及装置
CN109255259A (zh) 一种高安全加解密运算能力扩展方法及系统
CN105825085B (zh) 应用程序的处理方法及装置
CN111639311A (zh) 防止反编译可执行文件的方法、装置、计算机设备和介质
US20210392143A1 (en) Method for data protection in a data processing cluster with policy-based partition
Zhou et al. Smile: Secure memory introspection for live enclave
CN112287357A (zh) 一种针对嵌入式裸机系统的控制流验证方法与系统
US11615188B2 (en) Executing software
US11216561B2 (en) Executing processes in sequence
CN113569265B (zh) 一种数据处理方法、系统及装置
Hataba et al. A proposed software protection mechanism for autonomous vehicular cloud computing
CN115344886B (zh) 一种模型加密方法、模型解密方法及装置
US20210390163A1 (en) Method for data protection in a data processing cluster with authentication
US9378360B2 (en) Secure if antecedent

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
CB02 Change of applicant information

Address after: 510000 No.8 Songgang street, Cencun, Tianhe District, Guangzhou City, Guangdong Province

Applicant after: GUANGZHOU XIAOPENG MOTORS TECHNOLOGY Co.,Ltd.

Address before: Room 245, 333 jiufo Jianshe Road, Zhongxin Guangzhou Knowledge City, Luogang District, Guangzhou City, Guangdong Province 510000

Applicant before: GUANGZHOU XIAOPENG MOTORS TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
RJ01 Rejection of invention patent application after publication

Application publication date: 20190510

RJ01 Rejection of invention patent application after publication