独辟蹊径的编程思维
内容简介· · · · · ·
与传统编程习惯于每一细节都亲历亲为所不同的是,如果在程序设计之初就综合考虑并合法应用第三方既有成果,就可在项目开发的时间、成本及质量这三个关键矛盾体“三要素”上进行统筹设计,这种技术就是“拿来主义”的编程技术。《独辟蹊径的编程思维——“拿来主义”编程》分别通过静态分析、功能调用、输出接收、界面嵌入、中间嗅探、控制交互等方法详细介绍了多达14 种拿来技术。全书集编程思想、技术、实践为一体,融会贯通,灵活运用,势必大有裨益。
《独辟蹊径的编程思维——“拿来主义”编程》适用于对网络黑客攻防程序开发、反向工程及程序原理分析感兴趣的人员,也适用于监控类和测试类程序开发人员,还可作为高校编程实验用书。另外,本书所涉及的各项技术,除了原理阐述和技术分析之外,均附有完整的程序源代码,这些源代码可免费从网上下载,所以也适用于各类编程爱好者学习、验证和修改。
作者简介· · · · · ·
李瑞民,男,工学博士,高级工程师,资深网络安全专家兼高级系统架构师。多年来一直专注于网络设备监控与信号监控、计算机安全技术等领域的研究与应用,对计算机监控、设备监控、网络攻防、物联网等领域有深刻的认识。目前拥有发明专利、软件著作权8项,出版和翻译的书籍有《网络扫描技术揭秘》、《设备监控技术》、《Hacking Exposed Wireless》等,发表专业核心论文数十篇。
目录· · · · · ·
第 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部分静态分析型的拿来技术
第 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部分功能型的拿来技术
第 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部分输出接收型的拿来技术
第 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部分嵌入型的拿来技术
第 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部分中间嗅探型的拿来技术
第 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部分控制交互型的拿来技术第
14章从运行的程序中拿来.................................... 402
14.1 Windows内存模式.............................402
14.1.1 Windows的对内存读写的限制.............................403
14.1.2 Windows的内存管理...........................404
14.1.3 调试程序简介..........................407
14.2 基于 WinIO的内存读取编程.............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
A.1 同名不同义概念......................................... 464
A.2 同义不同名概念........................................... 464
A.3 易混概念...................................................... 466
附录B 详解ASCII 码..................................... 468
附录C HTTP 错误返回码............................ 474
参考文献................................... 479
后记.............. 481
《数学之美》与《浪潮之巅》
http://www.amobbs.com/thread-5495811-1-1.html
日本人原著中译本--30天自制操作系统attachment
http://www.amobbs.com/thread-5496976-1-1.html
NRF24LE NRF24LU1 的PDF电子书
http://www.amobbs.com/thread-5537268-1-1.html
自制编程语言【日.中译】
http://www.amobbs.com/thread-5562165-1-1.html
《图灵程序设计丛书:程序员的数学》
http://www.amobbs.com/thread-5612440-1-1.html
构建自己的Linux GUI环境
http://www.amobbs.com/thread-5638360-1-1.html 这个谁有pdf版本 核心技术能拿来主义?扯淡吧! adda 发表于 2015-12-22 22:23
这个谁有pdf版本
attach://302745.rar
attach://302746.rar 使用一些参考代码这个简直是写程序中很普通的一个环节,
起个名字叫拿来主义就是独辟蹊径了?真是骗子 看到这篇文章
github已经哭晕在厕所 微软写msdn的那一帮人也悬梁自尽 谢谢分享。 好东西,mark一下 Nuker 发表于 2015-12-24 01:23
attach://302745.rar
attach://302746.rar
谢谢您的分享... 不知道好与不好,先拿来看看?,,,,
页:
[1]