图书介绍

软件加密与解密【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

软件加密与解密
  • (美)科尔伯格,(美)纳盖雷著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:9787115270757
  • 出版时间:2012
  • 标注页数:601页
  • 文件大小:136MB
  • 文件页数:622页
  • 主题词:软件加密;解密软件

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

软件加密与解密PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第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 trace132

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 hash501

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-gramAPI“胎记”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 TPM550

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 监听总线——破解微软的XBOX566

11.4.2 猜测指令——破解达拉斯半导体公司的DS5002FP微处理器567

11.4.3 破解智能卡570

11.4.4 非侵入式攻击573

11.4.5 主板级的保护574

11.5 小结576

参考文献578

热门推荐