字符串混淆方法、装置、电子设备和存储介质制造方法及图纸

技术编号:26478888 阅读:44 留言:0更新日期:2020-11-25 19:23
本发明专利技术公开了字符串混淆方法、装置、电子设备和存储介质。所述方法包括:对代码文件进行扫描,确定符合扫描规则的待混淆字符串;为待混淆字符串添加混淆宏处理;所述混淆宏在代码编译过程中,对相应的待混淆字符串根据编译时间进行混淆。该技术方案的有益效果在于能够自动化地实现字符串混淆,无需开发人员手动去混淆,减轻开发人员的工作量;并且具体的混淆是在代码编译过程时进行,不会影响程序运行时的性能,效率也很高;混淆字符串时根据编译时间来进行,保证每次编译得到的混淆后的字符串不同,提高了破解难度。

【技术实现步骤摘要】
字符串混淆方法、装置、电子设备和存储介质
本专利技术涉及信息安全领域,具体涉及字符串混淆方法、装置、电子设备和存储介质。
技术介绍
在破解二进制文件时,字符串往往会成为突破的关键点,因为在代码中硬编码的字符串可以原封不动的在二进制文件中查找到。所以,为了增加破解的难度,对字符串进行混淆是很重要的一步。对字符串的混淆可以从以下几个角度入手:1)编译之前调用应用程序对字符串进行处理;2)代码组直接写入混淆后的字符串;3)对生成的二进制文件进行处理。现有技术中的字符串混淆方法,还存在一些缺点,例如:由于采用的混淆算法固定,相同的字符串每次混淆结果都一样,如果攻击者发现某个字符串出现了多次,这个字符串也会成为突破口;开发者需要挨个替换源代码中的字符串,如果源代码比较庞大时,会增加开发者的工作量,等等,因此需要一种效果更好的方案。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的字符串混淆方法、装置、电子设备和存储介质。依据本专利技术的一个方面,提供了一种字符串混淆方法,包括:对代码文件进行扫描,确定符合扫描规则的待混淆字符串;为待混淆字符串添加混淆宏处理;所述混淆宏在代码编译过程中,对相应的待混淆字符串根据编译时间进行混淆。可选地,所述方法还包括:在完成字符串混淆的代码文件中添加所述混淆宏的头文件;所述对代码文件进行扫描,确定符合扫描规则的待混淆字符串包括:若扫描到一个代码文件中包含所述混淆宏的头文件,则不执行对该代码文件的字符串混淆。可选地,所述对代码文件进行扫描,确定符合扫描规则的待混淆字符串包括:若一个字符串与#include、#warning、#error以及#pragma中的任一个处于同一行,则不将该字符串作为待混淆字符串;和/或,若一个字符串用于初始化数组,则不将该字符串作为待混淆字符串;和/或,若一个字符串位于注释区,则不将该字符串作为待混淆字符串。可选地,所述对相应的待混淆字符串根据编译时间进行混淆包括:根据编译时间确定混淆密钥;从预设的混淆方法中随机选择出一种混淆方法,根据确定的混淆密钥以及选择的混淆方法对待混淆字符串进行混淆。可选地,所述根据编译时间确定混淆密钥包括:使用_TIME_宏作为伪随机发生器的种子,使用_COUNTER_宏、_LINE_宏和_FILE_宏中的任一种作为伪随机发生器的迭代次数来产生随机数;将产生的随机数作为所述混淆密钥。可选地,所述根据确定的混淆密钥以及选择的混淆方法对待混淆字符串进行混淆包括:基于模板元编程技术对待混淆字符串进行混淆,其中,利用可变参数模板接收所述待混淆字符串、存储确定的混淆密钥以及混淆后的字符串。可选地,所述预设的混淆方法包括如下的至少一种:字符的异或、加和取反。依据本专利技术的另一方面,提供了一种字符串混淆装置,包括:扫描单元,适于对代码文件进行扫描,确定符合扫描规则的待混淆字符串;混淆单元,适于为待混淆字符串添加混淆宏处理;所述混淆宏在代码编译过程中,对相应的待混淆字符串根据编译时间进行混淆。可选地,所述混淆单元,还适于在完成字符串混淆的代码文件中添加所述混淆宏的头文件;所述扫描单元,适于若扫描到一个代码文件中包含所述混淆宏的头文件,则不执行对该代码文件的字符串混淆。可选地,所述扫描单元,适于若一个字符串与#include、#warning、#error以及#pragma中的任一个处于同一行,则不将该字符串作为待混淆字符串;和/或,若一个字符串用于初始化数组,则不将该字符串作为待混淆字符串;和/或,若一个字符串位于注释区,则不将该字符串作为待混淆字符串。可选地,所述对相应的待混淆字符串根据编译时间进行混淆包括:根据编译时间确定混淆密钥;从预设的混淆方法中随机选择出一种混淆方法,根据确定的混淆密钥以及选择的混淆方法对待混淆字符串进行混淆。可选地,所述根据编译时间确定混淆密钥包括:使用_TIME_宏作为伪随机发生器的种子,使用_COUNTER_宏、_LINE_宏和_FILE_宏中的任一种作为伪随机发生器的迭代次数来产生随机数;将产生的随机数作为所述混淆密钥。可选地,所述根据确定的混淆密钥以及选择的混淆方法对待混淆字符串进行混淆包括:基于模板元编程技术对待混淆字符串进行混淆,其中,利用可变参数模板接收所述待混淆字符串、存储确定的混淆密钥以及混淆后的字符串。可选地,所述预设的混淆方法包括如下的至少一种:字符的异或、加和取反。依据本专利技术的又一方面,提供了一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如上述任一所述的方法。依据本专利技术的再一方面,提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现如上述任一所述的方法。由上述可知,本专利技术的技术方案,通过预定义扫描规则,对代码文件进行扫描,确定符合扫描规则的待混淆字符串;为待混淆字符串添加混淆宏处理;混淆宏在代码编译过程中,对相应的待混淆字符串根据编译时间进行混淆。该技术方案的有益效果在于能够自动化地实现字符串混淆,无需开发人员手动去混淆,减轻开发人员的工作量;并且具体的混淆是在代码编译过程时进行,不会影响程序运行时的性能,效率也很高;混淆字符串时根据编译时间来进行,保证每次编译得到的混淆后的字符串不同,提高了破解难度。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了根据本专利技术一个实施例的一种字符串混淆方法的流程示意图;图2示出了根据本专利技术一个实施例的一种字符串混淆装置的结构示意图;图3示出了根据本专利技术一个实施例的电子设备的结构示意图;图4示出了根据本专利技术一个实施例的计算机可读存储介质的结构示意图。具体实施方式下面将参照附图更详细地描述本专利技术的示例性实施例。虽然附图中显示了本专利技术的示例性实施例,然而应当理解,可以以各种形式实现本专利技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本专利技术,并且能够将本专利技术的范围完整的传达给本领域的技术人员。图1示出了根据本专利技术一个实施例的一种字符串混淆方法的流程示意图。如图1所示,该方法包括:步骤S110,对代码本文档来自技高网...

【技术保护点】
1.一种字符串混淆方法,包括:/n对代码文件进行扫描,确定符合扫描规则的待混淆字符串;/n为待混淆字符串添加混淆宏处理;/n所述混淆宏在代码编译过程中,对相应的待混淆字符串根据编译时间进行混淆。/n

【技术特征摘要】
1.一种字符串混淆方法,包括:
对代码文件进行扫描,确定符合扫描规则的待混淆字符串;
为待混淆字符串添加混淆宏处理;
所述混淆宏在代码编译过程中,对相应的待混淆字符串根据编译时间进行混淆。


2.如权利要求1所述的方法,其中,所述方法还包括:在完成字符串混淆的代码文件中添加所述混淆宏的头文件;
所述对代码文件进行扫描,确定符合扫描规则的待混淆字符串包括:若扫描到一个代码文件中包含所述混淆宏的头文件,则不执行对该代码文件的字符串混淆。


3.如权利要求1所述的方法,其中,所述对代码文件进行扫描,确定符合扫描规则的待混淆字符串包括:
若一个字符串与#include、#warning、#error以及#pragma中的任一个处于同一行,则不将该字符串作为待混淆字符串;
和/或,
若一个字符串用于初始化数组,则不将该字符串作为待混淆字符串;
和/或,
若一个字符串位于注释区,则不将该字符串作为待混淆字符串。


4.如权利要求1所述的方法,其中,所述对相应的待混淆字符串根据编译时间进行混淆包括:
根据编译时间确定混淆密钥;
从预设的混淆方法中随机选择出一种混淆方法,根据确定的混淆密钥以及选择的混淆方法对待混淆字符串进行混淆。


5.一种字符串混淆装置,包括:
扫描单元,适于对代码文件进行扫描,确定符合扫描规则的待混淆字符串;
混淆单元,适于为待...

【专利技术属性】
技术研发人员:李鹤仙曹阳
申请(专利权)人:北京奇虎科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1