《独辟蹊径的编程思维 “拿来主义”编程》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:李瑞民著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2014
  • ISBN:9787121223990
  • 页数:481 页
图书介绍:自底层到高层,由简单到复杂,分别介绍了从操作系统、共享文件、静态程序文件、无界面程序、有界面程序、B/S 界面、Office 文件、控制嵌入、界面嵌入、程序调用时过滤、网络通信时监听、串口通信时监听、运行的程序、Hook 钩子程序等14 种环境中,进行调用、嗅探、扩展、二次开发的方式,并统称为“拿来主义”的编程技术。这些技术,有些可以单独使用,有些可以组合使用,有些则只、是特定环境下的唯一选择,灵活运用,融会贯通,势必大有裨益。

第1章 绪论 1

1.1 “拿来主义”编程技术简介 1

1.1.1 什么是“拿来主义”, 1

1.1.2 为什么要采用“拿来主义” 2

1.2 常用的“拿来主义”,编程技术 3

1.3 “拿来主义”编程技术的分类 5

1.3.1 静态分析型的拿来技术 5

1.3.2 功能型的拿来技术 6

1.3.3 输出型的拿来技术 7

1.3.4 嵌入型的拿来技术 8

1.3.5 中间嗅探型的拿来技术 8

1.3.6 控制交互型的拿来技术 9

第1部分 静态分析型的拿来技术 12

第2章 操作系统数据的拿来 12

2.1 本章的预备知识 12

2.1.1 进制的表示与转换 12

2.1.2 DOS下的地址表示 14

2.1.3 Debug工具的使用 15

2.2 裸机时代的可用数据 19

2.2.1 裸机的启动过程 19

2.2.2 CMOS内存中的数据 20

2.2.3 中断与中断向量 25

2.2.4 BIOS数据区 28

2.2.5 ROM中的数据 36

2.3 DOS中的全局变量 42

2.3.1 曾经辉煌的DOS 43

2.3.2 DOS的内存映射 44

2.3.3 DOS数据区 46

2.3.4 DOS的“拿来”实例 47

2.4 Windows中的共享数据 49

2.4.1 如日中天的Windows 49

2.4.2 Windows中的环境变量 50

2.4.3 Windows环境变量的意义 52

2.4.4 Windows环境变量的编程 53

2.4.5 修改Windows的全局环境变量 56

2.5 编程实例:基于WinIO的CMOS数据读写 56

2.5.1 程序主界面 57

2.5.2 程序代码 57

第3章 系统共享文件中的拿来 61

3.1 操作系统配置文件的拿来 61

3.1.1 对配置文件的读/写 62

3.1.2 Boot.ini 65

3.2 目录名称的拿来 66

3.2.1 与用户名相同的目录名 67

3.2.2 所安装的软件列表 68

3.2.3 与用户相关的特定目录名 68

3.3 数据库访问式的共享 69

3.3.1 ODBC数据访问方式 69

3.3.2 ADO数据连接 82

3.4 注册表的共享 86

3.4.1 基于注册表访问的API 86

3.4.2 注册表项的操作 92

3.5 文件级的拿来 93

3.5.1 网络配置文件 93

3.5.2 日志文件 97

3.5.3 Windows目录自带的音频文件资源 103

3.6 编程实例1:通过ODBC对txt文件进行读/写 108

3.6.1 程序主界面 109

3.6.2 程序代码 109

3.7 编程实例2:通过ADO对Excel文件进行读/写 112

3.7.1 程序主界面 112

3.7.2 程序代码 113

第4章 静态程序文件中资源的拿来 115

4.1 常见可执行文件的格式 115

4.1.1 DOS下的COM和EXE文件的格式简介 115

4.1.2 Windows下PE文件的格式 118

4.2 VC软件编程人员眼中的程序资源 119

4.3 在可执行文件中调整资源 121

4.3.1 从可执行文件中提取资源 121

4.3.2 更换可执行文件中的资源 122

4.4 软件汉化与界面调整 122

4.4.1 软件汉化 123

4.4.2 软件界面调整 125

4.5 界面复制 126

4.5.1 将可执行文件中的界面复制到工程中 126

4.5.2 对两个工程之间界面的复制 128

第2部分 功能型的拿来技术 132

第5章 无界面程序命令行中的拿来 132

5.1 什么是命令行 132

5.1.1 常用的DOS内部命令 134

5.1.2 常用的DOS外部命令 138

5.2 命令行的组合使用 149

5.2.1 设备文件 149

5.2.2 重定向技术 151

5.2.3 管道技术 155

5.3 命令行的编程技术 156

5.3.1 可嵌入DOS命令行的几个函数 156

5.3.2 管道编程的几个函数 161

5.4 编程实例1:使用重定向接收外部程序运行结果 162

5.4.1 程序主界面 162

5.4.2 程序代码 163

5.5 编程实例2:使用管道接收外部程序运行结果 164

5.5.1 程序主界面 164

5.5.2 程序代码 165

第6章 有界面程序消息式的拿来 167

6.1 消息机制 167

6.1.1 消息的定义 168

6.1.2 消息的队列和非队列模式 169

6.1.3 与消息有关的几个函数 170

6.2 Visual C++自带的消息处理工具 175

6.2.1 程序界面上的控件 175

6.2.2 Visual C++下提供的标准控件 176

6.2.3 消息查询工具Spy++ 177

6.3 通过消息控制程序 182

6.3.1 与窗口有关的几个函数 182

6.3.2 与消息控制有关的几个函数 186

6.4 编程实例:通过消息控制程序 191

6.4.1 程序主界面 191

6.4.2 程序代码 192

第3部分 输出接收型的拿来技术 200

第7章 读取B/S界面上输出的数据 200

7.1 Web服务器的安装和测试 201

7.1.1 Web服务器的安装和验证 201

7.1.2 检验Web服务器的效果 205

7.2 基于Web应用的编程接口 207

7.2.1 CInternetSession类 208

7.2.2 CInternetConnection类 216

7.2.3 CHttpConnection类 217

7.2.4 CFtpConnection类 218

7.2.5 CInternetFile类 222

7.2.6 CInternetException类 224

7.3 编程实例:基于Web的拿来方式 225

7.3.1 原理分析 226

7.3.2 程序主界面 228

7.3.3 程序代码 228

第8章 对Office文件输出的接收操作 231

8.1 Microsoft Office简介 232

8.2 输出式的拿来简介 233

8.2.1 COM/DCOM的概念 234

8.2.2 AfxOleInit函数 234

8.2.3 COleVariant类 235

8.2.4 COleDispatchDriver类 240

8.3 程序员眼中的Office 241

8.3.1 Office的结构框架 242

8.3.2 Office组件的导入 242

8.4 Word的结构输出 244

8.4.1 Word简介 244

8.4.2 Word中的要素 244

8.5 Excel的结构输出 245

8.5.1 Excel简介 246

8.5.2 Excel中的要素 246

8.6 PowerPoint的结构输出 247

8.6.1 PowerPoint简介 248

8.6.2 PowerPoint中的要素 248

8.7 输出式的拿来技术在信息安全领域内的应用 249

8.7.1 数字水印简介 249

8.7.2 Word中格式输出类的数字水印 250

8.7.3 Word中内容格式的数字水印 251

8.8 编程实例1:读取Word文件中的纯文本内容 252

8.8.1 程序主界面 252

8.8.2 程序代码 253

8.9 编程实例2:读写Excel中的数据 254

8.9.1 程序主界面 255

8.9.2 程序代码 255

8.10 编程实例3:控制PPT的输出 258

8.10.1 程序主界面 258

8.10.2 程序代码 259

第4部分 嵌入型的拿来技术 264

第9章 控件嵌入式的拿来 264

9.1 ActiveX技术简介 264

9.2 在Windows程序中嵌入ActiveX控件 266

9.2.1 设置对ActiveX控件的支持 266

9.2.2 从系统注册的组件中导入要使用的ActiveX控件 267

9.2.3 从DLL文件中导入要使用的ActiveX控件 268

9.3 编程实例1:嵌入式视频播放器 268

9.3.1 播放器编程的简介 268

9.3.2 VLC简介 269

9.3.3 程序主界面 274

9.3.4 程序代码 274

9.4 编程实例2:嵌入式PDF阅读器 276

9.4.1 在VC对PDF的可视化使用 276

9.4.2 程序主界面 277

9.4.3 程序代码 278

第10章 界面嵌入式的拿来 280

10.1 屏幕式的嵌入 280

10.1.1 图形桌面 281

10.1.2 实现界面嵌入式要考虑的问题 283

10.1.3 实现像素级操作主要涉及的API 286

10.1.4 实现桌面级操作主要涉及的API 288

10.1.5 屏幕的截取 293

10.2 内容式的嵌入 297

10.2.1 通过IE调用访问网络地址 297

10.2.2 通过嵌入页面方式访问网络地址 297

10.2.3 通过资源管理器方式访问本地文件系统 298

10.2.4 CHhtmlView的API 299

10.3 编程实例1:将程序界面自己程序的一部分进行嵌入 301

10.3.1 程序主界面 302

10.3.2 程序代码 303

10.4 编程实例2:嵌入整个Web页面和资源管理器 306

10.4.1 程序主界面 307

10.4.2 程序代码 307

第5部分 中间嗅探型的拿来技术 310

第11章 程序调用时的数据过滤 310

11.1 DLL文件的意义和用法 310

11.1.1 DLL文件的意义 311

11.1.2 与DLL调用相关的函数 312

11.1.3 DLL文件的调用步骤 315

11.2 从EXE或DLL文件中找到函数 316

11.2.1 Depends的使用方式 316

11.2.2 从ICMP.DLL中抽取函数 317

11.2.3 ICMP.DLL中各函数的用法 318

11.3 重载DLL文件 321

11.3.1 DLL文件重载的原理 321

11.3.2 DLL文件重载的意义 322

11.4 具有重载特性的DLL文件创建步骤 322

11.4.1 普通DLL文件的创建步骤 323

11.4.2 重载DLL文件的创建步骤 324

11.5 编程实例1:通过ICMP.DLL制作tracert命令 325

11.5.1 程序主界面 326

11.5.2 程序代码 327

11.6 编程实例2:重载ICMP.DLL以记录ICMP协议操作 330

11.6.1 程序主界面 330

11.6.2 程序代码 331

第12章 网络通信时的数据监听 335

12.1 网络通信简介 336

12.1.1 网络嗅探技术 336

12.1.2 网络协议分析和行为分析 336

12.1.3 黑客级别的分析 339

12.2 数据流的截获 344

12.2.1 单机数据流的获取 344

12.2.2 网络数据流的获取 346

12.3 Socket编程接口 348

12.3.1 几个重要的概念 349

12.3.2 Windows Socket结构 350

12.3.3 Windows socket转换类函数 353

12.3.4 Windows socket通信类函数返回值 357

12.3.5 Windows socket通信类函数 359

12.4 编程实例:RAW Socket嗅探器 368

12.4.1 程序主界面 368

12.4.2 程序代码 369

第13章 串口通信时的数据监控 377

13.1 串口的通信与监听 377

13.1.1 串口简介 377

13.1.2 串口通信中的“拿来”技术 379

13.2 基于VSPE的串口开发技术 380

13.2.1 VSPE简介 381

13.2.2 VSPE的术语 381

13.2.3 VSPE的串口嗅探功能 386

13.2.4 VSPE的使用与开发 388

13.2.5 VSPE的API 388

13.3 编程实例:串口嗅探器 392

13.3.1 程序主界面 393

13.3.2 程序代码 394

第6部分 控制交互型的拿来技术 402

第14章 从运行的程序中拿来 402

14.1 Windows内存模式 402

14.1.1 Windows的对内存读写的限制 403

14.1.2 Windows的内存管理 404

14.1.3 调试程序简介 407

14.2 基于W inIO的内存读取编程 408

14.2.1 WinIO的API 408

14.2.2 WinIO的编程 412

14.3 基于API的程序调试函数 412

14.3.1 Windows调试程序的结构 413

14.3.2 Windows调试程序的API 422

14.3.3 Windows的进程API 428

14.3.4 Windows的动态内存API 429

14.3.5 Windows调试程序的编写方式 433

14.4 编程实例:读正在执行程序的数据 434

14.4.1 程序主界面 435

14.4.2 程序代码 435

第15章 Hook控制式的拿来 440

15.1 Hook简介 440

15.1.1 什么是Hook 441

15.1.2 Hook的运行机制 442

15.1.3 怎么使用Hook 443

15.2 Hook函数 443

15.2.1 SetWindowsHookEx函数 444

15.2.2 UnhookWindowsHookEx函数 446

15.2.3 CallNextHookEx函数 446

15.2.4 回调函数 447

15.3 Hook的类型 447

15.3.1 WH_CALLWNDPROC 447

15.3.2 WH_CBT 448

15.3.3 WM_QUEUESYNC 452

15.3.4 WH_DEBUG 452

15.3.5 WH_FOREGROUNDIDLE 453

15.3.6 WH_GETMESSAGE 453

15.3.7 WH_HARDWARE 453

15.3.8 WH_JOURNALRECORD 453

15.3.9 WH_JOURNALPLAYBACK 454

15.3.10 WH_KEYBOARD 455

15.3.11 WH_MOUSE 455

15.3.12 WH_MSGFILTER 455

15.3.13 WH_SHELL 456

15.3.14 WH_SYSMSGFILTER 456

15.4 编程实例1:线程Hook程序编写 456

15.4.1 程序主界面 456

15.4.2 程序代码 457

15.5 编程实例2:全局Hook程序编写 459

15.5.1 程序主界面 459

15.5.2 DLL程序代码 460

15.5.3 调用程序代码 462

附录A 本书容易混淆概念解析 464

附录B 详解ASCII码 468

附录C HTTP错误返回码 474

参考文献 479

后记 481