前言
备受关注的黑客到底是什么
“黑客”已经成为一个热门的话题,“黑客事件”更是已经受到各大媒体的关注,甚至很多媒体对黑客事件进行不负责任的报道与炒作。从传统媒体到互联网媒体,从平面媒体到多元化的媒体平台,都在报导黑客事件,报道新爆发的蠕虫、病毒等一系列相关事件。
在各种媒体的炒作下,越来越多的年轻人都在追逐“当黑客的潮流”,很多热爱计算机的年轻人都追求自己能成为黑客。很多人都期望自己能一蹴而就成为一名顶级的黑客。很多人读着“头号电脑骇客”凯文米特尼克的传奇故事,在波涛汹涌的心情下,幻想着自己也能成为网络上出神入化的黑客风云人物。为此,很多“追黑”的网友深入各大黑客网站下载各种黑客工具来进行入侵、破坏(在用别人工具的同时,说不定也会遭到一些不怀好意的黑客网站的暗算,比如自己用的黑客工具本身就被放置了后门),从而满足自己追求成为黑客的心理。
在追求成为黑客的过程中真地学到了多少知识,自身的技术水平距离真正的黑客到底还有多远,这是很多只会使用工具的黑客应该冷静下来认真思考的问题。他们应该思考自己是否了解 TCP、UDP、ICMP 等 TCP/IP 中常用协议的结构与协议原理,是否知道ARP欺骗的原理,是否能独立开发并完成一个后门等。
什么是黑客?百度百科里黑客的含义如下(摘自百度百科,且有改动):
“热衷研究、撰写程序的专才,精通各种计算机语言和系统,且必须具备乐于追根究底、穷究问题的特质。‘黑客’一词是由英语 Hacker 音译出来的,是指专门研究、发现计算机和网络漏洞的计算机爱好者。早期在美国的电脑界是带有褒义的。”
看到上面百度百科给出的黑客含义后,是不是很多只会使用工具的所谓的黑客能明白一个道理,即黑客是要会编写程序的?
再看一下百度百科里对只会使用工具的黑客的解释(摘自百度百科):
“脚本小子,英文 script kiddie 或 script boy。脚本小子指的是用别人写的程序的人。脚本小子是一个贬义词,用来描述以黑客自居并沾沾自喜的初学者。”
那些自以为是的工具黑客只不过是一个“脚本小子”,还是一个被大家所“鄙视”的“小子”。是不是心里觉得不是很舒服了?是不是觉得自己应该提高了?如果是的话,那么就请抛开以前当工具黑客的想法,开始编写黑客工具吧!
心态影响成长
新手可能会问:编写自己的黑客工具是不是很难,是不是要懂编程语言,要懂哪种编程语言呢?笔者的回答是肯定的。抛开用工具当黑客的想法,其实是让大家抛开浮躁的想法,认真地学一些真正的技术,哪怕只是一些入门的基础。想做黑客就要有创新、研发的精神,如果只是做一个只会用软件的应用级的计算机使用者,那么必定永远达不到黑客级的水平,因为工具人人都会用,只是比别人多知道几个工具而已。抛开浮躁,静下心来从头开始学习基础,为将来的成长做好足够的准备。
攻防的广义性
黑客做得最多的就是“入侵”,这里所说的入侵不是一个狭义上的入侵,因为它不单单针对网络、系统的入侵。这里说的是一个广义上的入侵,“入侵”一词是指“在非授权的情况,试图存取信息、处理信息或破坏系统以使系统不可靠、不可用的故意行为。”由此可以看出,入侵并非单指网络或系统。这里说的“入侵”包括两个方面,一个是针对网络(系统)方面的入侵,另一个是针对软件的入侵。网络的入侵是通常意义上的入侵,而软件的入侵通常就是人们说的软件破解(包括漏洞挖掘等内容)。无论是侵入别人系统,还是破解某款软件,都是在非授权的情况下得到相应的权限,比如系统权限或者软件的使用权限。
本书讲点什么
本书针对“网络入侵”和“软件入侵”两方面来介绍黑客编程,从攻防两个角度来学习黑客编程的知识,通过一系列知识体系完成“黑客编程”的养成计划。
本书会介绍大量的基础知识,这些基础知识看起来与普通的应用程序编程没有什么差别。其实,所谓“黑客编程”(也称为“安全编程”),“是指采用常规的编程技术,编写网络安全、黑客攻防类的程序、工具”。因此,普通的编程技术与黑客编程技术并没有本质的差别,只是开发的层面不同。普通的编程注重的是客户的需求,而黑客编程注重的则是攻与防。
黑客编程有其两面性,按照攻防角度可以分为“攻击类入侵编程”和“防范类安全编程”。结合上面提到的“网络”和“软件”两方面来说,常见的“网络攻击”程序有扫描器、嗅探器、后门等;常见的“软件攻击”程序有查壳器、动态调试器、静态分析器、补丁等(这些工具是一些调试工具和逆向分析工具,因为软件破解、漏洞挖掘等会用到这些调试工具,因此称其为“软件攻击”工具)。常见的“网络(系统)防范”程序有“杀毒软件”、“防火墙”、“主动防御系统”等;常见的“软件防范”程序有“壳”、“加密狗”、“电子令牌”等。
根据前面提到的攻防两方面的内容,本书会涉及扫描器的开发、后门的开发、应用层抓包器的开发等黑客攻防方面的相关内容。本书还会讲解关于软件方面的知识,主要涉及PE结构、加壳、脱壳、逆向分析等一系列相关知识。由于技术的两面性,希望读者有一个良性的学习心态。
读者能从本书中得到什么
通过本书,读者能学到Windows下基于消息的软件开发、基于Winsock的网络应用程序的开发、软件逆向分析和调试知识等一系列的编程、调试及安全知识。在学习的过程中,读者应该大量阅读和参考其他相关资料,并且一定要亲自动手进行编程。编程绝对不是靠看书能够学会的!
通过本书的指导,再加上自身实践和练习,读者可以具备基本的 Windows 下的应用程序开发、网络程序开发的能力,基本的系统底层开发能力。除了相关开发能力外,读者还能具备初级的病毒分析能力、软件保护等相关的安全知识。
如何无障碍阅读此书
阅读本书的读者最好具有C和C++编程的基础知识,有其他编程语言基础知识的读者也可以无障碍阅读。无编程知识的读者阅读本书的同时,只要学习了本书中涉及的相关基础知识,同样可以阅读本书。
本书涉及范围较多,知识面比较杂,但是本书属于入门级读物,专门为新手准备,只要读者具备一定的基础知识,即可顺利进行阅读。在阅读本书的基础上,读者可以接着学习更深层次的知识,希望本书能帮助读者提高自身的能力。
建议:请读者深入学习操作系统原理、数据结构、编译原理、计算机体系结构等重要的计算机基础知识。
免责
本书属于入门级图书,无法保证读者成为黑客。作者本人也不是黑客,但是至少要有一个成为黑客的想法和成为黑客的动力。因此,如果本书没能达到读者所期待的目标,那么也请恕笔者无奈,笔者只是带领读者入门。
本书中内容主要用于教学,指导新手如何入门、如何学习编程知识,从编程的过程中了解黑客编程的基础知识。请勿使用自己的知识做出有碍公德之事,在准备通过技术手段进行蓄意破坏时,请想想无数“高手”的下场。读者如若作奸犯科,与作者本人和出版社无任何关系,请读者自觉遵守国家法律。
由于作者水平有限,书中难免会有差错,敬请谅解。中肯取代无礼,客观代替谩骂。
编辑联系邮箱:zhangtao@ptpress.com.cn。