`

软件加密与解密

 
阅读更多

《软件加密与解密》

基本信息
原书名: Surreptitious Software:Obfuscation, Watermarking,and Tamperproofing for Software Protection
原出版社: Pearson Education
作者: (美)Christian Collberg Jasvir Nagra [作译者介绍]
译者: 崔孝晨
丛书名: 图灵程序设计丛书
出版社:人民邮电出版社
ISBN:9787115270757
上架时间:2012-5-8
出版日期:2012 年5月
开本:16开
页码:601
版次:1-1
所属分类: 计算机 > 安全 > 加密与解密


更多详细 》》》软件加密与解密
内容简介
计算机书籍
   《软件加密与解密》介绍了如何利用混淆、水印和防篡改等技术,来保护软件免受盗版、篡改和恶意逆向工程的危害,主要内容包括攻击者和防御者用来分析程序 的各种主流方法,如何使用代码混淆技术使程序更难以被分析和理解,如何在软件中添加水印和指纹以标识软件的开发者和购买用户,等等。
  《软件加密与解密》适合各层次软件开发人员阅读。
目录
第1章 什么是隐蔽软件 1
1.1 概述 1
1.2 攻击和防御 5
1.3 程序分析的方法 6
1.4 代码混淆 11
1.4.1 代码混淆的应用 13
1.4.2 混淆技术概述 17
1.4.3 被黑客们使用的代码混淆技术 21
1.5 防篡改技术 27
1.5.1 防篡改技术的应用 27
1.5.2 防篡改技术的例子 29
1.6 软件水印 30
1.6.1 软件水印的例子 32
1.6.2 攻击水印系统 34
1.7 软件相似性比对 36
1.7.1 代码剽窃 36
1.7.2 软件作者鉴别 37
1.7.3 软件“胎记” 38
1.7.4 软件“胎记”的案例 40

.1.8 基于硬件的保护技术 41
1.8.1 把硬件加密锁和软件一起发售 42
1.8.2 把程序和cpu绑定在一起 43
1.8.3 确保软件在安全的环境中执行 43
1.8.4 加密可执行文件 44
1.8.5 增添物理防护 45
1.9 小结 46
1.9.1 使用软件保护技术的理由 46
1.9.2 不使用软件保护技术的理由 47
1.9.3 那我该怎么办呢 47
1.10 一些说明 48
第2章 攻击与防御的方法 49
2.1 攻击的策略 50
2.1.1 被破解对象的原型 50
2.1.2 破解者的动机 52
2.1.3 破解是如何进行的 54
2.1.4 破解者会用到的破解方法 55
2.1.5 破解者都使用哪些工具 58
2.1.6 破解者都会使用哪些技术 59
2.1.7 小结 69
2.2 防御方法 70
2.2.1 一点说明 71
2.2.2 遮掩 73
2.2.3 复制 75
2.2.4 分散与合并 78
2.2.5 重新排序 80
2.2.6 映射 81
2.2.7 指引 84
2.2.8 模仿 85
2.2.9 示形 87
2.2.10 条件—触发 88
2.2.11 运动 90
2.2.12 小结 91
2.3 结论 92
2.3.1 对攻击/防御模型有什么要求 92
2.3.2 该如何使用上述模型设计算法 93
第3章 分析程序的方法 94
3.1 静态分析 95
3.1.1 控制流分析 95
3.1.2 数据流分析 103
3.1.3 数据依赖分析 107
3.1.4 别名分析 109
3.1.5 切片 115
3.1.6 抽象解析 116
3.2 动态分析 118
3.2.1 调试 118
3.2.2 剖分 129
3.2.3 trace 132
3.2.4 模拟器 135
3.3 重构源码 137
3.3.1 反汇编 139
3.3.2 反编译 146
3.4 实用性分析 155
3.4.1 编程风格度量 156
3.4.2 软件复杂性度量 158
3.4.3 软件可视化 159
3.5 小结 162
第4章 代码混淆 163
4.1 保留语义的混淆转换 164
4.1.1 算法obfcf:多样化转换 164
4.1.2 算法obftp:标识符重命名 170
4.1.3 混淆的管理层 173
4.2 定义 177
4.2.1 可以实用的混淆转换 178
4.2.2 混淆引发的开销 181
4.2.3 隐蔽性 181
4.2.4 其他定义 182
4.3 复杂化控制流 183
4.3.1 不透明表达式 183
4.3.2 算法obfwhkd:压扁控制流 184
4.3.3 使用别名 186
4.3.4 算法obfctjbogus:插入多余的控制流 191
4.3.5 算法obfldk:通过跳转函数执行无条件转移指令 195
4.3.6 攻击 198
4.4 不透明谓词 201
4.4.1 算法obfctjpointer:从指针别名中产生不透明谓词 202
4.4.2 算法obfwhkdopaque:数组别名分析中的不透明值 204
4.4.3 算法obfctjthread:从并发中产生的不透明谓词 205
4.4.4 攻击不透明谓词 207
4.5 数据编码 211
4.5.1 编码整型数 213
4.5.2 混淆布尔型变量 217
4.5.3 混淆常量数据 220
4.5.4 混淆数组 222
4.6 结构混淆 226
4.6.1 算法obfwcsig:合并函数签名 226
4.6.2 算法obfctjclass:分解和合并类 229
4.6.3 算法obfdmrvsl:摧毁高级结构 232
4.6.4 算法obfajv:修改指令编码方式 239
4.7 小结 243
第5章 混淆理论 245
5.1 定义 248
5.2 可被证明是安全的混淆:我们能做到吗 249
5.2.1 图灵停机问题 250
5.2.2 算法reaa:对程序进行反混淆 252
5.3 可被证明是安全的混淆:有时我们能做到 254
5.3.1 算法obflbs:混淆点函数 254
5.3.2 算法obfns:对数据库进行混淆 261
5.3.3 算法obfpp:同态加密 263
5.3.4 算法obfcejo:白盒des加密 267
5.4 可被证明是安全的混淆:(有时是)不可能完成的任务 272
5.4.1 通用混淆器 273
5.4.2 混淆最简单的程序 276
5.4.3 对混淆所有程序的不可能性的证明 277
5.4.4 小结 278
5.5 可被证明为安全的混淆:这玩儿还能成吗 279
5.5.1 跳出不可能性的阴霾 280
5.5.2 重新审视定义:构造交互式的混淆方法 281
5.5.3 重新审视定义:如果混淆不保留语义又当如何 283
5.6 小结 286
第6章 动态混淆 288
6.1 定义 290
6.2 代码迁徙 292
6.2.1 算法obfkmnm:替换指令 293
6.2.2 算法obfagswap:自修改状态机 296
6.2.3 算法obfmamdsb:动态代码合并 307
6.3 加密技术 311
6.3.1 算法obfcksp:把代码作为产生密钥的源泉 312
6.3.2 算法obfagcrypt:结合自修改代码和加密 318
6.4 小结 324
第7章 软件防篡改 325
7.1 定义 327
7.1.1 对篡改的监测 328
7.1.2 对篡改的响应 331
7.1.3 系统设计 332
7.2 自监测 333
7.2.1 算法tpca:防护代码之网 335
7.2.2 生成hash函数 338
7.2.3 算法tphmst:隐藏hash值 342
7.2.4 skype中使用的软件保护技术 349
7.2.5 算法rewos:攻击自hash算法 352
7.2.6 讲评 356
7.3 算法retcj:响应机制 357
7.4 状态自检 360
7.4.1 算法tpcvcpsj:易遭忽视的hash函数 362
7.4.2 算法tpjjv:重叠的指令 365
7.5 远程防篡改 368
7.5.1 分布式监测和响应机制 368
7.5.2 解决方案 369
7.5.3 算法tpzg:拆分函数 369
7.5.4 算法tpslspdk:通过确保远程机器硬件配置来防篡改 372
7.5.5 算法tpcns:对代码进行持续的改变 375
7.6 小结 376
第8章 软件水印 378
8.1 历史和应用 378
8.1.1 应用 379
8.1.2 在音频中嵌入水印 382
8.1.3 在图片中嵌入水印 383
8.1.4 在自然语言文本中嵌入水印 384
8.2 软件水印 387
8.3 定义 388
8.3.1 水印的可靠性 389
8.3.2 攻击 391
8.3.3 水印与指纹 392
8.4 使用重新排序的方法嵌入水印 392
8.4.1 算法wmdm:重新排列基本块 394
8.4.2 重新分配资源 396
8.4.3 算法wmqp:提高可靠性 397
8.5 防篡改水印 400
8.6 提高水印的抗干扰能力 403
8.7 提高隐蔽性 408
8.7.1 算法wmmimit:替换指令 409
8.7.2 算法wmvvs:在控制流图中嵌入水印 409
8.7.3 算法wmcc:抽象解析 416
8.8 用于隐写术的水印 421
8.9 把水印值分成几个片段 425
8.9.1 把大水印分解成几个小片段 426
8.9.2 相互冗余的水印片段 427
8.9.3 使用稀疏编码提高水印的可靠性 432
8.10 图的编/解码器 432
8.10.1 父指针导向树 433
8.10.2 底数图 433
8.10.3 排序图 434
8.10.4 根延伸的平面三叉树枚举编码 434
8.10.5 可归约排序图 435
8.11 讲评 436
8.11.1 嵌入技术 437
8.11.2 攻击模型 438
第9章 动态水印 439
9.1 算法wmct:利用别名 443
9.1.1 一个简单的例子 443
9.1.2 水印识别中的问题 445
9.1.3 增加数据嵌入率 447
9.1.4 增加抵御攻击的抗干扰性能 452
9.1.5 增加隐蔽性 455
9.1.6 讲评 458
9.2 算法wmnt:利用并发 459
9.2.1 嵌入水印的基础构件 462
9.2.2 嵌入示例 467
9.2.3 识别 469
9.2.4 避免模式匹配攻击 470
9.2.5 对构件进行防篡改处理 471
9.2.6 讲评 473
9.3 算法wmccdkhlspaths:扩展执行路径 474
9.3.1 水印的表示和嵌入 474
9.3.2 识别 479
9.3.3 讲评 480
9.4 算法wmccdkhlsbf:防篡改的执行路径 481
9.4.1 嵌入 481
9.4.2 识别 484
9.4.3 对跳转函数进行防篡改加固 484
9.4.4 讲评 485
9.5 小结 486
第10章 软件相似性分析 489
10.1 应用 490
10.1.1 重复代码筛选 490
10.1.2 软件作者鉴别 492
10.1.3 剽窃检测 495
10.1.4 胎记检测 496
10.2 定义 497
10.3 基于k-gram的分析 501
10.3.1 算法ssswawinnow:有选择地记录k-gram hash 501
10.3.2 算法ssswamoss:软件剽窃检测 504
10.3.3 算法ssmckgram:java 字节码的k-gram“胎记” 507
10.4 基于api的分析 509
10.4.1 算法sstnmm:面向对象的“胎记” 510
10.4.2 算法sstonmm:动态函数调用“胎记” 512
10.4.3 算法sssdl:动态k-gram api“胎记” 513
10.5 基于树的分析 514
10.6 基于图的分析 518
10.6.1 算法sskh:基于pdg的重复代码筛选 518
10.6.2 算法sslchy:基于pdg的剽窃检测 521
10.6.3 算法ssmcwpp:整个程序的动态“胎记” 522
10.7 基于软件度量的分析方法 525
10.7.1 算法sskk:基于软件度量的重复代码筛选 525
10.7.2 算法sslm:基于度量的软件作者鉴别 527
10.8 小结 532
第11章 用硬件保护软件 534
11.1 使用发行的物理设备反盗版 535
11.1.1 对发行盘片的保护 536
11.1.2 软件狗和加密锁 541
11.2 通过可信平台模块完成认证启动 545
11.2.1 可信启动 546
11.2.2 产生评估结果 548
11.2.3 tpm 550
11.2.4 盘问式验证过程 551
11.2.5 社会可信性和隐私问题 553
11.2.6 应用和争议 555
11.3 加密的可执行文件 556
11.3.1 xom体系结构 557
11.3.2 阻止重放攻击 560
11.3.3 修补有漏洞的地址总线 561
11.3.4 修补有漏洞的数据总线 564
11.3.5 讲评 565
11.4 攻击防篡改设备 565
11.4.1 监听总线——破解微软的xbox 566
11.4.2 猜测指令——破解达拉斯半导体公司的ds5002fp微处理器 567
11.4.3 破解智能卡 570
11.4.4 非侵入式攻击 573
11.4.5 主板级的保护 574
11.5 小结 576
参考文献 578
图书 来源于:中国互动出版网

分享到:
评论

相关推荐

    软件加密与解密技术.doc

    软件加密与解密技术.doc

    C#加密与解密注册码DEMO程序

    在计算机编程领域中,尤其是在软件开发与网络...通过该程序的设计与实现,我们可以看到软件加密与解密技术对于保护软件知识产权的重要性,同时也体会到了在软件开发中,如何巧妙运用各种技术手段来达到既定的商业目标。

    软件加密与解密技术教程+光盘源码.zip

    软件加解密技术教程+光盘源码.zip

    汇编语言之加密与解密[参考].pdf

    总的来说,《汇编语言之加密与解密》这本书提供了一个进入这个迷人领域的入口,通过学习汇编语言、Windows编程以及相关的加密解密技术,开发者可以增强对计算机系统底层的理解,进而在软件安全方面发挥重要作用。...

    加密、解密技术

    加密和解密技术是信息安全领域中的核心组成部分,用于保护数据的隐私性和完整性。在数字化的世界里,无论是个人通信、商业交易还是政府机密,都需要安全的加密手段来防止未经授权的访问和窃取。本文将深入探讨加密和...

    软件加密解密技术内幕测试第1版CHM读本.rar

    软件加密、解密技术内幕,目录:  PE文件格式一览  手工构造一个超微型的 PE 文件  Win32调试API  传递给异常处理例程的参数  如何通过崩溃地址找到出错的代码行  利用SEH改变程序流程以达到反跟踪的...

    软件加密解密与计算机安全技术

    软件加密解密与计算机安全技术 软件加密解密与计算机安全技术

    基于RSA的公钥加密,密钥的生成及加解密,包含源代码及实习报告

    总之,这个资源提供了一个完整的RSA加密解密实践,包括源代码和实习经验分享,对于学习和理解RSA算法及其在Java平台上的应用非常有帮助。你可以通过研究这些材料,进一步提升自己在信息安全和加密技术方面的知识。

    如何给软件加密和解密

    如何给软件加密和解密如何给软件加密和解密

    LABVIEW 的程序加密与解密 (可以设定定时关机 ,可让客户不给钱,开不了机!)

    "LABVIEW的程序加密与解密"这个主题涉及到的是如何确保基于LABVIEW(一种图形化编程语言)开发的应用程序的安全性。LABVIEW是由美国国家仪器公司(NI)开发的一种强大的编程环境,广泛用于测试、测量和控制系统的设计...

    软件加密解密技术

    在IT领域,软件加密解密技术是保护软件知识产权和用户数据安全的重要手段。它涉及到一系列复杂的算法和协议,用于确保软件在传输、存储和运行过程中的安全性。下面将详细探讨这个主题。 首先,我们来理解“加密”和...

    公钥加密私钥解密&私钥加密公钥解密

    ### 公钥加密私钥解密与私钥加密公钥解密 在现代信息安全领域,公钥加密私钥解密及私钥加密后由公钥解密或验证的技术被广泛应用于数据保护、身份验证和安全通信等多个方面。下面将详细阐述这两种技术的基本原理及其...

    RSA加密解密工具,用于文件的加密和解密* RSA加密解密:私钥解密,公钥加密

    9. **应用场景**:RSA加密解密工具常用于网络通信中的数据保护、软件激活、数字证书、电子邮件安全等领域,确保信息在传输过程中不被窃取或篡改。 总之,通过使用这个RSA加密解密工具并遵循操作指南,用户可以有效...

    软件设计加密解密详述

    本文将深入探讨加密解密的基本概念、常见算法、应用实例以及在软件设计中的重要性。 首先,我们需要理解加密和解密的基本原理。加密是将明文(可读数据)转化为密文(不可读数据)的过程,而解密则是将密文恢复为...

    android实现视频的加密和解密(使用AES)

    * 视频编辑软件:在视频编辑软件中,视频加密和解密可以保护视频内容的安全,防止视频被非法访问和盗用。 Android 中的视频加密和解密是非常重要的安全机制,可以保护视频内容的安全,防止视频被非法访问和盗用。

    BAT批处理脚本-加密解密-解密.zip

    本文将深入探讨“BAT批处理脚本-加密解密-解密.zip”这一主题,以及如何利用它进行文件的加密与解密。 批处理脚本,也称为批处理文件或批处理程序,是Microsoft Windows操作系统中的一种命令行脚本语言。它由一系列...

    SQLITE3 数据文件加密与解密程序 DELPHI版

    网上大多关于SQLITE3数据文件的加密与解密都是欲言由止,近期因要开发关于SQLITE3数据库类型的软件,做了一下研究。用D7写了这样一个工具。支持SQLITE3数据文件的批量加密与解密。工具自身不依赖SQLITE3.DLL动态库,...

    文字加密和解密软件!

    可对文字进行加密解密!双方都要有此软件,输入要加密的内容,发给对方,对方再用此软件解密!

    软件加密解密技术内幕

    软件加密解密技术内幕

    《加密和解密》(第二版) 前两章

    第1章 基础知识 第2章 代码分析技术第3章 静态分析技术第4章 动态分析技术第5章 软件保护技术及其弱点第6章 加密算法第7章 反编译语言第8章 PE文件格式第9章 增加PE文件功能第10章 反跟踪技术第11章 加壳与脱壳第12...

Global site tag (gtag.js) - Google Analytics