加密与解密(第4版)
本店经营正版图书 两天左右发货 如果有着急发货的请不要下单
¥
91.08
4.6折
¥
198
全新
库存4件
作者段钢 著
出版社电子工业出版社
出版时间2018-09
版次1
装帧平装
上书时间2024-12-18
商品详情
- 品相描述:全新
图书标准信息
-
作者
段钢 著
-
出版社
电子工业出版社
-
出版时间
2018-09
-
版次
1
-
ISBN
9787121336928
-
定价
198.00元
-
装帧
平装
-
开本
16开
-
纸张
胶版纸
-
页数
950页
-
字数
100千字
- 【内容简介】
-
《加密与解密(第4版)》以加密与解密为切入点,讲述了软件安全领域的基础知识和技能,如调试技能、逆向分析、加密保护、外壳开发、虚拟机设计等。这些知识彼此联系,读者在掌握这些内容之后,很容易就能在漏洞分析、安全编程、病毒分析、软件保护等领域进行扩展。从就业的角度来说,掌握加密与解密的相关技术,可以提高自身的竞争能力;从个人成长的角度来说,研究软件安全技术有助于掌握一些系统底层知识,是提升职业技能的重要途径。作为一名合格的程序员,除了掌握需求分析、设计模式等外,如果能掌握一些系统底层知识、熟悉整个系统的底层结构,在工作中必将获益良多。
《加密与解密(第4版)》适合安全研究人员、软件调试人员、程序开发人员阅读,也可以作为高校信息安全相关专业的辅助教材。
- 【作者简介】
-
段钢,国内信息安全领域具有广泛影响力的安全网站看雪学院的创始人和运营管理者,长期致力于信息安全技术研究,对当前安全技术的发展有深入思考。参与和组织专业人士推出的十多部技术专著和相关书籍,有不少入选为大学信息技术专业的教辅材料,如《加密与解密》等,影响广泛。在盛大和众人网络的多年工作经历,使得对安全防护有深刻的认识和理解。在2016年创建上海看雪科技有限公司,项目以看雪学院为基础,构建一个提供B2B、B2C信息安全服务的综合平台。
- 【目录】
-
基础篇
章 基础知识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 catone62
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
0章 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
1章 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 .头部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
2章 注入技术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
3章 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
漏洞篇
4章 漏洞分析技术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
脱壳篇
5章 专用加密软件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
6章 脱壳技术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 dump603
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重建输入表
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
保护篇
7章 软件保护技术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
8章 反跟踪技术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
9章 外壳编写基础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补丁技术813
22.3.1 单层smc补丁技术813
22.3.2 多层smc补丁技术814
22.4 补丁工具816
第23章 代码的二次开发818
23.1 数据对齐818
23.2 增加空间818
23.2.1 区块间隙818
23.2.2 手动构造区块819
23.2.3 工具辅助构造区块820
23.3 获得函数的调用信息820
23.3.1 增加输入函数820
23.3.2 显式调用dll821
23.4 代码的重定位822
23.4.1 修复重定位表822
23.4.2 代码的自定位技术824
23.5 增加输出函数
点击展开
点击收起
— 没有更多了 —
以下为对购买帮助不大的评价