加密与解密(第4版)
全新正版 极速发货
¥
113.45
5.7折
¥
198
全新
库存56件
作者段钢
出版社电子工业出版社
ISBN9787121336928
出版时间2017-02
装帧平装
开本其他
定价198元
货号1201769486
上书时间2024-07-11
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
段钢,国内信息安全领域具有广泛影响力的安所有渠道站看雪学院的创始人和运营管理者,长期致力于信息安全技术研究,对当前安全技术的发展有深入思考。参与和组织专业人士推出的十多部技术专著和相关书籍,有不少入选为大学信息技术专业的教辅材料,如《加密与解密》等,影响广泛。在盛大和众人网络的多年工作经历,使得对安全防护有深刻的认识和理解。在2016年创建上海看雪科技有限公司,项目以看雪学院为基础,构建一个提供B2B、B2C信息安全服务的综合平台。
目录
基础篇
第1章 基础知识2
1.1 什么是加密与解密2
1.1.1 软件的加密与解密2
1.1.2 软件逆向工程2
1.1.3 逆向分析技术3
1.2 文本字符4
1.2.1 ASCII与Unicode字符集4
1.2.2 字节存储顺序6
1.3 Windows操作系统6
1.3.1 Win32 API函数6
1.3.2 WOW649
1.3.3 Windows消息机制9
1.3.4 虚拟内存11
调试篇
第2章 动态分析技术14
2.1 OllyDbg调试器14
2.1.1 OllyDbg的界面14
2.1.2 OllyDbg的配置15
2.1.3 基本操作16
2.1.4 常用断点27
2.1.5 插件35
2.1.6 Run trace36
2.1.7 Hit trace37
2.1.8 调试符号37
2.1.9 加载程序39
2.1.10 OllyDbg的常见问题40
2.2 x64dbg调试器42
2.3 MDebug调试器44
2.3.1 MDebug的界面44
2.3.2 表达式45
2.3.3 调试45
2.3.4 断点46
2.3.5 MDebug的其他功能47
2.4 WinDbg调试器47
2.4.1 WinDbg的安装与配置47
2.4.2 调试过程51
2.4.3 断点命令51
2.4.4 栈窗口53
2.4.5 内存命令55
2.4.6 脚本56
2.4.7 调试功能扩展58
2.4.8 小结59
第3章 静态分析技术60
3.1 文件类型分析60
3.2 反汇编引擎61
3.2.1 OllyDbg的ODDisasm61
3.2.2 BeaEngine61
3.2.3 Udis8661
3.2.4 Capstone62
3.2.5 AsmJit63
3.2.6 Keystone64
3.2.7 小结64
3.3 静态反汇编65
3.3.1 IDA Pro简介65
3.3.2 IDA的配置66
3.3.3 IDA主窗口68
3.3.4 交叉参考69
3.3.5 参考重命名70
3.3.6 标签的用法71
3.3.7 格式化指令操作数71
3.3.8 函数的操作72
3.3.9 代码和数据转换72
3.3.10 字符串73
3.3.11 数组74
3.3.12 结构体75
3.3.13 枚举类型79
3.3.14 变量80
3.3.15 FLIRT81
3.3.16 IDC脚本82
3.3.17 插件86
3.3.18 IDA调试器87
3.3.19 远程调试90
3.3.20 其他功能93
3.3.21 小结94
3.4 十六进制工具94
3.5 静态分析技术应用实例97
3.5.1 解密初步97
3.5.2 逆向工程初步99
解密篇
第4章 逆向分析技术102
4.1 32位软件逆向技术102
4.1.1 启动函数102
4.1.2 函数103
4.1.3 数据结构111
4.1.4 虚函数115
4.1.5 控制语句117
4.1.6 循环语句124
4.1.7 数学运算符125
4.1.8 文本字符串128
4.1.9 指令修改技巧130
4.2 64位软件逆向技术131
4.2.1 寄存器131
4.2.2 函数132
4.2.3 数据结构142
4.2.4 控制语句145
4.2.5 循环语句154
4.2.6 数学运算符158
4.2.7 虚函数169
4.2.8 小结193
第5章 演示版保护技术194
5.1 序列号保护方式194
5.1.1 序列号保护机制194
5.1.2 如何攻击序列号保护机制195
5.1.3 字符串比较形式197
5.1.4 制作注册机198
5.2 警告窗口203
5.3 时间205
5.3.1 计时器205
5.3.2 时间205
5.3.3 拆解时间保护206
5.4 菜单功能207
5.4.1 相关函数207
5.4.2 拆解菜单保护208
5.5 KeyFile保护208
5.5.1 相关API函数208
5.5.2 拆解KeyFile保护209
5.6 网络验证213
5.6.1 相关函数214
5.6.2 破解网络验证的一般思路214
5.7 光盘检测219
5.7.1 相关函数219
5.7.2 拆解光盘保护220
5.8 只运行1个实例221
5.8.1 实现方法221
5.8.2 实例222
5.9 常用断点设置技巧222
第6章 加密算法223
6.1 单向散列算法223
6.1.1 MD5算法223
6.1.2 SHA算法227
6.1.3 SM3密码杂凑算法231
6.1.4 小结231
6.2 对称加密算法231
6.2.1 RC4流密码231
6.2.2 TEA算法233
6.2.3 IDEA算法236
6.2.4 BlowFish算法243
6.2.5 AES算法246
6.2.6 SM4分组密码算法259
6.2.7 小结259
6.3 公开密钥加密算法259
6.3.1 RSA算法260
6.3.2 ElGamal公钥算法264
6.3.3 DSA数字签名算法270
6.3.4 椭圆曲线密码编码学272
6.3.5 SM2算法279
6.4 其他算法279
6.4.1 CRC32算法279
6.4.2 Base64编码280
6.5 常见的加密库接口及其识别281
6.5.1 Miracl大数运算库281
6.5.2 FGInt283
6.5.3 其他加密算法库介绍284
6.6 加密算法在软件保护中的应用285
系统篇
第7章 Windows内核基础290
7.1 内核理论基础290
7.1.1 权限级别290
7.1.2 内存空间布局291
7.1.3 Windows与内核启动过程292
7.1.4 Windows R3与R0通信294
7.1.5 内核函数296
7.1.6 内核驱动模块297
7.2 内核重要数据结构298
7.2.1 内核对象298
7.2.2 SSDT300
7.2.3 TEB302
7.2.4 PEB304
7.3 内核调试基础306
7.3.1 使用WinDbg搭建双机调试环境306
7.3.2 加载内核驱动并设置符号表308
7.3.3 SSDT与Shadow SSDT的查看311
第8章 Windows下的异常处理313
8.1 异常处理的基本概念313
8.1.1 异常列表313
8.1.2 异常处理的基本过程314
8.2 SEH的概念及基本知识319
8.2.1 SEH的相关数据结构319
8.2.2 SEH处理程序的安装和卸载320
8.2.3 SEH实例跟踪321
8.3 SEH异常处理程序原理及设计325
8.3.1 异常分发的详细过程325
8.3.2 线程异常处理330
8.3.3 异常处理的栈展开336
8.3.4 MSC编译器对线程异常处理的增强342
8.3.5 顶层异常处理349
8.3.6 异常处理程序的安全性357
8.4 向量化异常处理361
8.4.1 向量化异常处理的使用361
8.4.2 VEH与SEH的异同362
8.4.3 向量化异常处理的新内容363
8.5 x64平台上的异常处理363
8.5.1 原生x64程序的异常分发364
8.5.2 WOW64下的异常分发366
8.6 异常处理程序设计中的注意事项367
8.7 异常处理的实际应用368
8.7.1 使用SEH对用户输入进行验证368
8.7.2 SEH在加密与解密中的应用369
8.7.3 用VEH实现API Hook371
8.8 本章小结371
第9章 Win32调试API372
9.1 调试相关函数简要说明372
9.2 调试事件375
9.3 创建并跟踪进程377
9.4 调试循环体378
9.5 处理调试事件379
9.6 线程环境380
9.7 将代码注入进程382
第10章 VT技术384
10.1 硬件虚拟化的基本概念384
10.1.1 概述384
10.1.2 相关结构和汇编指令385
10.1.3 EPT机制388
10.2 VT技术的应用389
10.2.1 编译运行ShadowWalker389
10.2.2 分析Hypervisor390
10.2.3 检测VT支持情况392
10.2.4 VMCS的配置393
10.2.5 EPT的配置396
10.2.6 开启VT399
10.2.7 内存隐藏的实现399
10.3 VT调试方法401
第11章 PE文件格式404
11.1 PE的基本概念405
11.1.1 基地址405
11.1.2 虚拟地址406
11.1.3 相对虚拟地址406
11.1.4 文件偏移地址407
11.2 MS-DOS头部407
11.3 PE文件头408
11.3.1 Signature字段408
11.3.2 IMAGE_FILE_HEADER结构409
11.3.3 IMAGE_OPTIONAL_HEADER结构410
11.4 区块415
11.4.1 区块表415
11.4.2 常见区块与区块合并417
11.4.3 区块的对齐值419
11.4.4 文件偏移与虚拟地址的转换419
11.5 输入表421
11.5.1 输入函数的调用421
11.5.2 输入表的结构422
11.5.3 输入地址表424
11.5.4 输入表实例分析424
11.6 绑定输入428
11.7 输出表429
11.7.1 输出表的结构430
11.7.2 输出表实例分析431
11.8 基址重定位432
11.8.1 基址重定位的概念432
11.8.2 基址重定位表的结构433
11.8.3 基址重定位表实例分析434
11.9 资源435
11.9.1 资源结构435
11.9.2 资源结构实例分析438
11.9.3 资源编辑工具440
11.10 TLS初始化440
11.11 调试目录441
11.12 延迟载入数据441
11.13 程序异常数据442
11.14 .NET头部442
11.15 编写PE分析工具443
11.15.1 检查文件格式443
11.15.2 读取FileHeader和OptionalHeader的内容444
11.15.3 得到数据目录表信息445
11.15.4 得到区块表信息446
11.15.5 得到输出表信息447
11.15.6 得到输入表信息448
第12章 注入技术450
12.1 DLL注入方法450
12.1.1 通过干预输入表处理过程加载目标DLL450
12.1.2 改变程序运行流程使其主动加载目标DLL466
12.1.3 利用系统机制加载DLL484
12.2 DLL注入的应用491
12.3 DLL注入的防范491
12.3.1 驱动层防范491
12.3.2 应用层防范493
第13章 Hook技术497
13.1 Hook概述497
13.1.1 IAT Hook篡改MessageBox消息497
13.1.2 Inline Hook篡改指定MessageBox消息499
13.2 Hook的分类500
13.2.1 Address Hook501
13.2.2 Inline Hook511
13.2.3 基于异常处理的Hook513
13.2.4 不是Hook的Hook514
13.3 Hook位置的挑选515
13.4 Hook的典型过程519
13.4.1 Address Hook的实施过程519
13.4.2 Inline Hook的实施过程526
13.4.3 基于异常处理的Hook实施过程529
13.4.4 二次Hook的注意事项532
13.4.5 通用Hook引擎的实现533
13.5 Detour函数的典型用法533
13.6 Hook中的注意事项536
13.7 Hook在x64平台上的新问题541
13.8 Hook技术的应用543
13.9 Hook的检测、恢复与对抗544
13.9.1 Hook的检测与恢复544
13.9.2 Hook的对抗545
13.10 本章小结546
漏洞篇
第14章 漏洞分析技术548
14.1 软件漏洞原理548
14.1.1 缓冲区溢出漏洞548
14.1.2 整型溢出漏洞553
14.1.3 UAF漏洞555
14.2 Shellcode555
14.2.1 Shellcode的结构556
14.2.2 Shellcode通用技术559
14.2.3 实战Shellcode编写560
14.3 漏洞利用566
14.3.1 漏洞利用基本技术567
14.3.2 漏洞利用高级技术570
14.4 漏洞样本572
14.5 样本分析573
14.5.1 准备工作573
14.5.2 静态分析574
14.5.3 动态调试576
14.5.4 追根溯源581
14.5.5 小结585
脱壳篇
第15章 专用加密软件588
15.1 认识壳588
15.1.1 壳的概念588
15.1.2 压缩引擎589
15.2 压缩壳589
15.2.1 UPX589
15.2.2 ASPack590
15.3 加密壳590
15.3.1 ASProtect590
15.3.2 Armadillo590
15.3.3 EXECryptor591
15.3.4 Themida591
15.4 虚拟机保护软件592
15.4.1 虚拟机介绍592
15.4.2 VMProtect简介592
第16章 脱壳技术594
16.1 基础知识594
16.1.1 壳的加载过程594
16.1.2 脱壳机595
16.1.3 手动脱壳596
16.2 寻找OEP596
16.2.1 根据跨段指令寻找OEP596
16.2.2 用内存访问断点寻找OEP600
16.2.3 根据栈平衡原理寻找OEP601
16.2.4 根据编译语言特点寻找OEP602
16.3 抓取内存映像603
16.3.1 Dump原理603
16.3.2 反Dump技术604
16.4 重建输入表606
16.4.1 输入表重建的原理606
16.4.2 确定IAT的地址和大小607
16.4.3 根据IAT重建输入表608
16.4.4 用Import REC重建输入表611
16.4.5 输入表加密概括614
16.5 DLL文件脱壳615
16.5.1 寻找OEP615
16.5.2 Dump映像文件617
16.5.3 重建DLL的输入表618
16.5.4 构造重定位表619
16.6 附加数据621
16.7 PE文件的优化623
16.8 压缩壳626
16.8.1 UPX外壳626
16.8.2 ASPack外壳629
16.9 加密壳633
16.10 静态脱壳637
16.10.1 外壳Loader分析637
16.10.2 编写静态脱壳器641
保护篇
第17章 软件保护技术644
17.1 防范算法求逆644
17.1.1 基本概念644
17.1.2 堡垒战术645
17.1.3 游击战术646
17.2 抵御静态分析647
17.2.1 花指令647
17.2.2 SMC技术实现649
17.2.3 信息隐藏653
17.2.4 简单的多态变形技术654
17.3 文件完整性检验655
17.3.1 磁盘文件校验的实现655
17.3.2 校验和657
17.3.3 内存映像校验657
17.4 代码与数据结合659
17.4.1 准备工作660
17.4.2 加密算法的选用661
17.4.3 手动加密代码661
17.4.4 使 .text区块可写662
17.5 关于软件保护的若干忠告663
第18章 反跟踪技术665
18.1 由BeingDebugged引发的蝴蝶效应665
18.1.1 BeingDebugged665
18.1.2 NtGlobalFlag669
18.1.3 Heap Magic671
18.1.4 从源头消灭BeingDebugged676
18.2 回归Native:用户态的梦魇676
18.2.1 CheckRemoteDebuggerPresent677
18.2.2 ProcessDebugPort677
18.2.3 ThreadHideFromDebugger680
18.2.4 DebugObject682
18.2.5 SystemKernelDebuggerInformation686
18.2.6 Native API688
18.2.7 Hook和AntiHook693
18.3 真正的奥秘:小技巧一览696
18.3.1 SoftICE检测方法696
18.3.2 OllyDbg检测方法698
18.3.3 调试器漏洞700
18.3.4 防止调试器附加701
18.3.5 父进程检测703
18.3.6 时间差703
18.3.7 通过Trap Flag检测704
18.3.8 双进程保护704
第19章 外壳编写基础705
19.1 外壳的结构705
19.2 加壳主程序706
19.2.1 判断文件是否为PE格式706
19.2.2 文件基本数据读入706
19.2.3 附加数据的读取708
19.2.4 输入表的处理708
19.2.5 重定位表的处理711
19.2.6 文件的压缩713
19.2.7 资源数据的处理716
19.2.8 区块的融合720
19.3 用汇编写外壳部分721
19.3.1 外壳的加载过程721
19.3.2 自建输入表722
19.3.3 外壳引导段723
19.3.4 外壳第2部分726
19.3.5 将外壳部分添加至原程序731
19.4 用C++编写外壳部分734
第20章 虚拟机的设计739
20.1 虚拟机保护技术原理739
20.1.1 反汇编引擎739
20.1.2 指令分类739
20.2 启动框架和调用约定740
20.2.1 调度器740
20.2.2 虚拟环境741
20.2.3 平衡栈vBegin和vCheckESP742
20.3 Handler的设计743
20.3.1 辅助Handler743
20.3.2 普通Handler和指令拆解744
20.3.3 标志位问题745
20.3.4 相同作用的指令745
20.3.5 转移指令746
20.3.6 转移跳转指令的另一种实现747
20.3.7 call指令748
20.3.8 retn指令748
20.3.9 不可模拟指令749
20.4 托管代码的异常处理749
20.4.1 VC++的异常处理749
20.4.2 Delphi的异常处理754
20.5 本章小结757
第21章 VMProtect逆向和还原浅析758
21.1 VMProtect逆向分析758
21.1.1 VMProtect虚拟执行引擎的全景图758
21.1.2 VMProtect虚拟引擎的基本架构763
21.1.3 指令分类763
21.2 VMProtect的还原765
21.2.1 虚拟执行系统766
21.2.2 生成完整的字节码流程图767
21.2.3 给Handler命名并添加语义动作774
21.2.4 将字节码的低级描述转换为中级描述775
21.2.5 清除无用的字节码776
21.2.6 用真值表化简逻辑指令776
21.2.7 从特征中建立部分寄存器映射信息779
21.2.8 其他无法确定的寄存器的图着色算法785
21.2.9 使用DAG匹配生成指令788
21.2.10 其他问题791
软件重构篇
第22章 补丁技术794
22.1 文件补丁794
22.2 内存补丁795
22.2.1 跨进程内存存取机制795
22.2.2 Debug API机制797
22.2.3 利用调试寄存器机制800
22.2.4 利用DLL注入技术803
22.2.5 利用Hook技术807
22.2.6 利用VT技术810
22.3 SMC补丁技术
— 没有更多了 —
以下为对购买帮助不大的评价