本书是作者十余年编程生涯中的技术和经验的总结。内容涵盖了从认识CPU、Windows运行机理、编程语言的运行机理,到代码的规范和风格、分析方法、调试方法和内核优化,内有作者对许多问题的认知过程和透彻的分析,以及优秀和精彩的编程经验。
目录:
第1章 程序点滴 1
1.1 程序≠软件 1
1.1.1 商业软件门槛的形成 2
1.1.2 认清自己的发展 4
1.2 高手是怎样练成的 5
1.2.1 高手成长的六个阶段 5
1.2.2 初级程序员和高级程序员的区别 7
1.2.3 程序员是吃青春饭的吗 9
1.3 正确的入门方法 11
1.3.1 规范的格式是入门的基础 13
1.3.2 调试的重要性 17
1.4 开放性思维 18
1.4.1 动态库的重要性 19
1.4.2 程序设计流程 20
1.4.3 保证程序可预测性 21
第2章 认识CPU 23
2.1 8位微处理器回顾 23
2.2 16位微处理器 24
2.2.1 组成结构 24
2.2.2 8086寄存器组成 25
2.2.3 内存的寻址 26
2.2.4 中断处理 27
2.3 32位微处理器 29
2.3.1 寄存器组成 29
2.3.2 保护模式 32
2.3.3 80386的寻址方式 32
2.4 【实例】:在DOS实模式下读取4GB内存代码分析 36
2.4.1 程序的意义 37
2.4.2 程序代码 37
2.4.3 程序原理 41
2.4.4 程序中的一些解释 42
第3章 Windows运行机理 44
3.1 内核分析 44
3.1.1 运行机理 44
3.1.2 LE文件的格式 53
3.1.3 VxD的设计实现 59
3.1.4 【实例】:CPU降温程序代码分析 65
3.2 消息的运行方式 82
3.2.1 认识消息 82
3.2.2 Windows系统中消息的运作方式 84
3.2.3 消息处理过程实例 87
3.3 GDI的结构和组成 89
3.3.1 GDI的组成 89
3.3.2 GDI和DirectDraw的关系 91
3.4 线程的机制 93
3.4.1 线程的工作方式 93
3.4.2 线程与GDI的冲突:死机的主要原因 94
3.4.3 线程的内存泄漏的主要原因 96
3.4.4 进程管理 98
3.4.5 同步机制 100
3.5 PE结构分析 103
3.5.1 PE头标 103
3.5.2 表节 113
3.5.3 PE文件引入 119
3.5.4 PE文件引出 125
3.5.5 PE文件资源 129
第4章 编程语言的运行机理 133
4.1 汇编的原理 133
4.1.1 指令系统 133
4.1.2 汇编与Win API的接口方法 141
4.1.3 【实例】:自定义程序的入口点 145
4.2 高级语言的原理 151
4.2.1 C/C++的原理 151
4.2.2 解释语言的原理 165
4.2.3 【实例】:用C实现简单的BASIC语言环境 165
4.3 C、C++的学习方式 187
4.3.1 从BASIC到C 187
4.3.2 C、汇编、API的关系 187
4.3.3 接口的建立方法 190
4.4 挂钩技术 201
4.4.1 Windows上C的挂钩 201
4.4.2 C++的挂钩技术 213
第5章 代码的规范和风格 220
5.1 环境的设置 220
5.1.1 集成环境的设置 220
5.1.2 TAB值的设置 221
5.1.3 编译环境的设置 222
5.1.4 设置herosoft.dsm宏 224
5.2 变量定义的规范 227
5.2.1 变量的命名规则 227
5.2.2 变量定义的地方规定 228
5.2.3 变量的对齐规定 229
5.3 代码对齐方式、分块、换行的规范 230
5.4 快速的代码整理方法 232
5.5 注释的规范 233
5.6 头文件的规范 236
5.7 建议采用的一些规则 236
5.8 可灵活运用的一些规则 238
5.9 标准化代码示例 239
5.10 成对编码规则 243
5.10.1 成对编码的实现方法 243
5.10.2 成对编码中的几点问题 248
5.11 正确的成对编码的工程编程方法 251
5.11.1 编码前的工作 252
5.11.2 成对编码的工程方法 255
5.11.3 两个问题的解释 260
第6章 分析方法 266
6.1 分析概要 266
6.1.1 分析案例一:软件硬盘阵列 268
6.1.2 分析案例之二:游戏内存修改工具 274
6.2 接口的提炼 286
6.2.1 分离接口 286
6.2.2 参数分析 287
6.3 主干和分支 290
6.3.1 主干和分支分析举例 291
6.3.2 程序检?? 300
6.4 是否对象化 301
6.5 是否DLL化 307
6.5.1 DLL的建立和调用 307
6.5.2 DLL动态与静态加载的比较 322
6.5.3 DLL中函数的定义 322
6.6 COM的结构 324
6.7 几种软件系统的体系结构分析 326
6.7.1 播放器的解码组成分析 326
6.7.2 豪杰大眼睛的体系结构 330
6.7.3 Windows 9x体系结构 331
第7章 调试方法 333
7.1 调试要点 333
7.1.1 调试和编程同步 333
7.1.2 汇编代码确认 334
7.1.3 Win32的Debug实现方法 342
7.2 基本调试实例分析 343
7.3 多线程应用的调试 350
7.4 非固定错误的调试 352
7.4.1 激活调试环境 352
7.4.2 正确区分错误的类型 356
7.4.3 常见的偶然错误 357
第8章 内核优化 358
8.1 数据类型的认识 358
8.2 X86优化编码准则 359
8.2.1 通用的X86优化技术 359
8.2.2 通用的AMD-K6处理器x86代码优化 361
8.2.3 AMD-K6处理器整数x86代码优化 364
8.3 MMX指令的优化 368
8.3.1 MMX的寄存器介绍 368
8.3.2 MMX的工作原理 368
8.3.3 MMX的检测 369
8.3.4 MMX指令的介绍 370
8.4 MMX的实例一:图像的淡入淡出 394
8.4.1 目的 394
8.4.2 解决方法 394
8.4.3 分析 394
8.4.4 初步实现 395
8.4.5 MMX的优化实现 401
8.5 MMX的实例二:MMX类的实现方法 407
8.5.1 实现方法分析 407
8.5.2 实现步骤 407
8.5.3 检测过程 410
8.5.4 总结 416