C++ 黑客编程揭秘与防范(第3版)
上QQ阅读APP看书,第一时间看更新

前言

备受关注的黑客到底是什么

什么是黑客?百度百科里黑客的含义如下(摘自百度百科,略有改动):

热衷研究、撰写程序的专才,精通各种计算机语言和系统,且必须具备乐于追根究底、穷究问题的特质。“黑客”一词是由英语Hacker音译出来的,是指专门研究、发现计算机和网络漏洞的计算机爱好者。早期在美国的电脑界是带有褒义的。

看到上面百度百科给出的黑客含义后,很多只会使用工具的所谓的“黑客”就能明白一个道理,即黑客是要会编写程序的。

再看一下百度百科里对只会使用工具的黑客的解释(摘自百度百科):

脚本小子(script kiddie或script boy)“指的是用别人写的程序的人。脚本小子是一个贬义词,用来描述以黑客自居并沾沾自喜的初学者。”

那些自以为是的工具黑客只不过是一个“脚本小子”,是不是心里觉得不是很舒服了?是不是觉得自己应该提高了?如果是的话,那么就请抛开以前当工具黑客的想法,开始学习编写程序吧!

思想准备

新手可能会问:编写自己的黑客工具是不是很难?是不是要懂编程语言?要懂哪种编程语言呢?笔者的回答是肯定的。抛开用工具的想法,其实是让大家抛开浮躁的想法,认真地学一些真正的技术,哪怕只是一些入门的知识。想做黑客就要有创新、研发的精神,如果只是做一个只会用软件的应用级的计算机使用者,那么必定永远达不到黑客级的水平,因为工具人人都会用,而你只是比别人多知道几个工具而已。抛开浮躁,静下心来从头开始学习基础,为将来的成长做好足够的准备。

攻防的广义性

黑客做得最多的就是“入侵”,这里所说的入侵不是一个狭义上的入侵,因为它不单单针对网络、系统的入侵。这里说的是一个广义上的入侵,“入侵”一词是指“在非授权的情况,试图存取信息、处理信息或破坏系统以使系统不可靠、不可用的故意行为。”由此可以看出,入侵并非单指网络或系统。这里说的“入侵”包括两个方面,一个是针对网络(系统)的入侵,另一个是针对软件的入侵。网络的入侵是通常意义上的入侵,而软件的入侵通常就是人们说的软件破解(包括漏洞挖掘等内容)。无论是侵入别人系统,还是破解某款软件,都是在非授权的情况下得到相应的权限,比如系统权限或者软件的使用权限。这些“入侵”都是为了寻找系统的安全漏洞,以便更好地完善系统的安全。

本书内容

本书针对“网络入侵”和“软件入侵”两方面来介绍黑客编程,从攻防两个角度来学习黑客编程的知识,通过一系列知识体系完成“黑客编程”的养成计划。

本书会介绍大量的基础知识,这些基础知识看起来与普通的应用程序编程没有什么差别。其实,所谓“黑客编程”(也称为“安全编程”),是指“采用常规的编程技术,编写网络安全、黑客攻防类的程序、工具”。因此,普通的编程技术与黑客编程技术并没有本质的差别,只是开发的侧重点不同。普通的编程注重的是客户的需求,而黑客编程注重的则是攻与防。

黑客编程有其两面性,按照攻防角度可以分为“攻击类入侵编程”和“防范类安全编程”。结合上面提到的“网络”和“软件”两方面来说,常见的“网络攻击”程序有扫描器、嗅探器、后门等;常见的“软件攻击”程序有查壳器、动态调试器、静态分析器、补丁等(这些工具是一些调试工具和逆向分析工具,因为软件破解、漏洞挖掘等会用到这些调试工具,所以称其为“软件攻击”工具)。常见的“网络(系统)防范”程序有“杀毒软件”“防火墙”“主动防御系统”等;常见的“软件防范”程序有“壳”“加密狗”“电子令牌”等。

根据前面提到的攻防两方面的内容,本书会涉及扫描器的开发、后门的开发、应用层抓包器的开发等黑客攻防方面的内容。本书还会讲解关于软件方面的知识,主要涉及PE结构、加壳、脱壳、逆向分析等知识。由于技术的两面性,希望读者有一个良好的学习心态,把学到的技术用到安全保护上。

读者能从本书中得到什么

通过本书,读者能学到Windows下基于消息的软件开发、基于Winsock的网络应用程序的开发、软件逆向分析和调试等方面的编程、调试及安全知识。在学习的过程中,读者应该大量阅读和参考其他相关资料,并且一定要亲自动手进行编程。编程绝对不是靠看书能够学会的!

通过本书的指导,再加上自身实践和练习,读者可以具备Windows下基本的应用程序开发、网络程序开发能力,基本的系统底层开发能力。除了提升相关开发能力外,读者还能学到初级的病毒分析、软件保护等相关的安全知识。

如何无障碍阅读本书

阅读本书的读者最好具有C和C++编程的基础知识,有其他编程语言基础知识的读者也可以无障碍阅读。对于无编程知识的读者,在阅读本书的同时,只要学习了本书中涉及的相关基础知识,同样可以阅读本书。

本书涉及范围较多,知识面比较杂,但是本书属于入门级读物,专门为新手准备,只要读者具备一定的基础知识,即可顺利进行阅读。在阅读本书的基础上,读者可以接着学习更深层次的知识,希望本书能帮助读者提高自身的能力。

建议读者深入学习操作系统原理、数据结构、编译原理、计算机体系结构等重要的计算机基础知识。

免责

本书中内容主要用于教学,指导新手如何入门、如何学习编程知识,从编程的过程中了解黑客编程的基础知识。请勿使用自己的知识做出有碍公德之事,在准备通过技术手段进行蓄意破坏时,请想想无数“高手”的下场。读者如若作奸犯科自行承担责任,与作者本人和出版社无任何关系,请读者自觉遵守国家法律。

由于作者水平有限,书中难免会有差错,敬请谅解。

编辑联系邮箱:zhangtao@ptpress.com.cn。