学位论文 > 优秀研究生学位论文题录展示

静态软件水印的研究与实现

作 者: 孙长应
导 师: 刘宏申;王鹏飞
学 校: 安徽工业大学
专 业: 计算机应用技术
关键词: 软件水印 软件版权 PE文件格式 自检测
分类号: TP309.7
类 型: 硕士论文
年 份: 2010年
下 载: 52次
引 用: 0次
阅 读: 论文下载
 

内容摘要


目前,国内外关于软件水印的研究大多集中在动态软件水印算法设计上。动态软件水印是在宿主程序运行过程中被构建出来的。与动态软件水印不同,静态软件水印是将水印信息直接嵌入宿主程序,并且在宿主程序执行的过程当中不会发生改变。通过对PE(Portable Executable)文件格式的分析,可以发现设计优良的静态软件水印也可以实现较好的隐蔽性与鲁棒性。静态软件水印由于可以在目标软件编写完成之后实施嵌入,从而可以使程序员将精力放在软件设计上。该优点不容忽视。根据软件水印原理,软件水印可以应用于验证软件版权所有。其方法是将软件版权信息作为水印内容,嵌入到载体可执行文件中。在分析可执行文件各节结构存在一定程度的空余存储空间之后,可以利用这些空余空间或者构造空余空间,将水印信息经过加密并设计通用的策略嵌入其中。同时为了实现静态水印的隐蔽性,需要修改可执行文件的相关特征数据。嵌入的水印密文可以被提取并解密,从而声明软件版权。为了更加深入的理解可执行文件的特点,本文对可执行文件的加载、运行特点进行分析:阐述了软件程序加壳之后的加载过程,以及API调用方式及其SEH(Stuctured Exception Handling)机制。根据PE文件的执行特点,可以引入软件加壳相关技术,将静态软件水印与类似外壳程序一起嵌入目标软件。因此可以建立静态软件水印与程序代码的相关性,甚至可以实现与动态软件水印类似的安全性。通常情况下,软件水印的检测应当由第三方程序去检测,但是这种方法不利于实际应用。软件程序可以检测自身程序文件中被嵌入的水印。方法是将一段检测水印的可执行代码随软件水印一同嵌入,使其预先获取执行权。从而实现软件水印的自检测

全文目录


摘要  4-5
Abstract  5-9
第一章 绪论  9-13
  1.1 课题研究背景与意义  9-10
  1.2 国内外研究现状  10-11
  1.3 本文相关工作及其结构  11-13
第二章 软件水印技术  13-26
  2.1 软件水印描述  13
  2.2 软件水印分类  13-15
    2.2.1 静态软件水印  14-15
    2.2.2 动态软件水印  15
  2.3 软件水印算法  15-17
  2.4 软件保护与软件水印攻击  17-19
    2.4.1 软件水印保护版权的原理  17-18
    2.4.2 软件水印攻击  18-19
  2.5 软件加壳技术的引入  19-22
    2.5.1 软件加壳介绍  19-20
    2.5.2 加壳程序的运行机制  20-21
    2.5.3 加壳程序外壳引导段  21-22
    2.5.4 外壳引导段变量处理  22
  2.6 数据加密  22-26
    2.6.1 对称加密算法  23
    2.6.2 公开密钥加密算法  23-24
    2.6.3 DSA 数字签名算法  24-26
第三章 PE文件格式分析  26-37
  3.1 PE 文件介绍  26-27
  3.2 PE 文件的加载与运行机制  27-31
    3.2.1 PE 文件加载  27-28
    3.2.2 API 的调用  28-29
    3.2.3 结构化异常处理  29-31
  3.3 PE 文件详细分析  31-36
    3.3.1 代码节分析及其特点  31
    3.3.2 数据节分析及其特点  31-32
    3.3.3 输入表分析  32-34
    3.3.4 输出表分析  34-36
    3.3.5 rdata 节  36
  3.4 小结  36-37
第四章 软件水印嵌入算法设计  37-44
  4.1 PE 格式及水印嵌入位置分析  37-39
    4.1.1 PE 文件现有的空余位置  37
    4.1.2 PE 文件头变形  37-38
    4.1.3 构造新的空余位置  38-39
    4.1.4 水印嵌入代码节方法  39
  4.2 版权保护水印设计与实现  39-42
    4.2.1 软件水印信息的生成  39-40
    4.2.2 软件水印的加密  40-41
    4.2.3 水印嵌入及其提取  41-42
  4.3 实验结果及讨论  42-44
第五章 软件水印自检测实现  44-51
  5.1 提取可执行代码方法  44-46
    5.1.1 获取调用某API 的可执行代码  44-45
    5.1.2 获取某功能的可执行代码  45-46
  5.2 修改程序OEP 实现自检测  46-49
    5.2.1 水印检测机制  46-47
    5.2.2 C++内联汇编获取API 地址  47-49
    5.2.3 嵌入代码如何返回软件OEP  49
  5.3 软件加壳实现自检测  49-50
    5.3.1 自检测代码与水印嵌入位置  49
    5.3.2 两种自检测方法水印嵌入异同  49-50
  5.4 小结  50-51
第六章 总结及展望  51-52
参考文献  52-54

相似论文

  1. 软件版权人滥用市场支配地位责任研究,D922.294
  2. 基于Java的软件水印及其相关技术研究,TP309.7
  3. 基于带权欧氏距离的壳检测与脱壳技术的研究,TP311.53
  4. 计算机软件版权滥用的法律规制研究,D923.41
  5. 舵机用无刷直流电机控制系统,TM33
  6. 基于动态图的软件水印及其相关技术研究,TP309.7
  7. 无位移传感器磁悬浮轴承自检测系统研究,TH133.3
  8. 软件篡改检测的脆弱水印的研究,TP309.7
  9. 永磁同步电机转子位置自检测技术的研究,TM341
  10. 中美计算机软件版权保护的比较研究,D923.41
  11. 基于动态图的软件水印研究与实现,TP309.7
  12. 基于代码混淆的零水印方案的设计与研究,TP309.7
  13. 基于EPPCT的嵌入式软件保护研究,TP368.1
  14. 基于防篡改技术的动态图软件水印算法研究,TP309.7
  15. 基于设计模式的无人机飞控系统MBIT的设计与实现,TP273
  16. 基于常量编码的防篡改软件水印技术,TP309.7
  17. 计算机软件版权侵权诉讼的证据问题,D925.1
  18. 开放源代码软件的知识产权保护分析,D923.4
  19. 基于PE文件的软件水印研究,TP309.7
  20. 动力磁悬浮轴承径向位移自检测系统研究,TH133.3

中图分类: > 工业技术 > 自动化技术、计算机技术 > 计算技术、计算机技术 > 一般性问题 > 安全保密 > 加密与解密
© 2012 www.xueweilunwen.com