书籍详情

黑客调试技术揭秘

黑客调试技术揭秘

作者:(美)卡斯帕克尔

出版社:电子工业出版社

出版时间:2006-07-01

ISBN:9787121028021

定价:¥59.00

购买这本书可以去
内容简介
  本书是帮助应用程序员和系统程序员理解调试过程的指南,揭示了各种调试器的实用使用技巧,说明了如何操作调试器以及如何克服障碍和修复调试器,介绍了黑客利用调试器和反汇编器来寻找程序弱点和实施攻击的方法。通过本书,程序员将学会如何弄清楚计算机系统内部的结构、如何重建没有提供源程序的程序的运行算法、如何修改程序以及如何调试驱动程序。本书还详细介绍了在Windows和UNIX操作系统中调试应用程序和驱动程序的方法。对于各种调试技术,书中都给出了带有详尽解释的源代码。如果你是具有C/C++或者Pascal/Delphi语言实际编程经验的程序员,那么本书就是使你的技术升华至一个新的台阶的宝典。
作者简介
  Kris Kaspersky是一位技术作家。他是《黑客反汇编技术揭秘》、《代码优化:有效使用内存》和《CD破解揭秘:防止未经许可的CD拷贝的保护技术》等书籍,以及大量涉及破解、反汇编和代码优化文章的作者。他解决了许多与安全和系统编程有关的问题,包括编译器的开发、优化技术、安全机制研究、实时操作系统内核的创建、软件保护以及反病毒程序的创建,等等。
目录
第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  微软Virtual PC    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  关于IDA C语言    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  Windows NT/2000装载程序中的一个缺陷    290
12.4.6  Windows NT/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  Doctor Watson    402
20.1.2  微软Visual Studio Debug    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]PointerTo SymbolTable/NumberOf Symbols    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/SizeOfStack Commit, SizeOfHeapReserve/SizeOfHeapCommit    458
23.6.21  [image_opional_header]  NumberOfRvaAndSizes    458
23.6.22  DATA DIRECTORY    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
猜您喜欢

读书导航