独辟蹊径的编程思维:“拿来主义”编程.pdf

独辟蹊径的编程思维:“拿来主义”编程.pdf
 

书籍描述

编辑推荐
编程大师、网络安全专家十几年的工作经验结晶,源码级公开。每个编程人员都值得拥有的一本编程技能书。

作者简介
李瑞民,男,工学博士,高级工程师,资深网络安全专家兼高级系统架构师。多年来一直专注于网络设备监控与信号监控、计算机安全技术等领域的研究与应用,对计算机监控、设备监控、网络攻防、物联网等领域有深刻的认识。目前拥有发明专利、软件著作权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

序言
在软件开发中,编程人员经常会遇到这么一个问题:就是自己想做的某个功能还不知道该如何实现呢,而该功能早已被别人实现并应用。这时,也许我们突然会有一个念头,如果能将别人做好的程序全部或一部分通过一定技术拿来为我所用,那不仅可以大大缩短开发进度,在技术攻关上还能得到保障。当然,自己要权衡的是为此所付出的购买版权、获得许可的代价。
撇开项目开发中的其他环节,仅从技术角度来讲,这种“拿来为我所用”的目标是需要有重要的前提和强有力的技术支持的。其前提就是不违反国际、国家的与版权、著作权相关的各项法律法规,通过合法的手段获得,并明确获得了修改、重新发布、商业销售等许可。本书所有的技术和内容都是基于这一前提的,而实现这一目标所需要支持的技术,则是本书的内容。
在中华五千年漫长的文明史中,这种“拿来为我所用”的现象并不少见,2300 多年前赵武灵王“胡服骑射”,改中原宽大的衣服为北方游牧民族短小精简的衣服,改善了战士作战的灵活性,增加了战斗力。1000 多年前辽太宗耶律德光在治理天下时,采纳了“说汉话,穿汉服”的方式,以便引进当时汉族先进的文化和管理方式,以取代当时少数民族相对落后的管理方式。1840 年以来,一批批国人出于强国的目的,提出了很多相似的观点,如“师夷长技以治夷”、“古为今用”等,这些观点的共同特点就是“不管是谁的,只要是对的,一切皆可为我所用”,而最让我认同的是20 世纪30 年代鲁迅先生提出的“拿来主义”。简单地说,“拿来主义”即“去其糟粕,取其精华,为我所用”,这也正是本书以此命名的主要原因。
根据“拿来”方式的使用特点,全书分为静态分析型的拿来技术、功能型的拿来技术、输出接收型的拿来技术、嵌入型的拿来技术、中间嗅探型的拿来技术、控制交互型的拿来技术等6 大类。从概念上,6 大类虽然各有特色,但具体到一个编程应用中时,往往各大类你中有我,我中有你,相互调用,互为支持。
全书分为6 大部分共15 章。其中,作为全书内容的背景,第1 章绪论讲述了拿来技术的一些定义、共性及分类方式,由于第1 章是后面6 部分14 章的基础,所以不能作为独立的一部分,只列为单独的一章。而后面14 章的内容,则各自独立,在阅读上除了有些内容相关联之外,对阅读顺序没有严格要求。
静态分析型的拿来技术是指通过对数据的静态分析,从中提取可以“拿来”的信息为自己的程序所用。这里所强调的是“静态分析”,而不是“静态数据”,所以并不强调“拿来”的数据一定是静态数据。根据这一原则,这一类型所对应的拿来技术共分为3 种,分别是操作系统数据的拿来、系统共享文件中的拿来和静态程序文件资源的拿来。
功能型的拿来技术,其操作对象是可执行文件。通过对可执行文件的操作,或者是使其执行以达到自己程序所要达到的目的;或者是对其执行后生成的结果进行分析,从中提取出有用的信息;或者是控制其执行,使之在按自己要求运行的状态下,达到自己的目的。根据可执行的程序是否有界面,本部分分为无界面程序命令行中的拿来和有界面程序消息式的拿来两章。
输出接收型的拿来技术,其操作对象则将关注点转移至程序的输出界面的接收上,接收的目的是因为原有界面不能满足自己的需要,因而需要通过一定方式接收其中原本属于界面展示的内容,拿来后为我所用,转换为自己的界面,进而以自己界面的风格进行显示。这部分内容根据当前的两大使用领域,分为读取B/S 界面上输入的数据和对Office 文件输出的接收操作两章。
嵌入型的拿来技术与输出接收型的拿来技术,在应用上似乎是一个姊妹篇,因为嵌入型的拿来技术也是针对程序的输出界面的接收。但与输出接收型不同的是,这种技术对程序原有界面很满意,想将其界面中的全部或一部分拿来为已所用。该部分内容根据所使用的技术不同,分为控件嵌入式的拿来和界面嵌入式的拿来两章。
中间嗅探型的拿来技术关注的则是程序内部模块之间或程序之间的临时数据,无论是程序模块之间、程序之间,还是系统之间,要进行数据交换,必然需要通过一个双方都能接收的协议,在知道这个协议的前提下,如果能通过一定的技术,获得二者之间通信的数据,那么对比协议就可以分析二者通信中的内容,甚至直接分析出其中的每一项数据细节,从而实现对数据的拿来。中间嗅探型分为程序调用时的数据过滤、网络通信时的数据监听和串口通信时的数据监控3 种。
控制交互型的拿来技术,则既不在乎程序本身的对外输出,也不关注程序的界面,而是将精力放在程序自身的运作上。通过对程序的控制,以及与程序交互的交换,进而实现对程序原理和数据结构的分析,最后将其内部运行机制作为结果进行拿来。主要分为从运行的程序中拿来和Hook 控制式的拿来。
最后,本书还在附录中增加了3 个与本书息息相关的内容。第1 个是本书涉及的概念中,容易混淆的那些术语、概念和定义,本书并不是要重新定义这些概念,只是相对本书中的这些概念进行解释,从而避免读者理解上的错误;第2 个是对ASCII 码的详细解释,并在码表中内嵌了一个简单的十进制数据和十六进制数据的转换表;第3 个则是Web 中的HTTP 错误返回码,借以解释全书中,散落在多章的有关B/S 架构中的常见问题。
从格式上,本书除了正常的内容之外,还增加了两个备注标识项。其中“提示”是指与所介绍内容有关,但不足以以正文的内容进行说明的辅助内容;而“重要”则是指该内容不但与介绍的内容有紧密的关系,而且若不理解该内容,很可能对所涉及的内容有错误的理解。
全书内容有收录性质,一切以实用为标准。例如Windows 9X 版本已很少有用户使用,已无收录的必要,故所有内容中,均至少从Windows XP/2000 版本开始。比Windows 9X 更早的DOS 虽然早已淘汰,但由于Windows 所有版本都保留“命令提示符”以示兼容,并且目前始终有大量命令行应用存在,所以保留了DOS 的部分内容。所有的内容,都尽可能以编程实例的方式进行讲解和验证。
本书的程序、代码全部开源,除第9 章“编程实例1:嵌入式视频播放器”中的代码之外,对其余代码约定如下。
(1)本书及随书光盘中的所有例程,其源码部分版权归本书作者所有;
(2)光盘内容不得进行单独销售,不得提供网站下载(含收费或免费)。
第9 章“编程实例1:嵌入式视频播放器”中的代码则不受上述约束,但使用该程序的人需要接受VideoLan 对基于其技术进行软件开发的各项要求。

文摘
拿破仑曾说过:“世上只有两种力量:利剑和思想。从长而论,利剑总是败在思想手下。”美国利用思想渗透致使前苏联解体,编程也是一样,除了需要技术,更需要思想,这样才能编写出更多的好程序,并提高效率。“拿来主义”是编程思想的重要组成部分,有助于缩短开发进度,提升开发质量,使开发技术获得新的突破。当然,“拿来主义”应该在尊重版权许可的前提下进行,这样才能让“拿来主义”思想广泛应用和发展。
本书讲述“拿来主义”的实践,涵盖操作系统、Web 等多方面技术,对广大程序员来说是一本很好的教材。其内容丰富而深刻,极具参考价值和实用性,堪称经典之作。Hook 获取、DLL 重载、API 截获、DOS 公共数据区、Office 控件调用、B/S 提取等稀缺的技术资料一应俱全。以Hook 为例,有简单的介绍,也有深度的技术。又比如DLL 的函数使用,有理论知识又不缺实例。
本书是李瑞民博士的第5 本著作,我不仅钦佩李瑞民博士的技术和经验,更钦佩他的开源精神和为开源事业所做的贡献。共享是一种黑客精神,开源是一种共享方式,共享和开源促进着技术的突破与创新。Linux 的开源衍生出嵌入式、RedHat、Debian、Android、Ubuntu 等,进而衍生出BackTrack、Kali、MIUI、Smartisan OS 等。如果没有开源,智能移动设备可能不会迅速普及大众,科技所带来的生活乐趣将会滞后。简单、快捷的网站搭建,功能和安全性的增强,互联网的呈现,以及大数据的形成等都得益于网站程序的开源。可以说,开源改变世界!
本书令我大开眼界,有一种顿悟的感觉。在千千万万的书丛中,好书难得一遇,而本书就是其中之一,使读者既能得到思想上的指导,又能得到技术上的提炼,可谓鱼和熊掌兼得。
网络尖刀核心成员 冷鹰



随着技术的发展以及开源社区的日益壮大,程序员做某个软件时的第一想法,除了“这个软件如何实现”,还有“有没有别人已经做好的,拿来使用一下”。Ruby on Rails 这样的语言可以帮助一个零经验者用几个小时建立一个网站雏形,这样的事情之所以成为可能,是因为其背后的强大框架支持。对其能够支撑的接口了解得越多,在系统中可增加的特性就越多。而开发者并不需要开发一个和Rails 一样或者等同的框架,可以直接将其“拿来”使用。
软件业已经有很多“轮子”被发明了,重新发明“轮子”并不会显得有多明智。直接“拿来”那些现成的可用组件或框架,可以迅速提升开发能力,更加专注于业务逻辑。书中所主张的“拿来主义”正是应该被奉行的精神。但是正如作者所言,要想“拿来”,得先看对象是否允许“被拿来”,是否允许修改,是否允许绕过一些限制等。了解相关法律规定和条款可以让程序员在一个合法的领域中“拿来”。
本书作者对Windows 编程中操作系统及DLL 能够提供的接口、数据操作等进行了全面而深入的分析。作者凭其深厚的功底带领读者更深入地了解Windows 系统中可以被轻松“拿来”的东西。如果你正在开发一个Windows 系统中的应用,本书则可能为你提供更加快捷、有效的方案。本书为在Windows 上开发应用程序,尤其是和底层打交道的程序员们带来了非常有价值的知识。
除了代码和接口,我们还可以“拿来”思想,可以“拿来”设计模式,可以“拿来”测试驱动开发,还可以“拿来”领域驱动设计。在“拿来”之前,还需要知道有什么可以“被拿来”。
本书从若干个角度进行分析,引领读者了解哪些是可以“被拿来”的。这是一本用心写就的书。
敏捷开发独立咨询师、《会说话的代码》作者 王洪亮

内容简介
与传统编程习惯于每一细节都亲历亲为所不同的是,如果在程序设计之初就综合考虑并合法应用第三方既有成果,就可在项目开发的时间、成本及质量这三个关键矛盾体“三要素”上进行统筹设计,这种技术就是“拿来主义”的编程技术。《独辟蹊径的编程思维——“拿来主义”编程》分别通过静态分析、功能调用、输出接收、界面嵌入、中间嗅探、控制交互等方法详细介绍了多达14 种拿来技术。全书集编程思想、技术、实践为一体,融会贯通,灵活运用,势必大有裨益。
《独辟蹊径的编程思维——“拿来主义”编程》适用于对网络黑客攻防程序开发、反向工程及程序原理分析感兴趣的人员,也适用于监控类和测试类程序开发人员,还可作为高校编程实验用书。另外,本书所涉及的各项技术,除了原理阐述和技术分析之外,均附有完整的程序源代码,这些源代码可免费从网上下载,所以也适用于各类编程爱好者学习、验证和修改。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多