本节书摘来自异步社区《C++ 黑客编程揭秘与防范》一书中的第1章1.1节编程语言和开发环境的选择,作者冀云,更多章节内容可以访问云栖社区“异步社区”公众号查看。
第1章 黑客编程入门
C++ 黑客编程揭秘与防范
你是否曾经在用别人开发的工具尝试“入侵”,你是否希望开发出自己的黑器……相信很多人有着这种近似相同的经历。本章将简单介绍黑客编程及工具开发。如果你是初学编程,如果你从来没有接触过黑客软件的开发,如果你急于想了解黑客编程方面的知识……那么就请继续往下阅读。
1.1 编程语言和开发环境的选择
C++ 黑客编程揭秘与防范
初学者刚开始学习编程语言最头疼的问题就是如何选择编程语言及合适的开发环境,下面就来具体介绍一下。
有人认为学编程就是学编程语言,而VC、VB这样的开发环境只是工具,不需要学。这个想法是错误的,因为开发环境提供了很多开发工具,如VC这个集成开发环境就提供了与之对应的PSDK、MFC等。除了语言以外,要开发特定的软件是需要开发包和开发工具支持的。况且,编程语言也是一种工具,用于和计算机进行交流的工具。所以我们既要学习编程语言,也要学习开发工具。
对于选择哪种编程语言或者开发环境其实也没有特定的标准。有这样一句话,“真正的程序员用VC,聪明的程序员用Delphi,用VB的不是程序员”。笔者却并不这么认为,因为在很多编程的书籍上常常这样提醒并告诫学习者,编程的精髓是“算法”,而语言是用来描述算法的。因此,大家也不必因为无法选择而无从下手。
黑客一般都掌握多种编程语言,他们不但掌握着与底层相关的如汇编、C之类的编程语言,而且还掌握很多脚本语言,如Python、Perl、Ruby……很多黑客在发现0Day以后用Perl或者Python来写POC;MSF使用的是Ruby来进行开发Exploit;有的黑客在反病毒时竟然写个批处理就搞定了……对于黑客来说,一切语言都是服务于自己的思想的,只要能快速实现自己的想法,能完成自己所要完成的功能就行,从不拘泥于任何语言和工具。在网上有很多学习不同编程语言的人们之间经常互相攻击,这其实是一种极端的行为,大家还是理性地对待这些问题比较好。
前面说了这么多,仿佛是在绕圈子,一直没有介绍到底应该选择什么编程语言和开发环境。我们这里选择使用C语言作为黑客编程的学习语言,选择VC6(Visual C++ 6.0的缩写)来作为我们的开发环境。VS 6相对于Visual Studio 2005、Visual Studio 2008和Visual Studio 2010之类的开发环境来说要小巧很多,当前是可以满足我们的开发需求的。选择C语言的原因是由于Windows的API都是用C语言定义的,相对于使用其他编程语言会方便很多。笔者认为在VB下使用API就非常不方便,尤其是涉及指针这个概念的时候。除了VC6以外,还需要下载新版的PSDK,因为VC6中包含的PSDK过于旧,有些新的API我们无法通过包含头文件而直接使用,因此这个也是必须的。
1.1.1 何为SDK、API和MFC
既然选择VC作为开发环境,那么先来了解一下VC开发环境中今后会用到的一些工具的概念,这些概念都相对比较简单,常见的概念有SDK、API和MFC。
SDK是Software Develop Kits的缩写,即软件开发工具包。SDK是一个泛指,比如对视频采集卡进行二次开发,那么视频采集卡会提供SDK;再比如对动态令牌进行二次开发,那么动态令牌也会提供SDK。操作系统为了程序员在其平台下开发应用程序也会提供SDK,我们对系统提供的开发包称之为PSDK。PSDK是Platform SDK的意思,也就是平台SDK。对于我们来说,平台就是Windows操作系统。Windows下的PSDK包含了进行Windows软件开发的文档和API函数的输入库、头文件等一些与Windows开发相关的工具。PSDK是一个单独的开发包,不过每个不同版本的VC和其他一些开发环境中也已经包含了它。
API是Application Programming Interface的缩写,即应用程序接口。不同的SDK提供不同的API。PSDK提供的API就是操作系统提供的开发应用程序的接口,比如Windows系统下删除文件的API函数是DeleteFile();再比如Windows系统下移动文件的API函数是MoveFile(),而其他一些供二次开发的SDK中附带的API,也是为了进行开发应用程序而提供的接口。
MFC是Microsoft Foundation Class的缩写,即微软基础类库。它是微软为了简化程序员的开发工作量所提供的基于C++类的一套面向对象的库,它封装了常见的API函数,使得开发较为方便。
我们在书中会用到API进行开发,也会使用MFC进行开发。不过对于MFC的使用,基本上用在与界面相关的部分,一般是简单地带过,不会进行过多的讨论。我们的重点是放在API函数的使用上。关于MFC的相关内容,还请大家自行参考学习。
1.1.2 VC6和SDK的配置
新版的PSDK(Windows Server 2003 SP1 Platform SDK)的下载地址为http://www.microsoft.com/downloads/en/details.aspx?FamilyID=eba0128f-a770-45f1-86f3-7ab010b398a3。如果此地址过期的话,请大家在网上自行搜索并下载。
SDK和VC6互相是独立的,不需要安装在同一个目录下,根据自己的实际情况安装就可以了。在安装好VC6和新版的SDK后,需要在VC6中进行相应的设置才能使用新版的SDK,否则VC6仍然使用其自带的旧的SDK。SDK和VC6的安装步骤这里就不介绍了(提示:请把VC6安装完整,VC6会提供一些代码,对我们的学习是非常有帮助的),下面介绍新版的SDK如何配置才能在VC6中使用。
启动VC6,单击菜单“Tools”->“Options”命令,打开“Options”对话框,如图1-1所示。
选择“Directories”选项卡,在“Show directories for”下拉列表中选择“Include files”,选项并在“Directories”列表框中添加新的PSDK头文件的目录,放在列表的最上面,如图1-2所示。
在“Show directories for”下拉列表中选择“Library files”选项,并在“Directories”列表框中添加新的PSDK库文件的目录,放在列表的最上面,如图1-3所示。
切记要把所添加的目录放到列表的最上边,因为在VC编译代码的时候会搜索这些目录里的文件,如果随便放,编译器会因找不到相关API函数定义而报函数未定义的错误。
另外,还必须下载一个MSDN。MSDN即Microsoft Developer Network,它是微软开发的联机帮助文档,可以帮助我们在使用API的时候进行快速的查阅,以方便我们对API的使用和理解。但是MSDN里的内容全部都是英文的,如果你英文不太好可以借助搜索引擎来学习API的使用。本书只对所提到的API函数常用的参数进行介绍,其他参数需要大家自行进行学习。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。