《微软.NET程序的加密与解密》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:单海波,王坤峰,李晓峰编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2008
  • ISBN:9787121075520
  • 页数:340 页
图书介绍:本书是《加密与解密》软件安全系列的第三本,主要介绍代码保护与加密解密技术在微软.NET框架中的应用。全书分基础篇、进阶篇、实战篇和提高篇四大部分,内容涉及.NET框架基础、元数据与MSIL、.NET程序与内核调试、主流代码保护及其逆向技术、非托管API应用、64位.NET程序调试等。本书层次循序渐进、难度深入浅出、且注重实例分析,是软件开发人员了解.NET内核及加密解密技术不可多得的参考书,适合.NET开发人员及加密与解密爱好者阅读。

第一部分 基 础篇 2

第1章 微软.NET框架基本原理 2

1.1什么是.NET 2

1.2编写第一个.NET程序 3

1.2.1.NET开发环境 3

1.2.2程序的编译 5

1.3逆向第一个.NET程序 8

1.3.1用ildasm反编译.NET程序 8

1.3.2反编译的结果:MSIL与元数据 10

1.3.3用ilasm进行再编译 11

1.4程序的运行:CLR与JIT 12

1.5小结 16

第2章 MSIL中间语言 17

2.1 MSIL语言基础 17

2.1.1 IL程序基本结构 17

2.1.2 2.0版IL支持的新特性 19

2.1.3一个完整的代码示例 21

2.2 MSIL的运行机制:堆栈机 23

2.3 MSIL指令 25

2.3.1流程控制指令 25

2.3.2算术指令 27

2.3.3参数、局部变量与字段寻址指令 32

2.3.4方法调用 34

2.3.5类与值类型操作指令 37

2.3.6向量操作指令 39

2.4小结 42

第3章 PE结构扩展与元数据 43

3.1.NET对PE结构的扩展 43

3.2元数据及其结构 46

3.2.1什么是元数据 46

3.2.2元数据的存储形式(1):堆 47

3.2.3元数据的存储形式(2):表 49

3.2.4元数据的Signature 58

3.3元数据的标识及其解码 60

3.4元数据的验证 63

3.5小结 65

第二部分 分析篇 68

第4章 静态分析技术 68

4.1静态反编译软件 68

4.1.1 Reflector的使用 68

4.1.2 Dis#的使用 72

4.1.3其他反编译软件 75

4.2代码修改技术 78

4.3代码复用技术 80

4.4混合编译程序的静态分析 82

4.5.NET程序本地化技术 86

4.5.1基础知识 86

4.5.2利用可视化工具的本地化 88

4.5.3利用MSIL的本地化 89

4.6小结 91

第5章 动态调试技术 92

5.1.NET动态调试的分类 92

5.2混合模式调试 93

5.2.1 GuiDbg的应用 94

5.2.2 PeBrowseDbg的应用 99

5.3本地调试 104

5.3.1 O11yDbg的应用 105

5.3.2 WinDbg的应用 109

5.4小结 116

第三部分 保护篇 118

第6章 强名称保护 118

6.1给程序签署强名称 118

6.1.1什么是强名称 118

6.1.2单个程序集的签署 119

6.1.3引用有强名称的程序集 123

6.2强名称的去除和替换 125

6.2.1去除和替换强名称的原理 125

6.2.2利用工具的自动实现 126

6.3代码与强名称的结合 128

6.4小结 131

第7章 名称混淆 132

7.1名称混淆的基本原理 132

7.2手动实现名称混淆 133

7.3名称混淆的局限性 139

7.4常见名称混淆形式 140

7.5反名称混淆的一般方法 143

7.6小结 145

第8章 流程混淆 146

8.1流程混淆的基本原理 146

8.2常见流程混淆的方式:基于跳转的混淆 148

8.2.1代码块的易位 149

8.2.2连续跳转 151

8.2.3跳转表 153

8.2.4逻辑跳转 154

8.2.5 switch跳转 157

8.3流程混淆的扩展:语法混淆 160

8.3.1让堆栈溢出 160

8.3.2利用高级语言不支持的语法 161

8.3.3利用高级语言间的语法差异 166

8.3.4利用反编译引擎的缺陷 167

8.3.5插入无效指令编码 170

8.4反流程混淆的一般方法 171

8.5小结 173

第9章 辅助保护手段 174

9.1用户字符串编码 174

9.1.1一般编码 175

9.1.2使用强名称的编码 176

9.2给程序集添加错误元数据 180

9.2.1 #GUID堆大小错误 180

9.2.2 TypeDef的Extends项错误 181

9.2.3利用PE结构 182

9.2.4添加多个Module 184

9.3打包 186

9.4特殊的.NET属性 189

9.5利用系统特性 192

9.6小结 193

第10章 壳保护 194

10.1什么是程序集整体保护 194

10.2纯.NET实现的压缩壳 195

10.3基于Win32的壳 201

10.4挂钩内核的壳 205

10.5什么是基于每个方法的保护 216

10.5.1常见的挂钩形式 217

10.5.2更进一步的保护 222

10.5.3实现方式 223

10.5.4一般分析方法 225

10.6小结 226

第11章 其他保护方式 227

11.1许可证保护 227

11.1.1许可证机制简介 227

11.1.2.NET许可证机制的扩展 231

11.1.3一般分析方法 236

11.2算法的运用 237

11.2.1.NET提供的算法空间 238

11.2.2对称算法的.NET实现 239

11.2.3非对称算法的.NET实现 243

11.2.4数字签名的.NET实现 247

11.3虚拟机保护 248

11.4编译为本地代码 250

11.5动态方法委托调用 254

11.6小结 260

第四部分 扩展篇 262

第12章 非托管API 262

12.1非托管API综述 262

12.2宿主API 263

12.3合成API 267

12.4强名称API 271

12.5元数据API 273

12.6分析API 283

12.7小结 293

第13章 MONO、SSCLI与.NET内核调试 294

13.1 MONO简介 294

13.2 SSCIL简介 300

13.3.NET框架内核调试 306

13.4小结 309

第14章 Win64平台上的.NET 310

14.1 64位编程的一般性问题 310

14.2 C++编程的改变 311

14.2.1汇编级的改变 313

14.2.2.NET编程的改变 317

14.3 64位PE结构 317

14.4 64位.NET程序调试 320

14.5小结 327

附录A 元数据表 328

参考文献 340