预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共16页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN114296793A(43)申请公布日2022.04.08(21)申请号202111643591.0(22)申请日2021.12.29(71)申请人北京金堤科技有限公司地址100098北京市海淀区知春路65号院1号楼B座20层2001号(72)发明人吕松科程正武(74)专利代理机构北京英创嘉友知识产权代理事务所(普通合伙)11447代理人贺晓蕾(51)Int.Cl.G06F8/74(2018.01)权利要求书2页说明书9页附图4页(54)发明名称混淆代码的反混淆方法、装置、可读介质及电子设备(57)摘要本公开涉及一种混淆代码的反混淆方法、装置、可读介质及电子设备,该方法包括:获取混淆代码文本,将混淆代码文本转换为抽象语法树,对抽象语法树进行语法分析,以获取混淆代码文本中代码块对应的混淆方式,确定混淆方式对应的反混淆方案,根据反混淆方案对代码块进行处理得到反混淆后的代码文本,根据反混淆后的代码文本得到目标代码文本。通过反混淆方案,使得开发人员能够非常快速的获取反混淆后的高可读性的目标代码文本,同时快速的获取到网页的加密算法。CN114296793ACN114296793A权利要求书1/2页1.一种混淆代码的反混淆方法,其特征在于,包括:获取混淆代码文本;将所述混淆代码文本转换为抽象语法树;对所述抽象语法树进行语法分析,以获取所述混淆代码文本中代码块对应的混淆方式;确定所述混淆方式对应的反混淆方案;根据所述反混淆方案对所述代码块进行处理得到反混淆后的代码文本;根据所述反混淆后的代码文本得到目标代码文本。2.根据权利要求1所述的方法,其特征在于,所述混淆方式包括变量替换、函数执行平坦化和全局变量调用中的至少一种。3.根据权利要求2所述的方法,其特征在于,所述抽象语法树包括多个节点,每个所述节点对应一个所述代码块;所述对所述抽象语法树进行语法分析,以获取所述混淆代码文本中代码块对应的混淆方式的步骤,包括:遍历所述抽象语法树中的所有所述节点;根据所述节点中包含的变量标识或语句属性确定所述混淆代码文本中代码块对应的混淆方式。4.根据权利要求3所述的方法,其特征在于,所述变量标识包括第一编码变量标识及全局变量的标识,所述语句属性包括循环结构语句及选择结构语句;所述根据所述节点中包含的变量属性、语句属性确定所述混淆代码文本中代码块对应的混淆方式的步骤,包括:对于所有所述节点中的每个节点,当检测到所述节点中的所述第一编码变量标识时,确定所述节点对应的所述代码块的混淆方式为所述变量替换;当检测到所述节点中的所述循环结构语句或所述选择结构语句时,确定所述节点对应的所述代码块的混淆方式为所述函数执行平坦化;当检测到所述节点中的所述全局变量的标识时,确定所述节点对应的所述代码块的混淆方式为所述全局变量调用。5.根据权利要求4所述的方法,其特征在于,所述节点对应的所述代码块的混淆方式为所述变量替换,所述根据所述反混淆方案对所述代码块进行处理得到反混淆后的代码文本的步骤,包括:筛选出所述节点中的第一编码变量;通过编码器将所述第一编码变量替换为第二编码变量,以得到所述代码块的反混淆后的代码文本。6.根据权利要求4所述的方法,其特征在于,所述节点对应的所述代码块的混淆方式为所述函数执行平坦化,所述根据所述反混淆方案对所述代码块进行处理得到反混淆后的代码文本的步骤,包括:通过调整所述代码块中代码文本的执行顺序得到所述反混淆后的代码文本。7.根据权利要求6所述的方法,其特征在于,所述通过调整所述代码块中代码文本的执行顺序得到所述反混淆后的代码文本的步骤,包括:2CN114296793A权利要求书2/2页获取所述节点的对应的全局变量;当所述全局变量的名称与预存储的全局变量名称一致时,获取所述代码块的流程分发器的控制流程;所述控制流程表征所述代码块中的代码文本的执行顺序;根据所述控制流程调整所述代码块中代码文本的执行顺序,将调整所述执行顺序后的所述代码文本,作为所述代码块的反混淆后的代码文本。8.根据权利要求4所述的方法,其特征在于,所述节点对应的所述代码块的混淆方式为所述全局变量调用,所述根据所述反混淆方案对所述代码块进行处理得到反混淆后的代码文本的步骤,包括:利用实际引用变量替换全局变量的引用得到所述反混淆后的代码文本。9.根据权利要求8所述的方法,其特征在于,所述利用实际引用变量替换全局变量的引用得到所述反混淆后的代码文本的步骤,包括:获取所述全局变量对应的全局变量名称;当所述全局变量名称与预存储的全局变量名称一致时,获取所述全局变量的引用,执行所述全局变量的引用从内存中获取所述实际引用变量;利用所述实际引用变量替换所述全局变量的引用,将替换所述全局变量的引用后的代码文本作为所述代码块