一种结合MD5与序列到序列模型的代码混淆方法及系统
申请人信息
- 申请人:广东工业大学
- 申请人地址:510090 广东省广州市越秀区东风东路729号
- 发明人: 广东工业大学
专利详细信息
| 项目 | 内容 |
|---|---|
| 专利名称 | 一种结合MD5与序列到序列模型的代码混淆方法及系统 |
| 专利类型 | 发明申请 |
| 申请号 | CN202311040048.0 |
| 申请日 | 2023/8/17 |
| 公告号 | CN117574334A |
| 公开日 | 2024/2/20 |
| IPC主分类号 | G06F21/14 |
| 权利人 | 广东工业大学 |
| 发明人 | 苏庆; 袁梓迪; 谢国波; 林志毅; 黄剑锋 |
| 地址 | 广东省广州市越秀区东风东路729号大院 |
摘要文本
本发明公布了一种结合MD5与序列到序列模型的代码混淆方法及系统,具体步骤包括构建常量数据集、构造编码器字典和解码器字典、数据预处理、构建和训练一个序列到序列模型、构造解密函数、构造不透明谓词、插入不透明谓词和解密函数以及编译生成可执行应用程序。本发明结合MD5散列算法和序列到序列模型作为加解密算法,通过对表达式中的常量进行加解密来构造不透明谓词,以实现代码混淆。将表达式中的常量作为明文,使用MD5散列算法对明文进行加密,利用MD5散列算法的单向性,使生成的密文难以被逆向求解,增强不透明谓词抗静态分析的能力;使用序列到序列模型对密文进行解密,利用模型优秀的学习能力和模型权重的不可解释性,将密文到明文的映射以模型权重的形式进行保存,提升了不透明谓词的安全性。本发明公布的代码混淆方法可有效保护程序执行逻辑,增强程序抗逆向分析的能力。
专利主权项内容
1.一种结合MD5与序列到序列模型的代码混淆方法,其特征在于,包括:第一步,构建常量数据集:对于待混淆源程序的分支语句中的表达式,获取该表达式中的任意字符串常量和数值型常量作为第一明文,其中数值型常量包括:整型常量、单精度浮点型常量和双精度浮点型常量;然后对第一明文进行加盐处理,得到第二明文;接着使用MD5散列算法对第二明文加密后再添加对应的类型标识符,生成密文;最后为每一对密文和第一明文构造一个第一序偶,所有的第一序偶构建为一个常量数据集;第二步,构造编码器字典和解码器字典:根据常量数据集中所有第一序偶的密文构造编码器字典,根据常量数据集中所有第一序偶的第一明文构造解码器字典,然后自定义一个起始符和一个结束符并加入至解码器字典;第三步,数据预处理:对于常量数据集中的每一个第一序偶,首先在第一序偶的第一明文的最后面加上第二步中的结束符,得到第三明文;然后依次检索得到密文中的所有字符在编码器字典中的编号,构成第一编号序列,并且依次检索得到第三明文中的所有字符在解码器字典中的编号,构成第二编号序列;接着对第一编号序列中的编号进行One-hot编码,构成第一向量序列,对第二编号序列中的编号进行One-hot编码,构成第二向量序列;最后根据第一向量序列和第二向量序列构造一个第二序偶;第四步,构建和训练一个序列到序列模型:以门控循环单元(Gate Recurrent Unit, GRU)作为编码器,GRU和全连接层作为解码器,构建一个序列到序列模型;将所有的第二序偶作为训练集,经过训练后得到一个序列到序列模型;第五步,构造解密函数:根据第四步中的序列到序列模型,构造一个将密文解密为第一明文的函数,该函数称为解密函数;第六步,构造不透明谓词:将待混淆源程序中的分支语句的表达式中的字符串常量和数值型常量替换为对解密函数的调用,完成常量替换后的表达式即为不透明谓词;第七步,插入不透明谓词和解密函数:将不透明谓词替代待混淆源程序中的分支语句的原有表达式,并将解密函数插入至待混淆源程序中任意不影响编译的位置,得到混淆后的源程序;第八步,编译生成可执行应用程序:将混淆后的源程序编译成可执行应用程序。