黑客调试技术揭秘

黑客调试技术揭秘
5.6
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
出版社: 电子工业出版社
2006-07
版次: 1
ISBN: 9787121028021
定价: 59.00
装帧: 平装
开本: 16开
纸张: 其他
页数: 516页
  •   《黑客调试技术揭秘》是帮助应用程序员和系统程序员理解调试过程的指南,揭示了各种调试器的实用使用技巧,说明了如何操作调试器以及如何克服障碍和修复调试器,介绍了黑客利用调试器和反汇编器来寻找程序弱点和实施攻击的方法。通过《黑客调试技术揭秘》,程序员将学会如何弄清楚计算机系统内部的结构、如何重建没有提供源程序的程序的运行算法、如何修改程序以及如何调试驱动程序。   周长发,北京大学理学博士,主要研究领域为图像处理、多媒体技术、软件设计与架构以及计算机安全。现在美国硅谷一家软件公司工作。编写了《精通VisualC++图像处理编程》和《科学与工程数值计算算法集(VisualC++版)》等8本书籍,翻译了《计算机图形学几何工具算法详解》和《黑客调试技术揭密》两本专著。 第1部分 调试工具入门调试工具简介 2
    1.1 了解你的需求 4
    1.2 理解调试器的工作原理 7
    1.3 处理异常 8
    第2章 在UNIX环境中进行调试的特性 10
    2.1 Ptrace是GDB的基础调试工具 12
    2.1.1 Ptrace及其命令 14
    2.1.2 GDB的多线程支持 15
    2.1.3 GDB简明指南 16
    2.1.4 追踪系统调用 20
    2.1.5 相关链接 21
    2.2 UNIX中的黑客工具 22
    2.2.1 调试器 22
    2.2.2 反汇编工具 26
    2.2.3 侦查软件 27
    2.2.4 十六进制编辑器 28
    2.2.5 内存转储程序 29
    2.2.6 自动保护工具 29
    第3章 模拟调试器和仿真器 31
    3.1 最低系统要求 32
    3.2 选择一个仿真器 33
    3.2.1 安全性 33
    3.2.2 可扩展性 34
    3.2.3 是否有源程序 34
    3.2.4 仿真质量 34
    3.2.5 一个内置的调试器 35
    3.3 常见仿真器概述 36
    3.3.1 DOSBox 36
    3.3.2 Bochs 37
    3.3.3 微软VirtualPC 38
    3.3.4 VMware 40
    3.3.5 仿真器特性汇总表 41
    3.4 注解 41
    3.5 仿真器的应用领域 41
    3.5.1 一般用户使用的仿真器 42
    3.5.2 管理员使用的仿真器 43
    3.5.3 软件开发人员使用的仿真器 43
    3.5.4 黑客使用的仿真器 45
    3.5.5 如何在VMware中配置SoftIce 46
    3.56. 用于其他设备的仿真器 46
    3.6 关于处理器仿真 47
    第4章 用BoundsChecker进行应用程序分析 52
    4.1 快速开始 54
    4.2 装载非标准的DLLs 56
    4.3 菜单项 57
    第2部分 调试工具入门
    第5章 保护机制简介 62
    5.1 基于密钥类型的保护机制分类 63
    5.2 创建保护与试图破解 65
    5.3 从EXE到CRK 67
    第6章 熟悉调试器 82
    6.1 方法0:破解原始密码 83
    6.2 方法1:直接在内存中查找输入的密码 94
    6.3 方法2:在密码输入函数中设置断点 102
    6.4 方法3:在消息中设置断点 105
    第7章 IDA崭露头角 108
    7.1 与调试器一起使用反汇编器 134
    7.2 关于IDAC语言 136
    第8章 注册保护机制之道 140
    8.1 如何利用序数来发现函数名 144
    8.2 如何使可执行程序变小 165
    8.3 设陷捕获WM_GETTEXT 166
    第9章 散列及其克服 169
    第10章 常见的用于演示版的保护机制 184
    10.1 限制功能 184
    10.2 限制使用期限 201
    10.3 限制启动次数 205
    10.4 干扰屏幕 207
    10.5 密钥文件 215
    第3部分 反调试技术
    第11章 反调试技术简介 228
    反调试技术概述 229
    第12章 各种各样的反调试技术 232
    12.1 防御实模式调试器的技术 232
    隐含地调用构造函数 245
    12.2 防御保护模式调试器的技术 246
    检测SoftIce 258
    12.3 如何防止追踪 259
    追踪 263
    12.4 如何抵御断点 265
    12.4.1 几种肮脏的黑客手法 271
    12.4.2 从中间调用API 272
    12.4.3 通过“死亡”带调用API 286
    12.4.4 拷贝完整的API函数 289
    12.4.5 WindowsNT/2000装载程序中的一个缺陷 290
    12.4.6 WindowsNT/2000装载程序中的另一个缺陷 291
    12.5 如何利用Windows工具来检测调试 291
    第13章 UNIX特有的反调试技术 293
    13.1 寄生的文件描述符 293
    13.2 命令行参数与环境变量 294
    13.3 进程树 295
    13.4 信号、转储和异常 296
    13.5 检测软件断点 296
    13.6 螳螂捕蝉,黄雀在后 297
    13.7 直接在内存中查找调试器 298
    13.8 测量执行时间 299
    第14章 可自我修改的代码 300
    14.1 可自我修改代码的一个例子 309
    14.2 通过因特网来修改代码的问题 310
    14.3 注解 312
    第15章 使用隐含的自我控制来创建不可破解的保护 313
    15.1 隐含的自我控制技术 314
    15.2 实用的实现 316
    15.3 如何破解 324
    第16章 智力调试 333
    16.1 反汇编 333
    几个小技巧 354
    16.2 汇编 355
    第17章 软件保护 360
    17.1 盒子方案的缺点 361
    17.2 防止非法拷贝和共享序列号的保护方法 361
    17.3 试用版的保护方法 362
    17.4 防止算法重建的保护方法 362
    17.5 防止在磁盘和内存中改写的保护方法 363
    17.6 抵御反汇编器 364
    17.7 抵御调试器 365
    17.8 抵御监视程序 365
    17.9 抵御转储 365
    17.10 如何自我保护 367
    17.11 关于保护机制的几点想法 368
    17.12 防止泄露源程序 369
    17.13 防止分析二进制代码 371
    第18章 如何使你的应用程序更
    第18章 可靠 374
    18.1 溢出错误的原因和后果 374
    18.2 移植到另一种语言 376
    18.3 利用堆来创建数组 376
    18.4 放弃使用结束标志 377
    18.5 结构化异常处理 378
    18.6 传统与可靠 379
    18.7 防止溢出错误 380
    18.8 查找易受攻击的程序 381
    18.9 C语言中不正确的优先级选择 384
    第19章 软件测试 387
    19.1 微观层上的测试 388
    19.2 把错误记录在案 389
    19.3 Beta测试 390
    19.4 诊断信息的输出 391
    19.5 概要 393
    19.6 C/C++语言检验程序 393
    19.7 累计误差的演示 394
    19.8 几点注解 396
    第4部分 应用程序和操作系统的严重错误应用程序和操作系统的严重
    第20章 错误简介 400
    20.1 应用程序、非法操作和其他 401
    20.1.1 DoctorWatson 402
    20.1.2 微软VisualStudioDebug 409
    第21章 战兢苟活还是出死入生 411
    21.1 强制退出函数 411
    21.2 回绕堆栈 414
    21.3 将控制传给消息处理函数 417
    第22章 如何利用内存转储 424
    22.1 在出现严重错误后恢复系统 431
    NT内核的符号名前缀 432
    22.2 装载死机转储 433
    第5部分 PE文件
    第23章 PE文件格式 440
    23.1 简介 440
    23.2 各种实现系统的PE文件结构特征 441
    23.3 PE文件的一般概念和要求 442
    23.4 PE文件结构 444
    23.5 可做的事与不可做的事 447
    23.6 PE文件各主要字段描述 449
    23.6.1 [old-exe]e_magic 449
    23.6.2 [old-exe]e_cparhdr 449
    23.6.3 [old-exe]e_lfanew 449
    23.6.4 [IMAGE_FILE_HEADER]Machine 450
    23.6.5 [IMAGE_FILE_HEADER]NumberOfSections 450
    23.6.6 [image_file_header]PointerToSymbolTable/NumberOfSymbols 451
    23.6.7 [image_file_header]SizeOfOptionalHeader 451
    23.6.8 [image_file_header]Characteristics 451
    23.6.9 [image_opional_header]Magic 453
    23.6.10 [image_opional_header]Size OfCode/SizeOfInitializedData/SizeOfUninitializedData 453
    23.6.11 [image_opional_header] BaseOfCode/BaseOfData 454
    23.6.12 [image_opional_header] AddressOfEntryPoint 454
    23.6.13 [image_opional_header] ImageBase 454
    23.6.14 [image_opional_header]File Alignment/SectionAlignment 455
    23.6.15 [image_opional_header] SizeOfImage 456
    23.6.16 [image_opional_header] SizeOfHeader 456
    23.6.17 [image_opional_header] CheckSum 457
    23.6.18 [image_opional_header] Subsystem 457
    23.6.19 [image_opional_header] DllCharacteristics 458
    23.6.20 [image_opional_header]SizeOf StackReserve/SizeOfStackCommit,SizeOfHeapReserve/SizeOfHeapCommit 458
    23.6.21 [image_opional_header] NumberOfRvaAndSizes 458
    23.6.22 DATADIRECTORY 459
    23.6.23 段表 461
    23.6.24 输出 465
    23.6.25 输入 468
    23.6.26 可重定位元素 475
    第24章 在PE文件中插入和删除代码的技术 479
    24.1 简介 479
    24.2 X-Code和其他的常规表示法 480
    24.3 X-Code的目标和任务 481
    24.4 X-Code的要求 483
    24.5 代码插入 484
    24.5.1 避免多次插入 485
    24.5.2 插入机制的分类 486
    24.5.3 类别A:插入到文件内的可用空闲空间中 487
    24.5.4 类别A:依靠压缩文件的某些部分来插入X-Code 500
    24.5.5 类别A:在文件内创建一个新的NTFS流 502
    24.5.6 类别B:改变文件头的大小 503
    24.5.7 类别B:将段的部分灌入到重叠段 506
    24.5.8 类别B:创建自己的重叠段 508
    24.5.9 类别C:扩展文件的最后一个段 509
    24.5.10 类别C:创建一个新的段 512
    24.5.11 类别C:扩展宿主文件的中间段 513
    24.5.12 类别Z:通过自动装载DLL来插入X-Code 516
    24.6 小结 516
    附盘说明 517
  • 内容简介:
      《黑客调试技术揭秘》是帮助应用程序员和系统程序员理解调试过程的指南,揭示了各种调试器的实用使用技巧,说明了如何操作调试器以及如何克服障碍和修复调试器,介绍了黑客利用调试器和反汇编器来寻找程序弱点和实施攻击的方法。通过《黑客调试技术揭秘》,程序员将学会如何弄清楚计算机系统内部的结构、如何重建没有提供源程序的程序的运行算法、如何修改程序以及如何调试驱动程序。
  • 作者简介:
      周长发,北京大学理学博士,主要研究领域为图像处理、多媒体技术、软件设计与架构以及计算机安全。现在美国硅谷一家软件公司工作。编写了《精通VisualC++图像处理编程》和《科学与工程数值计算算法集(VisualC++版)》等8本书籍,翻译了《计算机图形学几何工具算法详解》和《黑客调试技术揭密》两本专著。
  • 目录:
    第1部分 调试工具入门调试工具简介 2
    1.1 了解你的需求 4
    1.2 理解调试器的工作原理 7
    1.3 处理异常 8
    第2章 在UNIX环境中进行调试的特性 10
    2.1 Ptrace是GDB的基础调试工具 12
    2.1.1 Ptrace及其命令 14
    2.1.2 GDB的多线程支持 15
    2.1.3 GDB简明指南 16
    2.1.4 追踪系统调用 20
    2.1.5 相关链接 21
    2.2 UNIX中的黑客工具 22
    2.2.1 调试器 22
    2.2.2 反汇编工具 26
    2.2.3 侦查软件 27
    2.2.4 十六进制编辑器 28
    2.2.5 内存转储程序 29
    2.2.6 自动保护工具 29
    第3章 模拟调试器和仿真器 31
    3.1 最低系统要求 32
    3.2 选择一个仿真器 33
    3.2.1 安全性 33
    3.2.2 可扩展性 34
    3.2.3 是否有源程序 34
    3.2.4 仿真质量 34
    3.2.5 一个内置的调试器 35
    3.3 常见仿真器概述 36
    3.3.1 DOSBox 36
    3.3.2 Bochs 37
    3.3.3 微软VirtualPC 38
    3.3.4 VMware 40
    3.3.5 仿真器特性汇总表 41
    3.4 注解 41
    3.5 仿真器的应用领域 41
    3.5.1 一般用户使用的仿真器 42
    3.5.2 管理员使用的仿真器 43
    3.5.3 软件开发人员使用的仿真器 43
    3.5.4 黑客使用的仿真器 45
    3.5.5 如何在VMware中配置SoftIce 46
    3.56. 用于其他设备的仿真器 46
    3.6 关于处理器仿真 47
    第4章 用BoundsChecker进行应用程序分析 52
    4.1 快速开始 54
    4.2 装载非标准的DLLs 56
    4.3 菜单项 57
    第2部分 调试工具入门
    第5章 保护机制简介 62
    5.1 基于密钥类型的保护机制分类 63
    5.2 创建保护与试图破解 65
    5.3 从EXE到CRK 67
    第6章 熟悉调试器 82
    6.1 方法0:破解原始密码 83
    6.2 方法1:直接在内存中查找输入的密码 94
    6.3 方法2:在密码输入函数中设置断点 102
    6.4 方法3:在消息中设置断点 105
    第7章 IDA崭露头角 108
    7.1 与调试器一起使用反汇编器 134
    7.2 关于IDAC语言 136
    第8章 注册保护机制之道 140
    8.1 如何利用序数来发现函数名 144
    8.2 如何使可执行程序变小 165
    8.3 设陷捕获WM_GETTEXT 166
    第9章 散列及其克服 169
    第10章 常见的用于演示版的保护机制 184
    10.1 限制功能 184
    10.2 限制使用期限 201
    10.3 限制启动次数 205
    10.4 干扰屏幕 207
    10.5 密钥文件 215
    第3部分 反调试技术
    第11章 反调试技术简介 228
    反调试技术概述 229
    第12章 各种各样的反调试技术 232
    12.1 防御实模式调试器的技术 232
    隐含地调用构造函数 245
    12.2 防御保护模式调试器的技术 246
    检测SoftIce 258
    12.3 如何防止追踪 259
    追踪 263
    12.4 如何抵御断点 265
    12.4.1 几种肮脏的黑客手法 271
    12.4.2 从中间调用API 272
    12.4.3 通过“死亡”带调用API 286
    12.4.4 拷贝完整的API函数 289
    12.4.5 WindowsNT/2000装载程序中的一个缺陷 290
    12.4.6 WindowsNT/2000装载程序中的另一个缺陷 291
    12.5 如何利用Windows工具来检测调试 291
    第13章 UNIX特有的反调试技术 293
    13.1 寄生的文件描述符 293
    13.2 命令行参数与环境变量 294
    13.3 进程树 295
    13.4 信号、转储和异常 296
    13.5 检测软件断点 296
    13.6 螳螂捕蝉,黄雀在后 297
    13.7 直接在内存中查找调试器 298
    13.8 测量执行时间 299
    第14章 可自我修改的代码 300
    14.1 可自我修改代码的一个例子 309
    14.2 通过因特网来修改代码的问题 310
    14.3 注解 312
    第15章 使用隐含的自我控制来创建不可破解的保护 313
    15.1 隐含的自我控制技术 314
    15.2 实用的实现 316
    15.3 如何破解 324
    第16章 智力调试 333
    16.1 反汇编 333
    几个小技巧 354
    16.2 汇编 355
    第17章 软件保护 360
    17.1 盒子方案的缺点 361
    17.2 防止非法拷贝和共享序列号的保护方法 361
    17.3 试用版的保护方法 362
    17.4 防止算法重建的保护方法 362
    17.5 防止在磁盘和内存中改写的保护方法 363
    17.6 抵御反汇编器 364
    17.7 抵御调试器 365
    17.8 抵御监视程序 365
    17.9 抵御转储 365
    17.10 如何自我保护 367
    17.11 关于保护机制的几点想法 368
    17.12 防止泄露源程序 369
    17.13 防止分析二进制代码 371
    第18章 如何使你的应用程序更
    第18章 可靠 374
    18.1 溢出错误的原因和后果 374
    18.2 移植到另一种语言 376
    18.3 利用堆来创建数组 376
    18.4 放弃使用结束标志 377
    18.5 结构化异常处理 378
    18.6 传统与可靠 379
    18.7 防止溢出错误 380
    18.8 查找易受攻击的程序 381
    18.9 C语言中不正确的优先级选择 384
    第19章 软件测试 387
    19.1 微观层上的测试 388
    19.2 把错误记录在案 389
    19.3 Beta测试 390
    19.4 诊断信息的输出 391
    19.5 概要 393
    19.6 C/C++语言检验程序 393
    19.7 累计误差的演示 394
    19.8 几点注解 396
    第4部分 应用程序和操作系统的严重错误应用程序和操作系统的严重
    第20章 错误简介 400
    20.1 应用程序、非法操作和其他 401
    20.1.1 DoctorWatson 402
    20.1.2 微软VisualStudioDebug 409
    第21章 战兢苟活还是出死入生 411
    21.1 强制退出函数 411
    21.2 回绕堆栈 414
    21.3 将控制传给消息处理函数 417
    第22章 如何利用内存转储 424
    22.1 在出现严重错误后恢复系统 431
    NT内核的符号名前缀 432
    22.2 装载死机转储 433
    第5部分 PE文件
    第23章 PE文件格式 440
    23.1 简介 440
    23.2 各种实现系统的PE文件结构特征 441
    23.3 PE文件的一般概念和要求 442
    23.4 PE文件结构 444
    23.5 可做的事与不可做的事 447
    23.6 PE文件各主要字段描述 449
    23.6.1 [old-exe]e_magic 449
    23.6.2 [old-exe]e_cparhdr 449
    23.6.3 [old-exe]e_lfanew 449
    23.6.4 [IMAGE_FILE_HEADER]Machine 450
    23.6.5 [IMAGE_FILE_HEADER]NumberOfSections 450
    23.6.6 [image_file_header]PointerToSymbolTable/NumberOfSymbols 451
    23.6.7 [image_file_header]SizeOfOptionalHeader 451
    23.6.8 [image_file_header]Characteristics 451
    23.6.9 [image_opional_header]Magic 453
    23.6.10 [image_opional_header]Size OfCode/SizeOfInitializedData/SizeOfUninitializedData 453
    23.6.11 [image_opional_header] BaseOfCode/BaseOfData 454
    23.6.12 [image_opional_header] AddressOfEntryPoint 454
    23.6.13 [image_opional_header] ImageBase 454
    23.6.14 [image_opional_header]File Alignment/SectionAlignment 455
    23.6.15 [image_opional_header] SizeOfImage 456
    23.6.16 [image_opional_header] SizeOfHeader 456
    23.6.17 [image_opional_header] CheckSum 457
    23.6.18 [image_opional_header] Subsystem 457
    23.6.19 [image_opional_header] DllCharacteristics 458
    23.6.20 [image_opional_header]SizeOf StackReserve/SizeOfStackCommit,SizeOfHeapReserve/SizeOfHeapCommit 458
    23.6.21 [image_opional_header] NumberOfRvaAndSizes 458
    23.6.22 DATADIRECTORY 459
    23.6.23 段表 461
    23.6.24 输出 465
    23.6.25 输入 468
    23.6.26 可重定位元素 475
    第24章 在PE文件中插入和删除代码的技术 479
    24.1 简介 479
    24.2 X-Code和其他的常规表示法 480
    24.3 X-Code的目标和任务 481
    24.4 X-Code的要求 483
    24.5 代码插入 484
    24.5.1 避免多次插入 485
    24.5.2 插入机制的分类 486
    24.5.3 类别A:插入到文件内的可用空闲空间中 487
    24.5.4 类别A:依靠压缩文件的某些部分来插入X-Code 500
    24.5.5 类别A:在文件内创建一个新的NTFS流 502
    24.5.6 类别B:改变文件头的大小 503
    24.5.7 类别B:将段的部分灌入到重叠段 506
    24.5.8 类别B:创建自己的重叠段 508
    24.5.9 类别C:扩展文件的最后一个段 509
    24.5.10 类别C:创建一个新的段 512
    24.5.11 类别C:扩展宿主文件的中间段 513
    24.5.12 类别Z:通过自动装载DLL来插入X-Code 516
    24.6 小结 516
    附盘说明 517
查看详情
好书推荐 / 更多
黑客调试技术揭秘
德里纳河上的桥(新丝路文库)
高韧 译
黑客调试技术揭秘
坏血:“女版乔布斯”如何利用欲望和贪婪打造出硅谷商业神话
[美]约翰·卡雷鲁 著
黑客调试技术揭秘
网内人
陈浩基 著
黑客调试技术揭秘
1945:秘密营救
[英]杰里米·德龙菲尔德 著;高瑞梓 译;[美]李·特林布尔
黑客调试技术揭秘
“错误”的行为:行为经济学的形成(理查德·塞勒作品)
[美]理查德·塞勒
黑客调试技术揭秘
失败者的春秋
刘勃 著
黑客调试技术揭秘
黑白的浪漫:维利·罗尼眼中的寻常生活
[法]维利·罗尼 著;王倩 译
黑客调试技术揭秘
翰墨荟萃:细读美国藏中国五代宋元书画珍品
上海博物馆 编
黑客调试技术揭秘
萧朝贵与太平天国早期史
刘晨 著
黑客调试技术揭秘
原宿牛仔:日本街头时尚五十年
[美]W.大卫·马克斯(W.David Marx) 著;吴纬疆 译
黑客调试技术揭秘
甲骨文丛书·大围攻:马耳他1565
厄恩利·布拉德福德(Ernle Bradford) 著;谭琦 译
黑客调试技术揭秘
大唐狄公案·黄金案01(神探狄仁杰)
[荷兰]高罗佩 著;张凌 译