[发明专利]一种利用马尔可夫链实现代码混淆的方法有效

专利信息
申请号: 201510347412.7 申请日: 2015-06-23
公开(公告)号: CN105005718B 公开(公告)日: 2018-02-13
发明(设计)人: 张小松;宋珺;牛伟纳;卓中流;陈瑞东;王东;陈厅;许云清;黄金;戴中印 申请(专利权)人: 电子科技大学
主分类号: G06F21/14 分类号: G06F21/14
代理公司: 电子科技大学专利中心51203 代理人: 李明光
地址: 611731 四川省成*** 国省代码: 四川;51
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明提供一种利用马尔可夫链实现代码混淆的方法,属于计算机安全领域。本发明在程序源代码的编译阶段,对代码中的常量字符串进行加密,使之在反汇编中不可识别,同时,在函数调用过程中通过前插马尔可夫链代码生成无关执行指令,即通过若干状态转以后再调用被保护的函数,实现在运行内存中的函数混淆,进而实现对软件或特殊代码片段的保护。本发明可以有效地混淆常量字符串和函数地址,大大增加了逆向工程分析程序的难度。
搜索关键词: 一种 利用 马尔可夫链 实现 代码 混淆 方法
【主权项】:
一种利用马尔可夫链实现代码混淆的方法,具体包括以下步骤:步骤1.混淆常量字符串;对于程序源代码中欲进行混淆操作的常量字符串A,进行如下步骤的操作:步骤1‑1:从预设的多种加密方式中随机选取一种作为对常量字符串A的加密方式;其中,预设的加密方式需满足对称加密;此步骤应发生在程序编译过程中,不影响程序的运行效率;步骤1‑2:使用基于时间的伪随机数算法生成随机数K,随机数K作为在步骤1‑1中选取的加密方式中使用的密钥,参与对常量字符串A的加密;此步骤应发生在程序编译过程中,不影响程序的运行效率;步骤1‑3:创建字符串缓冲区Buffer,将常量字符串A存放到缓冲区Buffer中;步骤1‑4:根据步骤1‑1选取的加密方式和步骤1‑2生成的随机数K,对步骤1‑3中创建的字符串缓冲区Buffer中的常量字符串A进行加密,并将加密后的结果存放到缓冲区Buffer中;此步骤应发生在程序编译过程中;完成上述步骤后,对常量字符串A的混淆操作结束;当遭遇逆向破解时,内存中将不会显示出原本应为明文的常量字符串A,而是加密后的乱码,保护了原始信息;步骤1‑5:当在程序运行时,需要将混淆后的字符串还原为原始字符串,即将字符串缓冲区Buffer中加密后的内容还原为原始字符串,还原过程中采用与步骤1‑1所述加密方式对应的解密方式,并使用步骤1‑2中的随机数K进行还原;此步骤应发生在程序运行过程中;步骤2.利用马尔可夫链进行调用混淆;对于程序源代码中欲进行混淆操作的函数F,进行如下步骤的操作:步骤2‑1:若函数F的参数中包含了常量字符串,则对所述常量字符串按步骤1所述方法进行混淆;步骤2‑2:预先设定多个马尔可夫链,每个马尔可夫链包含多个不同的状态,每个状态指向不同的执行指令,单个马尔可夫链的多个状态之间的转移概率已预先设定;此步骤应发生在程序编译过程中;步骤2‑3:随机选取一个预设的马尔可夫链代码,当程序源代码中的函数F被调用时,在函数F之前插入所选取的实例化的马尔可夫链的代码;此步骤应发生在程序编译过程中;完成上述步骤后,即完成对函数F的混淆操作;在实际调用函数F时,在运行内存中会在执行函数F之前先运行一段由所选择的马尔可夫链代码指定的执行指令;由于马尔可夫链的每一次运行,其状态路径生成的执行指令均不相同,故,若遭遇逆向破解,则马尔可夫链生成的置于函数F之前的一段无关代码可起到混淆函数F的作用。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201510347412.7/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top