图书介绍
逆向工程 权威指南 上2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- Dennis Yurichev 著
- 出版社: 北京:人民邮电出版社
- ISBN:7115434456
- 出版时间:2017
- 标注页数:484页
- 文件大小:100MB
- 文件页数:503页
- 主题词:
PDF下载
下载说明
逆向工程 权威指南 上PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 指令讲解3
第1章 CPU简介3
1.1 指令集架构3
第2章 最简函数5
2.1 x865
2.2 ARM5
2.3 MIPS5
MIPS指令集与寄存器名称6
第3章 Hello,world!7
3.1 x867
3.1.1 MSVC7
3.1.2 GCC9
3.1.3 GCC:AT&T语体9
3.2 x86-6411
3.2.1 MSVC-x86-6411
3.2.2 GCC-x86-6412
3.3 GCC的其他特性12
3.4 ARM13
3.4.1 Keil 6/2013——未启用优化功能的ARM模式14
3.4.2 Thumb模式下、未开启优化选项的Keil15
3.4.3 ARM模式下、开启优化选项的Xcode15
3.4.4 Thumb-2模式下、开启优化选项的Xcode(LLVM)16
3.4.5 ARM6418
3.5 MIPS19
3.5.1 全局指针Global pointer19
3.5.2 Optimizing GCC19
3.5.3 Non-optimizing GCC21
3.5.4 栈帧23
3.5.5 Optimizing GCC:GDB的分析方法23
3.6 总结24
3.7 练习题24
3.7.1 题目124
3.7.2 题目224
第4章 函数序言和函数尾声25
递归调用25
第5章 栈26
5.1 为什么栈会逆增长26
5.2 栈的用途27
5.2.1 保存函数结束时的返回地址27
5.2.2 参数传递28
5.2.3 存储局部变量29
5.2.4 x86:alloca()函数29
5.2.5(Windows)SEH结构化异常处理31
5.2.6 缓冲区溢出保护31
5.3 典型的栈的内存存储格式31
5.4 栈的噪音31
5.5 练习题34
5.5.1 题目134
5.5.2 题目234
第6章 printf()函数与参数调用36
6.1 x8636
6.1.1 x86:传递3个参数36
6.1.2 x64:传递9个参数41
6.2 ARM44
6.2.1 ARM模式下传递3个参数44
6.2.2 ARM模式下传递8个参数46
6.3 MIPS50
6.3.1 传递3个参数50
6.3.2 传递9个参数52
6.4 总结56
6.5 其他57
第7章 scanf()58
7.1 演示案例58
7.1.1 指针简介58
7.1.2 x8658
7.1.3 MSVC+OllyDbg60
7.1.4 x6462
7.1.5 ARM63
7.1.6 MIPS64
7.2 全局变量65
7.2.1 MSVC:x8666
7.2.2 MSVC:x86+OllyDbg67
7.2.3 GCC:x8668
7.2.4 MSVC:x6468
7.2.5 ARM:Optimizing Keil 6/2013(Thumb模式)69
7.2.6 ARM6470
7.2.7 MIPS70
7.3 scanf()函数的状态监测74
7.3.1 MSVC:x8674
7.3.2 MSVC:x86:IDA75
7.3.3 MSVC:x86+OllyDbg77
7.3.4 MSVC:x86+Hiew78
7.3.5 MSVC:x6479
7.3.6 ARM80
7.3.7 MIPS81
7.3.8 练习题82
7.4 练习题82
题目182
第8章 参数获取83
8.1 x8683
8.1.1 MSVC83
8.1.2 MSVC+OllyDbg84
8.1.3 GCC84
8.2 x6485
8.2.1 MSVC85
8.2.2 GCC86
8.2.3 GCC:uint64_t型参数87
8.3 ARM88
8.3.1 Non-optimizing Keil 6/2013(ARM mode)88
8.3.2 Optimizing Keil 6/2013(ARM mode)89
8.3.3 Optimizing Keil 6/2013(Thumb mode)89
8.3.4 ARM6489
8.4 MIPS91
第9章 返回值93
9.1 void型函数的返回值93
9.2 函数返回值不被调用的情况94
9.3 返回值为结构体型数据94
第10章 指针96
10.1 全局变量96
10.2 局部变量98
10.3 总结100
第11章 GOTO语句101
11.1 无用代码Dead Code102
11.2 练习题102
第12章 条件转移指令103
12.1 数值比较103
12.1.1 x86103
12.1.2 ARM109
12.1.3 MIPS112
12.2 计算绝对值115
12.2.1 Optimizing MSVC115
12.2.2 Optimizing Keil 6/2013:Thumb mode116
12.2.3 Optimizing Keil 6/2013:ARM mode116
12.2.4 Non-optimizng GCC 4.9(ARM64)116
12.2.5 MIPS117
12.2.6 不使用转移指令117
12.3 条件运算符117
12.3.1 x86117
12.3.2 ARM118
12.3.3 ARM64119
12.3.4 MIPS119
12.3.5 使用if/else替代条件运算符120
12.3.6 总结120
12.4 比较最大值和最小值120
12.4.1 32位120
12.4.2 64位123
12.4.3 MIPS125
12.5 总结125
12.5.1 x86125
12.5.2 ARM125
12.5.3 MIPS126
12.5.4 无分支指令(非条件指令)126
12.6 练习题127
第13章 switch()/case/default128
13.1 case陈述式较少的情况128
13.1.1 x86128
13.1.2 ARM:Optimizing Keil 6/2013(ARM mode)133
13.1.3 ARM:Optimizing Keil 6/2013(Thumb mode)133
13.1.4 ARM64:Non-optimizing GCC(Linaro)4.9134
13.1.5 ARM64:Optimizing GCC(Linaro)4.9134
13.1.6 MIPS135
13.1.7 总结136
13.2 case陈述式较多的情况136
13.2.1 x86136
13.2.2 ARM:Optimizing Keil 6/2013(ARM mode)140
13.2.3 ARM:Optimizing Keil 6/2013(Thumb mode)141
13.2.4 MIPS143
13.2.5 总结144
13.3 case从句多对一的情况145
13.3.1 MSVC145
13.3.2 GCC147
13.3.3 ARM64:Optimizing GCC 4.9.1147
13.4 Fall-through149
13.4.1 MSVC x86149
13.4.2 ARM64150
13.5 练习题151
13.5.1 题目1151
第14章 循环152
14.1 举例说明152
14.1.1 x86152
14.1.2 x86:OllyDbg155
14.1.3 x86:跟踪调试工具tracer156
14.1.4 ARM157
14.1.5 MIPS160
14.1.6 其他161
14.2 内存块复制161
14.2.1 编译结果161
14.2.2 编译为ARM模式的程序162
14.2.3 MIPS163
14.2.4 矢量化技术164
14.3 总结164
14.4 练习题165
14.4.1 题目1165
14.4.2 题目2165
14.4.3 题目3166
14.4.4 题目4167
第15章 C语言字符串的函数170
15.1 strlen()170
15.1.1 x86170
15.1.2 ARM174
15.1.3 MIPS177
15.2 练习题178
15.2.1 题目1178
第16章 数学计算指令的替换181
16.1 乘法181
16.1.1 替换为加法运算181
16.1.2 替换为位移运算181
16.1.3 替换为位移、加减法的混合运算182
16.2 除法运算186
16.2.1 替换为位移运算186
16.3 练习题186
16.3.1 题目1186
第17章 FPU188
17.1 IEEE 754188
17.2 x86188
17.3 ARM、MIPD、x86/x64 SIMD188
17.4 C/C++188
17.5 举例说明189
17.5.1 x86189
17.5.2 ARM:Optimizing Xcode 4.6.3(LLVM)(ARM mode)193
17.5.3 ARM:Optimizing Keil 6/2013(Thumb mode)193
17.5.4 ARM64:Optimizing GCC(Linaro)4.9194
17.5.5 ARM64:Non-optimizing GCC(Linaro)4.9195
17.5.6 MIPS195
17.6 利用参数传递浮点型数据196
17.6.1 x86196
17.6.2 ARM+Non-optimizing Xcode 4.6.3(LLVM)(Thumb-2 mode)197
17.6.3 ARM+Non-optimizing Keil 6/2013(ARM mode)198
17.6.4 ARM64+Optimizing GCC(Linaro)4.9198
17.6.5 MIPS199
17.7 比较说明200
17.7.1 x86200
17.7.2 ARM216
17.7.3 ARM64219
17.7.4 MIPS220
17.8 栈、计算器及逆波兰表示法221
17.9 x64221
17.10 练习题221
17.10.1 题目1221
17.10.2 题目2221
第18章 数组223
18.1 简介223
18.1.1 x86223
18.1.2 ARM225
18.1.3 MIPS228
18.2 缓冲区溢出229
18.2.1 读取数组边界以外的内容229
18.2.2 向数组边界之外的地址赋值231
18.3 缓冲区溢出的保护方法234
18.3.1 Optimizing Xcode 4.6.3(LLVM)(Thumb-2 mode)236
18.4 其他238
18.5 字符串指针238
18.5.1 x64239
18.5.2 32位MSVC239
18.5.3 32位ARM240
18.5.4 ARM64241
18.5.5 MIPS242
18.5.6 数组溢出242
18.6 多维数组245
18.6.1 二维数组举例246
18.6.2 以一维数组的方式访问二维数组247
18.6.3 三维数组248
18.6.4 更多案例251
18.7 二维字符串数组的封装格式251
18.7.1 32位ARM253
18.7.2 ARM64254
18.7.3 MIPS254
18.7.4 总结255
18.8 本章小结255
18.9 练习题255
18.9.1 题目1255
18.9.2 题目2258
18.9.3 题目3263
18.9.4 题目4264
18.9.5 题目5265
第19章 位操作270
19.1 特定位270
19.1.1 x86270
19.1.2 ARM272
19.2 设置/清除特定位274
19.2.1 x86274
19.2.2 ARM+Optimizing Keil 6/2013(ARM mode)277
19.2.3 ARM+Optimizing Keil 6/2013(Thumb mode)278
19.2.4 ARM+Optimizing Xcode(LLVM)+ARM mode278
19.2.5 ARM:BIC指令详解278
19.2.6 ARM64:Optimizing GCC(Linaro)4.9278
19.2.7 ARM64:Non-optimizing GCC(Linaro)4.9279
19.2.8 MIPS279
19.3 位移279
19.4 在FPU上设置特定位279
19.4.1 XOR操作详解280
19.4.2 x86280
19.4.3 MIPS282
19.4.4 ARM282
19.5 位校验284
19.5.1 x86286
19.5.2 x64289
19.5.3 ARM+Optimizing Xcode 4.6.3(LLVM)+ARM mode291
19.5.4 ARM+Optimizing Xcode 4.6.3(LLVM)+Thumb-2 mode292
19.5.5 ARM64+Optimizing GCC 4.9292
19.5.6 ARM64+Non-optimizing GCC 4.9292
19.5.7 MIPS293
19.6 本章小结295
19.6.1 检测特定位(编译阶段)295
19.6.2 检测特定位(runtime阶段)295
19.6.3 设置特定位(编译阶段)296
19.6.4 设置特定位(runtime阶段)296
19.6.5 清除特定位(编译阶段)296
19.6.6 清除特定位(runtime阶段)297
19.7 练习题297
19.7.1 题目1297
19.7.2 题目2298
19.7.3 题目3301
19.7.4 题目4301
第20章 线性同余法与伪随机函数304
20.1 x86304
20.2 x64305
20.3 32位ARM306
20.4 MIPS306
MIPS的重新定位307
20.5 本例的线程安全改进版309
第21章 结构体310
21.1 MSVC:systemtime310
21.1.1 OllyDbg311
21.1.2 以数组替代结构体312
21.2 用malloc()分配结构体的空间313
21.3 UNIX:struct tm315
21.3.1 Linux315
21.3.2 ARM317
21.3.3 MIPS319
21.3.4 数组替代法320
21.3.5 替换为32位words322
21.3.6 替换为字节型数组323
21.4 结构体的字段封装325
21.4.1 x86325
21.4.2 ARM329
21.4.3 MIPS330
21.4.4 其他331
21.5 结构体的嵌套331
OllyDbg332
21.6 结构体中的位操作333
21.6.1 CPUID333
21.6.2 用结构体构建浮点数337
21.7 练习题339
21.7.1 题目1339
21.7.2 题目2340
第22章 共用体(union)类型345
22.1 伪随机数生成程序345
22.1.1 x86346
22.1.2 MIPS347
22.1.3 ARM(ARM mode)348
22.2 计算机器精度349
22.2.1 x86350
22.2.2 ARM64350
22.2.3 MIPS351
22.2.4 本章小结351
22.3 快速平方根计算351
第23章 函数指针352
23.1 MSVC353
23.1.1 MSVC+OllyDbg354
23.1.2 MSVC+tracer355
23.1.3 MSVC+tracer(指令分析)356
23.2 GCC357
23.2.1 GCC+GDB(有源代码的情况)358
23.2.2 GCC+GDB(没有源代码的情况)359
第24章 32位系统处理64位数据362
24.1 64位返回值362
24.1.1 x86362
24.1.2 ARM362
24.1.3 MIPS362
24.2 参数传递及加减运算363
24.2.1 x86363
24.2.2 ARM365
24.2.3 MIPS365
24.3 乘法和除法运算366
24.3.1 x86367
24.3.2 ARM368
24.3.3 MIPS369
24.4 右移370
24.4.1 x86370
24.4.2 ARM371
24.4.3 MIPS371
24.5 32位数据转换为64位数据371
24.5.1 x86372
24.5.2 ARM372
24.5.3 MIPS372
第25章 SIMD373
25.1 矢量化373
25.1.1 用于加法计算374
25.1.2 用于内存复制379
25.2 SIMD实现strlen()383
第26章 64位平台387
26.1 x86-64387
26.2 ARM394
26.3 浮点数394
第27章 SIMD与浮点数的并行运算395
27.1 样板程序395
27.1.1 x64395
27.1.2 x86396
27.2 传递浮点型参数399
27.3 浮点数之间的比较400
27.3.1 x64400
27.3.2 x86401
27.4 机器精402
27.5 伪随机数生成程序(续)402
27.6 总结403
第28章 ARM指令详解404
28.1 立即数标识(#)404
28.2 变址寻址404
28.3 常量赋值405
28.3.1 32位ARM405
28.3.2 ARM64405
28.4 重定位406
第29章 MIPS的特点409
29.1 加载常量409
29.2 阅读推荐409
第二部分 硬件基础413
第30章 有符号数的表示方法413
第31章 字节序415
31.1 大端字节序415
31.2 小端字节序415
31.3 举例说明415
31.4 双模二元数据格式416
31.5 转换字节序416
第32章 内存布局417
第33章 CPU418
33.1 分支预测418
33.2 数据相关性418
第34章 哈希函数419
单向函数与不可逆算法419
第三部分 一些高级的例子423
第35章 温度转换423
35.1 整数值423
35.1.1 x86构架下MSVC 2012优化423
35.1.2 x64构架下的MSVC 2012优化425
35.2 浮点数运算425
第36章 斐波拉契数列428
36.1 例子1428
36.2 例子2430
36.3 总结433
第37章 CRC32计算的例子434
第38章 网络地址计算实例437
38.1 计算网络地址函数calc_network_address()438
38.2 函数form_IP()439
38.3 函数print_as_IP()440
38.4 form_netmask()函数和set_bit()函数442
38.5 总结442
第39章 循环:几个迭代444
39.1 三个迭代器444
39.2 两个迭代器445
39.3 Intel C++2011实例446
第40章 达夫装置449
第41章 除以9452
41.1 x86452
41.2 ARM453
41.2.1 ARM模式下,采用Xcode 4.6.3(LLVM)优化453
41.2.2 Thumb-2模式下的Xcode 4.6.3 优化(LLVM)454
41.2.3 非优化的Xcode 4.6.3(LLVM)以及Keil 6/2013454
41.3 MIPS454
41.4 它是如何工作的455
41.4.1 更多的理论456
41.5 计算除数456
41.5.1 变位系数#1456
41.5.2 变位系数#2457
41.6 练习题458
第42章 字符串转换成数字,函数atoi()459
42.1 例1459
42.1.1 64位下的MSVC 2013优化459
42.1.2 64位下的GCC 4.9.1 优化460
42.1.3 ARM模式下Keil 6/2013优化460
42.1.4 Thumb模式下Keil 6/2013优化461
42.1.5 ARM64下的GCC 4.9.1优化462
42.2 例2462
42.2.1 64位下的GCC 4.9.1优化463
42.2.2 ARM模式下的Keil 6/2013优化464
42.3 练习题465
第43章 内联函数466
43.1 字符串和内存操作函数467
43.1.1 字符串比较函数strcmp()467
43.1.2 字符串长度函数strlen()469
43.1.3 字符串复制函数strcpy()469
43.1.4 内存设置函数memset()470
43.1.5 内存复制函数memcpy()471
43.1.6 内存对比函数memcmp()473
43.1.7 IDA脚本474
第44章 C99标准的受限指针475
第45章 打造无分支的abs()函数478
45.1 x64下的GCC 4.9.1优化478
45.2 ARM64下的GCC 4.9优化478
第46章 变长参数函数480
46.1 计算算术平均值480
46.1.1 cdecl调用规范480
46.1.2 基于寄存器的调用规范481
46.2 vprintf()函数例子483
热门推荐
- 1911161.html
- 2863796.html
- 423450.html
- 710834.html
- 1752209.html
- 3150332.html
- 3701901.html
- 1362963.html
- 3779167.html
- 3274139.html
- http://www.ickdjs.cc/book_594087.html
- http://www.ickdjs.cc/book_1863532.html
- http://www.ickdjs.cc/book_2792363.html
- http://www.ickdjs.cc/book_2514639.html
- http://www.ickdjs.cc/book_1725244.html
- http://www.ickdjs.cc/book_1398517.html
- http://www.ickdjs.cc/book_2497246.html
- http://www.ickdjs.cc/book_3863166.html
- http://www.ickdjs.cc/book_116337.html
- http://www.ickdjs.cc/book_2736444.html