[发明专利]字符串混淆方法、装置、电子设备和存储介质在审
申请号: | 201910429808.4 | 申请日: | 2019-05-22 |
公开(公告)号: | CN111984939A | 公开(公告)日: | 2020-11-24 |
发明(设计)人: | 李鹤仙;曹阳 | 申请(专利权)人: | 北京奇虎科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F8/41;G06F7/58 |
代理公司: | 北京市隆安律师事务所 11323 | 代理人: | 权鲜枝 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 字符串 混淆 方法 装置 电子设备 存储 介质 | ||
本发明公开了字符串混淆方法、装置、电子设备和存储介质。所述方法包括:对代码文件进行扫描,确定符合扫描规则的待混淆字符串;为待混淆字符串添加混淆宏处理;所述混淆宏在代码编译过程中,对相应的待混淆字符串根据编译时间进行混淆。该技术方案的有益效果在于能够自动化地实现字符串混淆,无需开发人员手动去混淆,减轻开发人员的工作量;并且具体的混淆是在代码编译过程时进行,不会影响程序运行时的性能,效率也很高;混淆字符串时根据编译时间来进行,保证每次编译得到的混淆后的字符串不同,提高了破解难度。
技术领域
本发明涉及信息安全领域,具体涉及字符串混淆方法、装置、电子设备和存储介质。
背景技术
在破解二进制文件时,字符串往往会成为突破的关键点,因为在代码中硬编码的字符串可以原封不动的在二进制文件中查找到。所以,为了增加破解的难度,对字符串进行混淆是很重要的一步。对字符串的混淆可以从以下几个角度入手:1)编译之前调用应用程序对字符串进行处理;2)代码组直接写入混淆后的字符串;3)对生成的二进制文件进行处理。
现有技术中的字符串混淆方法,还存在一些缺点,例如:由于采用的混淆算法固定,相同的字符串每次混淆结果都一样,如果攻击者发现某个字符串出现了多次,这个字符串也会成为突破口;开发者需要挨个替换源代码中的字符串,如果源代码比较庞大时,会增加开发者的工作量,等等,因此需要一种效果更好的方案。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的字符串混淆方法、装置、电子设备和存储介质。
依据本发明的一个方面,提供了一种字符串混淆方法,包括:
对代码文件进行扫描,确定符合扫描规则的待混淆字符串;
为待混淆字符串添加混淆宏处理;
所述混淆宏在代码编译过程中,对相应的待混淆字符串根据编译时间进行混淆。
可选地,所述方法还包括:在完成字符串混淆的代码文件中添加所述混淆宏的头文件;
所述对代码文件进行扫描,确定符合扫描规则的待混淆字符串包括:若扫描到一个代码文件中包含所述混淆宏的头文件,则不执行对该代码文件的字符串混淆。
可选地,所述对代码文件进行扫描,确定符合扫描规则的待混淆字符串包括:
若一个字符串与#include、#warning、#error以及#pragma中的任一个处于同一行,则不将该字符串作为待混淆字符串;
和/或,
若一个字符串用于初始化数组,则不将该字符串作为待混淆字符串;
和/或,
若一个字符串位于注释区,则不将该字符串作为待混淆字符串。
可选地,所述对相应的待混淆字符串根据编译时间进行混淆包括:
根据编译时间确定混淆密钥;
从预设的混淆方法中随机选择出一种混淆方法,根据确定的混淆密钥以及选择的混淆方法对待混淆字符串进行混淆。
可选地,所述根据编译时间确定混淆密钥包括:
使用_TIME_宏作为伪随机发生器的种子,使用_COUNTER_宏、_LINE_宏和_FILE_宏中的任一种作为伪随机发生器的迭代次数来产生随机数;
将产生的随机数作为所述混淆密钥。
可选地,所述根据确定的混淆密钥以及选择的混淆方法对待混淆字符串进行混淆包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司,未经北京奇虎科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910429808.4/2.html,转载请声明来源钻瓜专利网。