内容提要
C++ 黑客编程揭秘与防范(第2版)
市面上关于黑客入门的书籍较为繁多,比如黑客图解入门、黑客工具详解、黑客木马攻防等。但是,对于很多读者来说,可能并不是单单掌握简单的工具使用就能满足的。很多读者学习黑客知识是为了真正掌握与安全相关的知识。与安全相关的知识涉及面比较广,包括数据安全、存储安全、系统安全、Web 安全、网络安全等,本书围绕Windows 系统下应用层的开发来介绍一些关于安全方面的知识。
本书是《C++黑客编程揭秘与防范》的升级版,在前书的基础上新添加了一些内容,同时也删除了一些过时的内容。本书以Win32 应用层下安全开发为中心,介绍Windows 系统下的安全开发。
本书介绍了操作系统的相关操作,比如进程、线程、注册表等知识。当读者掌握了关于进程、线程、注册表等相关的开发知识后,就可以把一些常规的操作进程、注册表、文件等用代码进行实现,这样,一些日常的操作可与学习的编程知识相结合。除了操作的知识外,本书还介绍了关于网络应用程序的开发,了解Winsock 的开发后,读者就会明白在应用层客户端与服务器端通信的原理。当然,本书除了介绍Win32 开发外,还介绍了PE 结构、调试接口、逆向等相关的知识。本书的最后部分介绍了关于恶意程序、专杀工具、扫描器等工具的开发。读者只要将前面章节的知识掌握后,后面的实例部分就水到渠成了。
序
C++ 黑客编程揭秘与防范(第2版)
我与冀云兄因黑客反病毒论坛结识于一年前,在认识初期就能感觉到冀云兄是一个非常踏实且又富有思想的人,对安全编程的诸多方面也有自己独到的认识,这点令我十分欣赏。认识几个月后,通过一次无意的聊天,我有幸读到冀云兄《C++黑客编程揭秘与防范》第1版,而后承冀云兄高看,才得以诞生此序。
通过阅读《C++黑客编程揭秘与防范》第1版,我有一种相见恨晚的感觉。这本书从最基本的Windows编程到Windows下的各种安全编程技术都有涉及,例如PE文件、DLL注入技术、各种Hook技术、后门编写的技术关键点,乃至像MBR的解析这种很难涉及的点与Rootkit编程这样比较深入的面,都有恰到好处的介绍与详解。
因此,就整书而言,将诸如文件/注册表操作、网络通信、PE文件、Rootkit、逆向工程等数个知识点有效组织在一起,是一个非常巨大的工程。这一点对于有过类似写作经验的我来说,体会尤其深刻。但是不得不说,作为读者,我真的非常幸运,这本书基本上完成了这个艰巨的任务。就我个人而言,这本书至少可以被当成一部“技术字典”来使用。当我在实际的工作中对某种技术生疏后,可以拿起这本书翻一翻,顿时会感觉受益匪浅。
从整书的结构以及知识的组织方式来看,不难发现,这其实是一本相当重视初学者技术的图书。作者在第1章中对于工作环境的搭建以及对应IDE的使用都做了必要的介绍,而后又通过第2章使用一个非常有趣且简单的例子教读者如何打造一个木马的雏形,这些无不体现出了作者对于基础薄弱的读者的细心照顾。
除此之外,当前的政策环境以及社会整体的大环境都对信息安全产业释放了大量的利好信号,无论是十八大时国家将信息安全提到国家战略层面,还是随后发生的著名“棱镜门”事件,抑或是当前势不可挡的移动互联网大潮,都在预示着信息安全领域在未来势必将摆脱“边缘群体”,进而成为“主流群体”中重要的一员,这些改变势必将极大地加剧当前信息安全领域人才的稀缺现状。但是,我相信本书定会为中国的信息安全领域崛起贡献一份力量,进而使得更多的读者从信息安全的“门外汉”成为“圈内人”,以缓解现在信息安全领域人才稀缺的现状。
——任晓珲[A1Pass],北京蓝森科技有限公司创始人,
15PB计算机高端培训品牌创始人,《黑客免杀攻防》作者
甲午年正月十二于北京朝阳
前言
C++ 黑客编程揭秘与防范(第2版)
备受关注的黑客到底是什么
“黑客”已经成为一个热门的话题,“黑客事件”更是已经受到各大媒体的关注,甚至很多媒体对黑客事件进行不负责任的报道与炒作。从传统媒体到互联网媒体,从平面媒体到多元化的媒体平台,都在报导黑客事件,报道新爆发的蠕虫、病毒等一系列相关事件。
在各种媒体的炒作下,越来越多的年轻人都在追逐“当黑客的潮流”,很多热爱计算机的年轻人都追求自己能成为黑客。很多人都期望自己能一蹴而就成为一名顶级的黑客。很多人读着“头号电脑骇客”凯文米特尼克的传奇故事,在波涛汹涌的心情下,幻想着自己也能成为网络上出神入化的黑客风云人物。为此,很多“追黑”的网友深入各大黑客网站下载各种黑客工具来进行入侵、破坏(在用别人工具的同时,说不定也会遭到一些不怀好意的黑客网站的暗算,比如自己用的黑客工具本身就被放置了后门),从而满足自己追求成为黑客的心理。
在追求成为黑客的过程中真地学到了多少知识,自身的技术水平距离真正的黑客到底还有多远,这是很多只会使用工具的黑客应该冷静下来认真思考的问题。他们应该思考自己是否了解TCP、UDP、ICMP等TCP/IP中常用协议的结构与协议原理,是否知道ARP欺骗的原理,是否能独立开发并完成一个后门等。
什么是黑客?百度百科里黑客的含义如下(摘自百度百科,且有改动):
“热衷研究、撰写程序的专才,精通各种计算机语言和系统,且必须具备乐于追根究底、穷究问题的特质。‘黑客’一词是由英语Hacker音译出来的,是指专门研究、发现计算机和网络漏洞的计算机爱好者。早期在美国的电脑界是带有褒义的。”
看到上面百度百科给出的黑客含义后,是不是很多只会使用工具的所谓的黑客能明白一个道理,即黑客是要会编写程序的?
再看一下百度百科里对只会使用工具的黑客的解释(摘自百度百科):
“脚本小子,英文script kiddie 或 script boy。脚本小子指的是用别人写的程序的人。脚本小子是一个贬义词,用来描述以黑客自居并沾沾自喜的初学者。”
那些自以为是的工具黑客只不过是一个“脚本小子”,还是一个被大家所“鄙视”的“小子”。是不是心里觉得不是很舒服了?是不是觉得自己应该提高了?如果是的话,那么就请抛开以前当工具黑客的想法,开始编写黑客工具吧!
心态影响成长
新手可能会问:编写自己的黑客工具是不是很难,是不是要懂编程语言,要懂哪种编
程语言呢?笔者的回答是肯定的。抛开用工具当黑客的想法,其实是让大家抛开浮躁的想法,认真地学一些真正的技术,哪怕只是一些入门的基础。想做黑客就要有创新、研发的精神,如果只是做一个只会用软件的应用级的计算机使用者,那么必定永远达不到黑客级的水平,因为工具人人都会用,只是比别人多知道几个工具而已。抛开浮躁,静下心来从头开始学习基础,为将来的成长做好足够的准备。
攻防的广义性
黑客做得最多的就是“入侵”,这里所说的入侵不是一个狭义上的入侵,因为它不单单针对网络、系统的入侵。这里说的是一个广义上的入侵,“入侵”一词是指“在非授权的情况,试图存取信息、处理信息或破坏系统以使系统不可靠、不可用的故意行为。”由此可以看出,入侵并非单指网络或系统。这里说的“入侵”包括两个方面,一个是针对网络(系统)方面的入侵,另一个是针对软件的入侵。网络的入侵是通常意义上的入侵,而软件的入侵通常就是人们说的软件破解(包括漏洞挖掘等内容)。无论是侵入别人系统,还是破解某款软件,都是在非授权的情况下得到相应的权限,比如系统权限或者软件的使用权限。
本书讲点什么
本书针对“网络入侵”和“软件入侵”两方面来介绍黑客编程,从攻防两个角度来学习黑客编程的知识,通过一系列知识体系完成“黑客编程”的养成计划。
本书会介绍大量的基础知识,这些基础知识看起来与普通的应用程序编程没有什么差别。其实,所谓 “黑客编程”(也称为“安全编程”),“是指采用常规的编程技术,编写网络安全、黑客攻防类的程序、工具”。因此,普通的编程技术与黑客编程技术并没有本质的差别,只是开发的层面不同。普通的编程注重的是客户的需求,而黑客编程注重的则是攻与防。
黑客编程有其两面性,按照攻防角度可以分为“攻击类入侵编程”和“防范类安全编程”。结合上面提到的“网络”和“软件”两方面来说,常见的“网络攻击”程序有扫描器、嗅探器、后门等;常见的“软件攻击”程序有查壳器、动态调试器、静态分析器、补丁等(这些工具是一些调试工具和逆向分析工具,因为软件破解、漏洞挖掘等会用到这些调试工具,因此称其为“软件攻击”工具)。常见的“网络(系统)防范”程序有“杀毒软件”、“防火墙”、“主动防御系统”等;常见的“软件防范”程序有“壳”、 “加密狗”、“电子令牌”等。
根据前面提到的攻防两方面的内容,本书会涉及扫描器的开发、后门的开发、应用层抓包器的开发等黑客攻防方面的相关内容。本书还会讲解关于软件方面的知识,主要涉及PE结构、加壳、脱壳、逆向分析等一系列相关知识。由于技术的两面性,希望读者有一个良性的学习心态。
读者能从本书中得到什么
通过本书,读者能学到Windows下基于消息的软件开发、基于Winsock的网络应用程序的开发、软件逆向分析和调试知识等一系列的编程、调试及安全知识。在学习的过程中,
读者应该大量阅读和参考其他相关资料,并且一定要亲自动手进行编程。编程绝对不是靠看书能够学会的!
通过本书的指导,再加上自身实践和练习,读者可以具备基本的Windows下的应用程序开发、网络程序开发的能力,基本的系统底层开发能力。除了相关开发能力外,读者还能具备初级的病毒分析能力、软件保护等相关的安全知识。
如何无障碍阅读此书
阅读本书的读者最好具有C和C++编程的基础知识,有其他编程语言基础知识的读者也可以无障碍阅读。无编程知识的读者阅读本书的同时,只要学习了本书中涉及的相关基础知识,同样可以阅读本书。
本书涉及范围较多,知识面比较杂,但是本书属于入门级读物,专门为新手准备,只要读者具备一定的基础知识,即可顺利进行阅读。在阅读本书的基础上,读者可以接着学习更深层次的知识,希望本书能帮助读者提高自身的能力。
建议:请读者深入学习操作系统原理、数据结构、编译原理、计算机体系结构等重要的计算机基础知识。
免责
本书属于入门级图书,无法保证读者成为黑客。作者本人也不是黑客,但是至少要有一个成为黑客的想法和成为黑客的动力。因此,如果本书没能达到读者所期待的目标,那么也请恕笔者无奈,笔者只是带领读者入门。
本书中内容主要用于教学,指导新手如何入门、如何学习编程知识,从编程的过程中了解黑客编程的基础知识。请勿使用自己的知识做出有碍公德之事,在准备通过技术手段进行蓄意破坏时,请想想无数“高手”的下场。读者如若作奸犯科,与作者本人和出版社无任何关系,请读者自觉遵守国家法律。
由于作者水平有限,书中难免会有差错,敬请谅解。中肯取代无礼,客观代替谩骂。
编辑联系邮箱:zhangtao@ptpress.com.cn。
目录
前言
第1章 黑客编程入门
第2章 黑客网络编程
第3章 黑客Windows API编程
第4章 黑客内核驱动开发基础
第5章 黑客逆向基础
第6章 加密与解密
6.1 PE文件结构
6.2 详解PE文件结构
6.3 PE结构的3种地址
6.4 PE相关编程实例
6.5 破解基础知识及调试API函数的应用
6.6 调试API函数的使用
6.7 打造一个密码显示器
6.8 KeyMake工具的使用
6.9 总结
第7章 黑客高手的HOOK技术
第8章 黑客编程实例剖析
附录 反病毒公司部分面试题
参考文献