本申请各实施例属于网络安全,具体涉及一种代码特征的隐匿方法以及装置。
背景技术:
1、随着软件分析技术的逐渐发展,一款软件开发出来之后可以比较轻易的被提取出特征并基于该特征做标记和分析。在需要隐私保护和代码保护等场景下,软件开发者往往不希望开发出来的软件被快速地分析并提取出样本特征,此时会采取加壳、加密等方式来保护软件。但是,这类保护方式比较单一,并且加壳软件、加密软件本身也存在强特征,同样容易被分析后还原出原始特征,对于软件及其代码的保护效果差。
技术实现思路
1、为了解决现有技术存在的对于软件及其代码的保护效果差的技术问题,本申请提供了一种代码特征的隐匿方法及装置。
2、第一方面,本申请提供了一种代码特征的隐匿方法,包括:
3、获取公开网络中的开源代码;
4、根据开源代码的编程语言,选择相应的代码处理引擎对开源代码进行编译检查;
5、当开源代码能够编译成功时,将开源代码存储到代码数据库中;
6、对存储到代码数据库中的开源代码进行筛选,去除异常代码;
7、对筛选后的开源代码进行运行测试,去除能够导致进程异常的代码;
8、在代码数据库中选取优先级排序中最靠前的目标代码,通过目标代码对待隐匿代码进行隐匿处理;
9、所述开源代码的优先级通过以下方式确定:
10、获取所述开源代码的热度信息、更新时间和编译后文件的大小;
11、根据所述热度信息计算第一分值 a1,根据所述更新时间计算第二分值 a2,根据所述编译后文件的大小计算第三分值 a3;
12、根据所述第一分值 a1、所述第二分值 a2和所述第三分值 a3计算所述开源代码的总分值 a:其中, α表示所述热度信息的权重, β表示所述更新时间的权重, γ表示所述编译后文件的大小的权重;
13、根据所述开源代码的总分值 a对所述开源代码按照由高到低的顺序进行排序,以确定所述开源代码的优先级。
14、第二方面,本申请提供了一种代码特征的隐匿装置,包括:
15、获取模块,用于获取公开网络中的开源代码;
16、编译检查模块,用于根据开源代码的编程语言,选择相应的代码处理引擎对开源代码进行编译检查;
17、存储模块,用于当开源代码能够编译成功时,将开源代码存储到代码数据库中;
18、筛选模块,用于对存储到代码数据库中的开源代码进行筛选,去除异常代码;
19、运行测试模块,用于对筛选后的开源代码进行运行测试,去除导致进程异常的代码;
20、隐匿处理模块,用于在代码数据库中选取优先级排序中最靠前的目标代码,通过目标代码对待隐匿代码进行隐匿处理; 所述开源代码的优先级通过以下方式确定:
21、获取所述开源代码的热度信息、更新时间和编译后文件的大小;
22、根据所述热度信息计算第一分值 a1,根据所述更新时间计算第二分值 a2,根据所述编译后文件的大小计算第三分值 a3;
23、根据所述第一分值 a1、所述第二分值 a2和所述第三分值 a3计算所述开源代码的总分值 a:其中, α表示所述热度信息的权重, β表示所述更新时间的权重, γ表示所述编译后文件的大小的权重;
24、根据所述开源代码的总分值 a对所述开源代码按照由高到低的顺序进行排序,以确定所述开源代码的优先级。
25、与现有技术相比,本申请至少具有以下有益效果:
26、在本申请中,通过获取公开网络中的开源代码对待隐匿代码进行隐匿处理,由于公开网络中可以抓取到的开源代码数量庞大,使用不同的开源代码对待隐匿代码进行隐匿处理,所能得到的代码特征是不同的,即使当前的代码特征被破解,重新选取一个开源代码即可对待隐匿代码进行再次隐匿。有效避免了加壳软件、加密软件一旦被破解之后,待隐匿代码便会随之暴露。大幅提升了对于软件及其代码的保护效果。
1.一种代码特征的隐匿方法,其特征在于,包括:
2.根据权利要求1所述的代码特征的隐匿方法,其特征在于,在所述通过所述目标代码对待隐匿代码进行隐匿处理之后,还包括:
3.根据权利要求1所述的代码特征的隐匿方法,其特征在于,在所述选择相应的代码处理引擎对所述开源代码进行编译检查之后,还包括:
4.根据权利要求1所述的代码特征的隐匿方法,其特征在于,所述异常代码包括导致进程异常的代码、非预期资源占用的代码、非预期文件写入和读取的代码和非预期权限申请的代码。
5.根据权利要求4所述的代码特征的隐匿方法,其特征在于,所述非预期资源占用的代码包括非预期内存占用的代码和非预期端口监听占用的代码,所述去除异常代码,具体包括:
6.根据权利要求1所述的代码特征的隐匿方法,其特征在于,所述对待隐匿代码进行隐匿处理,具体包括:
7.根据权利要求1所述的代码特征的隐匿方法,其特征在于,当系统内存的空闲比例小于或者等于预设比例时,所述对待隐匿代码进行隐匿处理,具体包括:
8.根据权利要求2所述的代码特征的隐匿方法,其特征在于,在所述对隐匿处理后的代码进行编译测试之后,还包括:
9.一种代码特征的隐匿装置,其特征在于,包括: