[发明专利]一种面向Lua语言的加扰混淆方法和解密方法有效
申请号: | 201510740424.6 | 申请日: | 2015-11-04 |
公开(公告)号: | CN105354449B | 公开(公告)日: | 2018-08-21 |
发明(设计)人: | 文伟平 | 申请(专利权)人: | 北京鼎源科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京万象新悦知识产权代理事务所(普通合伙) 11360 | 代理人: | 张肖琪 |
地址: | 100086 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 lua 语言 混淆 方法 解密 | ||
1.一种面向Lua语言的加扰混淆方法,通过代码预处理方法、混淆方法和调用栈转换方法,使得混淆后的Lua源代码在语义上不发生改变的同时还无法被理解,以达到保护程序代码而又不影响程序的正常执行的目的;包括如下步骤:
A.进行代码预处理,执行如下操作:
A1)进行代码预处理设置;
A2)针对代码进行词法分析,根据构词规则识别单词,建立数据字典:
A3)针对词法分析得到的单词序列进行语法分析,将单词序列组合成语法短语,得到抽象语法树;
A4)根据A2)建立的数据字典和A3)形成的抽象语法树进行遍历,获取遍历结果;
B.对Lua源程序进行加扰混淆,执行如下操作:
B1)设置混淆参数;混淆参数包括混淆等级和混淆后源文件的输出路径;
B2)读取步骤A2)建立的数据字典;
B3)通过最小词汇排序法进行初级混淆,将初级混淆前和初级混淆后的名称存储在数据字典中;
所述最小词汇排序法具体包括:根据字符串在数组中的位置k,将k对26取余,设所得余数为num,将第num个小写字母添加到新字符头部,每次取余后k除26后取整得到新的k,重复以上操作直到k<1,最后用新得到的字符串代替原字符串;将新得到的字符串和原字符串都保存到数据字典中;
B4)通过控制流混淆方法进行高级混淆,改变源程序的执行流程,在数据字典中保存高级混淆前后的调用栈信息;
B5)获得加扰混淆后的Lua代码,保存代码,结束操作。
2.如权利要求1所述面向Lua语言的加扰混淆方法,其特征是,步骤A2)所述进行词法分析,建立数据字典,具体是:从左到右逐个字符读入Lua源程序,根据构词规则识别单词,建立得到所述Lua源程序的数据字典。
3.如权利要求1所述面向Lua语言的加扰混淆方法,其特征是,步骤A4)所述抽象语法树包括所述抽象语法树的头结点chunk和整个抽象语法树对象;步骤A4)所述遍历结果包括抽象语法树对象CommonTree对象的所有节点,对应Lua源代码中的所有模块名。
4.如权利要求1所述面向Lua语言的加扰混淆方法,其特征是,步骤B3)所述进行初级混淆,具体是,根据Lua源文件路径递归读取目录下的文件,读取步骤A2)得到的数据字典,采用最小词汇排序法产生单词对Lua源程序中的名称进行替换;同时将混淆前和混淆后的相应名称均存储在数据字典中。
5.如权利要求4所述面向Lua语言的加扰混淆方法,其特征是,所述名称包括变量名、函数名、参数名和表名。
6.一种针对使用权利要求1~5任一项所述面向Lua语言的加扰混淆方法进行加扰混淆后的Lua源程序代码进行解密的方法,其特征是,所述解密通过读取Lua源程序代码,根据数据字典中存储的对应关系进行源代码的逆向,具体执行如下操作:
C1)读取所述Lua源程序代码的数据字典;
C2)根据数据字典,针对混淆词汇进行逆向,将混淆后的名称替换为混淆前的名称;
C3)根据数据字典,读取并解析调用栈信息;
C4)转换调用栈信息,得到转换后的调用栈信息,即获得解密后的Lua程序代码。
7.如权利要求6所述的方法,其特征是,步骤C3)所述读取并解析调用栈信息,具体包括:根据数据字典获得混淆后的调用栈信息;根据调用栈信息解析名称;将混淆后的名称转化为混淆前的名称。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京鼎源科技有限公司,未经北京鼎源科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510740424.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:动态文化嵌入式可变灯箱
- 下一篇:一种指路牌