首页> 中文学位 >针对恶意逆向工程的软件知识产权保护新方法研究
【6h】

针对恶意逆向工程的软件知识产权保护新方法研究

代理获取

目录

声明

摘要

第一章 绪论

第一节 研究背景

1.1.1 路径敏感的MATE攻击

1.1.2 重包装攻击

第二节 针对MATE攻击的软件保护策略

1.2.1 代码混淆

1.2.2 软件水印

第三节 本文工作

第二章 基于神经网络的控制流混淆

第一节 假如给我“不可知”的控制逻辑

2.1.1 条件分支vs.数据分类

2.1.2 对神经网络的规则抽取

2.1.3 神经网络训练的随机性

第二节 应用神经网络实施控制混淆的关键机制

2.2.1 间接式条件跳转

2.2.2 整数神经网络的应用

2.2.3 动态化的网络参数维护

第三节 神经网络混淆系统的实现

2.3.1 源码分析和预改写

2.3.2 神经网络的训练

2.3.3 占位指令填充

第四节 分析和评估

2.4.1 对抗现代符号执行的有效性评估

2.4.2 对抗模式识别和暴力测试的安全性分析

2.4.3 性能开销

第五节 相关讨论

2.5.1 应用于复合条件分支的可扩展性

2.5.2 与地址空间随机化的可兼容性

第六节 本章小结

第三章 应用返回导向编程的动态软件水印

第一节 引言

3.1.1 动态水印中的“掩耳盗铃”

3.1.2 “寻章摘句”——来自返回导向编程的新思路

第二节 软件水印的威胁模型与安全性假设

第三节 基于返回导向编程的动态水印设计

3.3.1 系统概览

3.3.2 Gadget的筛选和寻址

3.3.3 水印载荷的分段动态维护

3.3.4 利用堆栈指针操纵的载荷自连接

3.3.5 藉由函数指针覆盖的ROP触发

第四节 水印系统的实现

第五节 有效性评估

3.5.1 静态隐蔽性

3.5.2 水印组件与载体程序的关联性

3.5.3 强健性

第六节 相关讨论

3.6.1 与ROP防御技术的共存

3.6.2 ROP水印的兼容性

3.6.3 关于库替换攻击

第七节 本章小结

第四章 基于神经网络的“整合式"软件指纹

第一节 从软件水印到软件指纹——“东施效颦”?

第二节 Neuroprint:一种“整合式”的动态指纹方法

4.2.1 系统概览

4.2.2 指纹的嵌入

4.2.3 指纹的识别

第三节 对抗串谋攻击的有效性

第四节 本章小结

第五章 基于分形的高效软件水印编码方法

第一节 陷于“繁文缛节”的动态水印编码

第二节 从分形到任意进制编码

第三节 基于分形的动态抽象水印编码

5.3.1 分形抽象水印的总体思想

5.3.2 基于广义康托尔集的水印编码

第四节 有效性评估

5.4.1 不可区分性

5.4.2 识别效率

第五节 本章小结

第六章 总结与展望

第一节 本文工作总结

第二节 未来工作展望

参考文献

致谢

个人简历、博士期间完成的论文和参加的科研项目

展开▼

摘要

大量案例显示,软件安全所面临的威胁来源不仅仅包括不可信的第三方实体,更包括那些怀有恶意的用户终端。针对软件知识产权的侵权行为,通常正是始于攻击者通过正当途径对目标软件的获取;进而,攻击者将获得对受害软件的完全控制,并可对其实施深入的非授权逆向工程,最终达到代码剽窃、恶意篡改/破解乃至软件盗版等恶意目的。随着符号执行、污点分析等新方法对软件逆向工程技术的不断强化,源自恶意终端环境的软件知识产权的侵权行为已经成为软件产业不得不考虑的一大关键性威胁。
  本文针对逆向工程在以软件知识产权侵权为目的的恶意攻击中的应用和发展,从程序控制流混淆、动态软件水印和动态软件指纹等方面入手,以神经网络、返回导向编程和分形变换等技术和方法为基础,提供了一系列行之有效的软件保护技术,为应对日渐强大的恶意逆向工程行为所带来的持续威胁提供了新的思路。相关研究结果如下:
  1.基于神经网络的控制流混淆方法。人工神经网络不仅能够以数据分类的形式模拟条件分支行为,其内部逻辑还具有很强的不可知性。因此,可以以该计算模型为基础设计一种程序控制流混淆方法,藉由神经网络的计算结果模拟程序条件判断逻辑的执行行为,并轻易地使相应分支结构被混淆后的逆向复杂度远远超过诸如约束求解工具等程序分析技术的运算能力,由此使受到保护的条件逻辑无法通过逆向工程工具予以求解。此外,该方法的实现可以完全由常用的简单指令完成,故在静态特征方面同样难以辨识,而运行性能也令人满意。
  2.基于返回导向编程的动态水印技术。返回导向编程是一种以恶意入侵为初衷的非正常编码方法,具有出人意料的执行行为隐藏性能,可以有效地避开大多数代码分析方法的检测和识别。因此,通过将软件水印的执行行为构造为返回导向编程的载荷数据,可实现在程序的动态数据空间中等价地构造出“并不存在”的水印代码;而除非载有水印的返回导向执行行为被触发,其相关载荷在程序正常运行时与其他数据对象并无区别。受益于水印载荷的特殊结构,基于返回导向编程的动态水印较之现有的动态水印方法更为隐蔽。利用特殊的构造机制,该方法还获得了令人满意的强健性,因此在整体安全强度方面较之已有方法更胜一筹。
  3.基于神经网络混淆的“整合式”软件指纹。针对现有动态水印/指纹方法依赖于相对独立的专用载荷代码这一关键性缺陷,提出了一种被称为“整合式”指纹的全新动态指纹设计理念,其主要目标在于将动态指纹的嵌入过程设计为对载体程序的语义保留变换,而非额外增加指纹专属的执行功能。在此基础上,本文通过将指纹信息嵌入用于控制流混淆的神经网络输出结构,构造了首个“整合式”动态指纹设计。新型动态指纹方法不仅能够有效地阻止试图伪造、清除或破坏指纹组件的攻击,更能够使软件指纹模型所面对的最主要威胁——串谋攻击也失去其在应用于过往方法时对指纹组件的定位能力。
  4.基于分形的高压缩率水印编码方法。为了进一步提高动态水印方法的编码效率,本文利用分形和抽象解释理论,提出了首个动态化的抽象水印编码方法。与现有方法相比,该设计利用特定分形变换能够在有限空间内无限迭代且保持精细结构的特点,构造出一种定义在该分形积空间上的抽象解释模型,进而形成一种具有高压缩率、高隐蔽性的水印编码。受益于分形变换的非线性动力特性以及强大的编码能力,该方法具有以往动态软件水印设计所不具备的优秀数据嵌入率,同时还具备很强的隐蔽性。

著录项

  • 作者

    马昊玉;

  • 作者单位

    南开大学;

  • 授予单位 南开大学;
  • 学科 计算机科学与技术
  • 授予学位 博士
  • 导师姓名 贾春福;
  • 年度 2016
  • 页码
  • 总页数
  • 原文格式 PDF
  • 正文语种 中文
  • 中图分类 TP311.53;
  • 关键词

    软件安全; 知识产权; 代码混淆; 逆向工程;

相似文献

  • 中文文献
  • 外文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号