加密与解密.docx

上传人:b****6 文档编号:5944291 上传时间:2023-01-02 格式:DOCX 页数:16 大小:20.92KB
下载 相关 举报
加密与解密.docx_第1页
第1页 / 共16页
加密与解密.docx_第2页
第2页 / 共16页
加密与解密.docx_第3页
第3页 / 共16页
加密与解密.docx_第4页
第4页 / 共16页
加密与解密.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

加密与解密.docx

《加密与解密.docx》由会员分享,可在线阅读,更多相关《加密与解密.docx(16页珍藏版)》请在冰豆网上搜索。

加密与解密.docx

加密与解密

编辑推荐

提示软件加密与解密最核心,看雪安全技术团队全力支持。

专家讲坛,全面探讨,软件安全问题与解决之道,技术剖析,深入浅出,分析加密与解密技术核心,共同进步,循序渐进,迅速提升读者的专业水平。

  本书技术支持:

看雪软件安全网站提供本书的全面技术支持服务,阅读此书过程中,如有什么问题或学习心得,欢迎光临论坛与这些传说中的好手共同交流。

内容简介

本书以加密与解密为切入点,讲述了软件安全领域许多基础知识和技能,如调试技能、逆向分析、加密保护、外壳开发、虚拟机设计等。

读者在掌握本书的内容,很容易在漏洞分析、安全编程、病毒分析、软件保护等领域扩展,这些知识点都是相互的,彼此联系。

国内高校对软件安全这块领域教育重视程度还不够,许多方面还是空白,而近年来许多企业对软件安全技术人才需求量越来越大。

从就业角度来说,掌握这方面技术,可以提高自身的竞争能力;从个人成长角度来说,研究软件安全技术有助于掌握一些系统底层知识,是提升职业技能的重要途径。

作为一名合格的程序员,除了掌握需求分析、设计模式等外,如能掌握一些系统底层知识,熟悉整个系统的底层结构,对自己的工作必将获益良多。

本书可以作为学校或培训机构的软件安全辅助教材,是安全技术爱好者、调试人员、程序开发人员不可多得的一本好书。

目录

前言

第1篇基础篇

 第1章基础知识

  1.1文本字符

   1.1.1字节存储顺序

   1.1.2ASCII与Unicode字符集

  1.2WINDOWS操作系统

   1.2.1WinAPI简介

   1.2.2常用Win32API函数

   1.2.3什么是句柄

   1.2.4Windows9x与Unicode

   1.2.5WindowsNT/2000/XP与Unicode

   1.2.6Windows消息机制

  1.3保护模式简介

   1.3.1虚拟内存

   1.3.2保护模式的权限级别

  1.4认识PE格式

第2篇调试篇

 第2章动态分析技术33

  2.1OLLYDBG调试器

   2.1.1OllyDbg界面

   2.1.2OllyDbg的配置

   2.1.3加载程序

   2.1.4基本操作

   2.1.5断点

   2.1.6插件

   2.1.7Runtrace

   2.1.8Hittrace

   2.1.9符号调试技术

   2.1.10OllyDbg常见问题

  2.2SOFTICE调试器

第3章静态分析技术31

  3.1文件类型分析

   3.1.1PEiD工具

   3.1.2FileInfo工具

  3.2静态反汇编

   3.2.1打开文件

   3.2.2IDA的配置

   3.2.3IDA主窗口界面

   3.2.6交叉参考

   3.2.7参考重命名

   3.2.8标签的用法

   3.2.9进制的转换

   3.2.10代码和数据转换

   3.2.11字符串

   3.2.12数组

   3.2.13结构体

   3.2.14枚举类型

   3.2.15堆栈变量

   3.2.16IDC脚本

   3.2.17FLIRT

   3.2.18插件

   3.2.19其他功能

   3.2.20小结

3.3可执行文件的修改

3.4静态分析技术应用实例

3.4.1解密初步

   3.4.2逆向工程初步

 第4章逆向分析技术35

  4.1启动函数

  4.2函数

   4.2.1函数的识别

   4.2.2函数的参数

   4.2.3函数的返回值

  4.3数据结构

   4.3.1局部变量

   4.3.2全局变量

   4.3.3数组

  4.4虚函数

  4.5控制语句

   4.5.1IF-THEN-ELSE语句

   4.5.2SWITCH-CASE语句

   4.5.3转移指令机器码的计算

   4.5.4条件设置指令

   4.5.5纯算法实现逻辑判断

  4.6循环语句

  4.7数学运算符

   4.7.1整数的加法和减法

   4.7.2整数的乘法

   4.7.3整数的除法

  4.8文本字符串

   4.8.1字符串存储格式

   4.8.2字符寻址指令

   4.8.3字母大小写转换

   4.8.4计算字符串的长度

  4.9指令修改技巧

第3篇解密篇

 第5章常见的演示版保护技术34

  5.1序列号保护方式

   5.1.1序列号保护机制

   5.1.2如何攻击序列号保护

   5.1.3字符串比较形式

   5.1.4注册机制作

  5.2警告(NAG)窗口

  5.3时间限制

   5.3.1计时器

   5.3.2时间限制

   5.3.3拆解时间限制保护

  5.4菜单功能限制

   5.4.1相关函数

   5.4.2拆解菜单限制保护

  5.5KEYFILE保护

   5.5.1相关API函数

   5.5.2拆解KeyFile保护

  5.6网络验证

   5.6.1相关函数

   5.6.2网络验证破解一般思路

  5.7CD-CHECK

   5.7.1相关函数

   5.7.2拆解光盘保护

  5.8只运行一个实例

   5.8.1实现方案

   5.8.2实例

  5.9常用断点设置技巧

 第6章加密算法

  6.1单向散列算法

   6.1.1MD5算法

   6.1.2SHA算法

   6.1.3小结

  6.2对称加密算法

   6.2.1RC4流密码

   6.2.2TEA算法

   6.2.3IDEA算法

   6.2.4BlowFish算法

   6.2.5AES算法

   6.2.6对称加密算法小结

  6.3公开密钥加密算法

   6.3.1RSA算法

   6.3.2ElGamal公钥算法

   6.3.3DSA数字签名算法

   6.3.4椭圆曲线密码编码学

  6.4其他算法

   6.4.1CRC32算法

   6.4.2Base64

 6.5常见加密库接口及其识别

   6.5.1Miracl大数运算库

   6.5.2FGInt

   6.5.4其它加密算法库介绍

第4篇语言和平台篇

 第7章DELPHI程序

  7.1认识DELPHI

  7.2DEDE反编译器

  7.3按钮事件代码

  7.4模块初始化与结束化

 第8章VISUALBASIC程序

  8.1基础知识

   8.1.1字符编码方式

   8.1.2编译模式

  8.2自然编译(NATIVE)

   8.2.1相关VB函数

   8.2.2VB程序比较方式

  8.3伪编译(PCODE)(cyclotron编写)

   8.3.1虚拟机与伪代码

   8.3.2动态分析VBP-code程序

   8.3.3伪代码的综合分析

   8.3.4VBP-code攻击实战

 第9章.NET平台加解密(tankaiha编写)51

  9.1.NET概述

   9.1.1什么是.Net

   9.1.2几个基本概念

   9.1.3第一个.Net程序

  9.2MSIL与元数据

   9.2.1PE结构的扩展

   9.2.2.Net下的汇编MSIL

   9.2.3MSIL与元数据的结合

  9.3代码分析技术

   9.3.1静态分析

   9.3.2动态调试

   9.3.3代码修改

  9.4代码保护技术及其逆向

   9.4.1强名称

   9.4.2名称混淆

   9.4.3流程混淆

   9.4.4压缩

   9.4.5加密

   9.4.6其它保护手段

  9.5深入.NET

   9.5.1反射与CodeDOM

   9.5.2UnmaganedAPI

   9.5.3Rotor、MONO与.Net内核

第5篇系统篇

 第10章PE文件格式54

  10.1PE的基本概念

   10.1.1基地址

   10.1.2相对虚拟地址

   10.1.3文件偏移地址

   10.2MS-DOS头部

  10.3PE文件头

   10.3.1Signature字段

   10.3.2IMAGE_FILE_HEADER结构

   10.3.3OptionalHeader

10.4区块

   10.4.1区块表

   10.4.2各种区块的描述

   10.4.3区块的对齐值

   10.4.4文件偏移与虚拟地址转换

10.5输入表

   10.5.1输入函数的调用

   10.5.2输入表结构

   10.5.3输入地址表

   10.5.4输入表实例分析

  10.6绑定输入

  10.7输出表

   10.7.1输出表结构

   10.7.2输出表结构实例分析

  10.8基址重定位

   10.8.1基址重定位概念

   10.8.2基址重定位结构定义

   10.8.3基址重定位结构实例分析

  10.9资源

   10.9.1资源结构

   10.9.2资源结构实例分析

   10.9.3资源编辑工具

  10.10TLS初始化

  10.11调试目录

  10.12延迟装入数据

  10.13程序异常数据

  10.14.NET头部

  10.15PE分析工具编写

   10.15.1文件格式检查

   10.15.2FileHeader和OptionalHeader内容的读取

   10.15.3得到数据目录表信息

   10.15.4得到区块表信息

   10.15.5得到输出表信息

   10.15.6得到输入表信息

 第11章结构化异常处理11

  11.1基本概念

   11.1.1异常列表

   11.1.2异常处理的基本过程

   11.1.3SEH的分类

  11.2SEH相关数据结构

   11.2.1TEB结构

   11.2.2EXCEPTION_REGISTRATION结构

   11.2.3EXCEPTION_POINTERS、EXCEPTION_RECORD、CONTEXT

  11.3异常处理回调函数

第6篇脱壳篇

 第12章专用加密软件11

  12.1认识壳

   12.1.1壳的概念

   12.1.2压缩引擎

  12.2压缩壳

   12.2.1UPX

   12.2.2ASPacK

12.3加密壳

   12.3.1ASProtect

   12.3.2Armadillo

   12.3.3EXECryptor

   12.3.4Themida

  12.4虚拟机保护软件

   12.4.1虚拟机介绍

   12.4.2VMProtect简介

 第13章脱壳技术64

  13.1基础知识

   13.1.1壳的加载过程

   13.1.2脱壳机

   13.1.3手动脱壳

  13.2寻找OEP

   13.2.1根据跨段指令寻找OEP

   13.2.2用内存访问断点找OEP

   13.2.3根据堆栈平衡原理找OEP

   13.2.4根据编译语言特点找OEP

  13.3抓取内存映像

   13.3.1Dump原理

   13.3.2反DUMP技术

  13.4重建输入表

   13.4.1输入表重建的原理

   13.4.2确定IAT的地址和大小

   13.4.3根据IAT重建输入表

   13.4.4ImportREC重建输入表

   13.4.5输入表加密概括

  13.5DLL文件脱壳

   13.5.1寻找OEP

   13.5.2Dump映像文件

   13.5.3重建DLL的输入表

   13.5.4构造重定位表

  13.6附加数据

  13.7PE文件的优化

  13.8压缩壳

   13.8.1UPX外壳

   13.8.2ASPack外壳

  13.9静态脱壳

   13.9.1外壳Loader的分析

   13.9.2编写静态脱壳器

  13.10加密壳

   13.10.1ASProtect

   13.10.2Thmedia的SDK分析

第7篇保护篇

 第14章软件保护技术26

  14.1防范算法求逆

   14.1.1基本概念

   14.1.2堡垒战术

   14.1.3游击战术

  14.2抵御静态分析

   14.2.1花指令

   14.2.2SMC技术实现

   14.2.3信息隐藏

   14.2.4简单多态变形技术

  14.3文件完整性检验

   14.3.1磁盘文件校验实现

   14.3.2校验和(Checksum)

   14.3.3内存映像校验

  14.4代码与数据结合技术

   14.4.1准备工作

   14.4.2加密算法选用

   14.4.3手动加密代码

   14.4.4使.text区块可写

  14.5软件保护的若干忠告

 第15章反跟踪技术(forgot编写)52

  15.1由BEINGDEBUGGED引发的蝴蝶效应

   15.1.1BeingDebugged

   15.1.2NtGlobalFlag

   15.1.3HeapMagic

   15.1.4从源头消灭BeingDebugged

  15.2回归NATIVE:

用户态的梦魇

   15.2.1CheckRemoteDebuggerPresent

   15.2.2ProcessDebugPort

   15.2.3ThreadHideFromDebugger

   15.2.4DebugObject

   15.2.5SystemKernelDebuggerInformation

   15.2.6NativeAPI

   15.2.7Hook和AntiHook

  15.3真正的奥秘:

小技巧一览

   15.3.1SoftICE检测方法

   15.3.2OllyDbg检测方法

   15.3.3调试器漏洞

   15.3.4防止调试器附加

   15.3.5父进程检测

   15.3.6时间差

   15.3.7通过TrapFlag检测

   15.3.8双进程保护

 第16章外壳编写基础(Hying编写)35

  16.1外壳的结构

  16.2加壳主程序

   16.2.1判断文件是否为PE格式

   16.2.2文件基本数据读入

   16.2.3附加数据读取

   16.2.4输入表处理

   16.2.5重定位表处理

   16.2.6文件的压缩

   16.2.7资源数据处理

   16.2.8区块的融合

  16.3外壳部分编写

   16.3.1外壳的加载过程

   16.3.2自建输入表

   16.3.4外壳引导段

   16.3.5外壳第二段

16.4将外壳部分添加至原程序

 第17章虚拟机的设计

  17.1原理

   17.1.1反汇编引擎

   17.1.2指令分类

17.2启动框架和调用约定

   17.2.1调度器VStartVM

   17.2.2虚拟环境:

VMContext

   17.2.3平衡堆栈:

VBegin和VCheckEsp

  17.3HANDLER的设计

   17.3.1辅助Handler

   17.3.2普通Handler和指令拆解

   17.3.3标志位问题

   17.3.4相同作用的指令

   17.3.5转移指令

   17.3.6转移跳转指令的另一种实现

   17.3.7CALL指令

   17.3.8retn指令

   17.3.9不可模拟指令

  17.4托管代码的异常处理

   17.4.1VC++的异常处理

   17.4.2Delphi的异常处理

  17.5小结

第8篇PEDIY篇

 第18章补丁技术

  18.1文件补丁

  18.2内存补丁

   18.2.1跨进程内存存取机制

   18.2.2DebugAPI机制

   18.2.3利用调试寄存器机制

   18.2.4DLL劫持技术

  18.3SMC补丁技术

   18.3.1单层SMC补丁技术

   18.3.2多层SMC补丁技术

  18.4补丁工具

 第19章代码的二次开发

  19.1数据对齐

  19.2增加空间

   19.2.1区块间隙

   19.2.2手工构造区块

   19.2.3工具辅助构造区块

  19.3获得函数的调用

   19.3.1增加输入函数

   19.3.2显式链接调用DLL

  19.4代码的重定位

   19.4.1修复重定位表

   19.4.2代码的自定位技术

  19.5增加输出函数

  19.6消息循环

   19.6.1WndProc函数

   19.6.2寻找消息循环

   19.6.3WndProc汇编形式

  19.7修改WNDPROC扩充功能

   19.7.1扩充WndProc

   19.7.2扩充Exit菜单功能

   19.7.3扩充Open菜单功能

  19.8增加接口

   19.8.1用DLL增加功能

   19.8.2扩展消息循环

附录

 附录A浮点指令

 附录B在VisualC++中使用内联汇编

术语表

参考文献

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1