声明
摘要
第一章 绪论
第一节 研究背景
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 识别效率
第五节 本章小结
第六章 总结与展望
第一节 本文工作总结
第二节 未来工作展望
参考文献
致谢
个人简历、博士期间完成的论文和参加的科研项目