中文名: 微软.NET程序的加密与解密(安全技术大系)
发行时间: 2008年11月
地区: 大陆
对白语言: 普通话
文字语言: 简体中文
简介:
《微软.NET程序的加密与解密》是软件安全主题网站——看雪学院《加密与解密》软件安全系列丛书的第三本,主要介绍代码保护与加密解密技术在微软.NET框架中的应用。全书分为基出篇、分析篇、保护篇和扩展篇四大部分,内容涉及.NET框架基础、元数据与MSIL、.NET程序与内核调试、主流代码保护及其逆向技术、非托管API应用、64位NET程序调试等。
编辑推荐
《微软.NET程序的加密与解密》的层次循序渐进, 难度深入浅出,且注重实例分析,是软件开发人员了解.NET内核及加密解密技术不可多得的参考书,适合NET开发人员及加密与解密爱好者阅读。基础篇:精辟地讲解了微软,NET框架的基本原理,MSIL中间语言和PE结构扩展与元数据,为进一步学习NET程序的加密与解密打好良好的理论基础。
分析篇:深入挖掘了静态分析技术、动态调试技术的技术细节,带你跨过NET程序加密与解密的技术门槛,真正步入信息安全技术的殿堂。
保护篇:全面叙述了强名称保护、名称混淆、流程混淆、辅助保护手段、壳保护和其他保护方式,使你增强从事NET程序加密与解密工作的能力和实战本领。
扩展篇:通过非托管API,MONO,SSCLI与NET内核调试和Win64平台上的NET扩展演练、使你开阔视野、远瞻安全技术的前沿动态,提升NET的逆向功力。
截图:
目录
第一部分 基础篇
第1章 微软.NET框架基本原理
1.1 什么是.NET
1.2 编写第一个.NET程序
1.2.1 .NET开发环境
1.2.2 程序的编译
1.3 逆向第一个.NET程序
1.3.1 用ildasm反编译.NET程序
1.3.2 反编译的结果:MSIL与元数据
1.3.3 用ilasm进行再编译
1.4 程序的运行:CLR与JIT
1.5 小结
第2章 MSIL中间语言
2.1 MSIL语言基础
2.1.1 IL程序基本结构
2.1.2 2.0版IL支持的新特性
2.1.3 一个完整的代码示例
2.2 MSIL的运行机制:堆栈机
2.3 MSIL指令
2.3.1 流程控制指令
2.3.2 算术指令
2.3.3 参数、局部变量与字段寻址指令
2.3.4 方法调用
2.3.5 类与值类型操作指令
2.3.6 向量操作指令
2.4 小结
第3章 PE结构扩展与元数据
3.1 .NET对PE结构的扩展
3.2 元数据及其结构
3.2.1 什么是元数据
3.2.2 元数据的存储形式(1):堆
3.2.3 元数据的存储形式(2):表
3.2.4 元数据的Signature
3.3 元数据的标识及其解码
3.4 元数据的验证
3.5 小结
第二部分 分析篇
第4章 静态分析技术
4.1 静态反编译软件
4.1.1 Reflector的使用
4.1.2 Dis#的使用
4.1.3 其他反编译软件
4.2 代码修改技术
4.3 代码复用技术
4.4 混合编译程序的静态分析
4.5 .NET程序本地化技术
4.5.1 基础知识
4.5.2 利用可视化工具的本地化
4.5.3 利用MSIL的本地化
4.6 小结
第5章 动态调试技术
5.1 .NET动态调试的分类
5.2 混合模式调试
5.2.1 GuiDbg的应用
5.2.2 PeBrowseDbg的应用
5.3 本地调试
5.3.1 OllyDbg的应用
5.3.2 WinDbg的应用
5.4 小结
第三部分 保护篇
第6章 强名称保护
第7章 名称混淆
第8章 流程混淆
第9章 辅助保护手段
第10章 壳保护
第11章 其他保护方式
第四部分 扩展篇
第12章 非托管API
第13章 MONO、SSCLI与.NET内核调试
第14章 Win64平台上的.NET
附录A 元数据表
参考文献
……
--------------------------------------------------------------------------------
文摘
第一部分 基础篇
第1章微软.N ET框架基本原理
了解.NET框架的程序运行原理及代码编写方法是学习.NET加密与解密的基础。本章不去长篇大论“什么是.NET”,因为大多数编程书籍已将这个问题解释得很清楚了,从加密与解密的角度帮助读者了解.NET框架才是本章的核心内容。
接下来的内容将以四步走的形式介绍:通过编译第一个.NET程序,学习SDK的基本使用,对.NET程序的运行有感性认识;通过反编译,学习ildasm的使用,掌握.NET逆向的初步技巧;通过修改IL代码并再次编译,对MSIL语言和元数据有初步认识;最后,在以上三步的基础上,理解.NET框架最重要的两个概念:CLR与JIT。
1.1什么是.NET
.NET是架构于操作系统之上的平台,它是一套虚拟机,其核心功能由一系列运行在用户层(ring3层)的DLL文件实现。相对于读者已经非常熟悉的Win32平台,或是尚未普及的、Win64平台,.NET是既有联系又有区别。联系是指,.NET框架构建在Win32/64平台之上,它的核心程序是一系列运行于用户层的DLL,这就决定了.NET的内核实现仍是基于win32/64;区别是指,传统用户层DLL(如Kernel32.dU、User32.dll等)的主要功能是提供API,而同样是由DLL实现的,NET功能要强大得多,它提供了一套完整的程序开发框架,包括新的编程语言、新的程序运行方式、新的服务等,这些都远远超过API涵盖的范围。从上述区别方面来说,可以将.NET当作一个全新的平台来学习。
如果读者熟悉Java或者虚拟机的概念,那么理解.NET会非常容易。如果读者是个新手,也不用担心,只要把握住以下三个.NET最重要的特性。
(1)统一了编程语言。过去,不同编程语言间的协作总有着或多或少的兼容性问题,使用比较麻烦。.NET则统一了编程语言:无论程序是用c#,还是c++,或是VB编写,最终都被编译为.NET中间语言MSIL(简称IL)。这种统一对程序开发的贡献不言而喻,但同时也方便了软件逆向:无须再分别为每一种语言单独编写反编译器。