悔恨的阿毛
【科普文】如何成为一个黑客,欢迎探讨指教~~

本帖最后由 悔恨的阿毛 于 2014-3-31 20:02 编辑

写这篇文的主要目的,首先是作为新人来报个道吧……同时也请各位童鞋多多关照,初次见面,叫我阿毛就好~~~

之前一直是属于潜水党(潜水两年你还好意思说,喂!),一直觉得技术宅是个有爱的社区……之前也在这里得到帮助,所以也想把这个写给想成为黑客的各位。

1.想成为黑客?首先你得知道自己为什么想成为黑客?

首先参看什么是黑客

如果你想成为的不是上述链接中描述的“脚本小子”,那么欢迎你继续看下去+293+

嗯……作为一个码农,我首先想强调一点,如果你打算成为一个黑客,成为一个技术宅,不管你的动机是想要获得众人仰慕还是能期望获得自我满足,都没有任何问题,但你首先要想清楚一个问题

2.你是否具有足够的时间和精力来学习黑客需要的知识?

成为黑不是一件简单的事情,如果你认真的翻阅了维基百科关于黑客的描述,那么你知道我说的黑客肯定不是脚本小子。

我们来看看关于黑客基础的描述:

需要精通的基础

英语,目前世界互联网70%网站都是英文网站,非常多的资源都是由英语撰写的,所以成为一名黑客,英语是必须精通的基础之一。

网络/操作系统,精通网络如TCP/IP以及网络原理,才能成为一名“硬件型黑客”。而对操作系统的熟悉与精通,才能更深入去学习如何入侵它们以及发现它们当中的漏洞。

编程语言,必须精通汇编语言、C、C++、.Net、数据库、SQL、网络程序设计。

对任何事查根究底的好奇心与批判性的思考。

对未知的探索。

具有高道德水平,不随意攻击或篡改他人的电磁纪录。

不管是英语,网络/操作系统,还是编程语言(姑且不谈什么高道德水平)任何一个学科拿出来,都是需要花费很长时间才能学好的东西。

之前网上很流行“xxx论坛内部渗透教程资料”“xxx10天d站教程”这种名字的东西,大部分都是打着速成旗号想要吸引外行去给他们网站制造流量的作品。

实际上,短时间内你根本无法获得足够的知识来支撑你的“渗透”行为。

没有扎实的基础,只想用别人的工具或者现成程序来完成“黑客”工作的,基本上都很难成功。

拿我的例子来说,两年半之前,我买了一本《python灰帽子》,但是直到现在,我才有足够的基础知识让我能看懂这本书。+322+

所以你才需要问自己,是否有足够的时间,精力以及毅力来学习这些基础知识,让自己具备成为一个黑客的资质。如果有的话,欢迎你接下来继续看下去。

3.成为一名黑客究竟需要什么样的基础知识?

看到这里,你可能想问,那我想成为黑客,究竟需要学些什么基础知识呢?

你可以尝试一下问自己这个问题:

我想成为什么样的黑客?

或者说:

我想成为的黑客是做什么的呢?

如果你对这个问题还没有答案,那么希望你能找到自己的答案。

在我了解的范围内,能够被称为黑客的人往往做着下面几件事:

1.精通加密解密知识,往往从事商业软件和游戏的破解工作。

2.编写漏洞利用程序,进行 低层 网络安全/系统安全 测试和修复的人

3.web漏洞利用者。

4.开发者,开发各种各样很有用的工具程序,主要是桌面应用/web应用/app开发。

公共基础

1.计算机基础(嗯嗯,就大学那本文化基础,什么?计算机你都不会用就想成为黑客?)

2.英语,虽然要求不是很高,但你要起码能看懂英文文档,很多时候你都得不到别人的帮助,只能靠自己去外国网站查阅资料,很多程序设计语言的文档也是英文的。如果你还想接触最新的技术,也得学会英语。

如果你想成为第一种人,,你还需要(难度系数5)

1.一门编程语言,最好是c/c++,他们有助于你理解程序执行的过程,在没有源代码的情况下对程序进行观察调试,获取函数注入点,如果想要进阶,还需要了解汇编。

2.计算机组成原理,操作系统。这些知识让你了解程序执行过程,从而从原理上理解如何debug一个程序。

3.相应操作系统的api手册。如果是windwos,就是windwos api手册,如果是别的操作系统,以此类推,例如,你想在psp上面进行破解活动的话,就得有psp平台的api手册,了解其内部运作过程(破解之前起码得知道怎么才能写出相应平台的应用程序吧?)

4.密码学(加密解密)/基本的算法,数据结构知识。很多数据都是加密过的,起码也进行过压缩,如果对密码学没有基础的了解,没有办法进行后续活动。

5.各种调试器的使用。

如果你想成为第二种人(难度系数5)

1.一门编程语言,最好是c/c++,理由同上

2.计算机组成原理,操作系统。理由同上

3.计算机网络,通过这门课程,了解网络协议是如何实现的,了解计算机和计算机是如何通信的(如果不了解这些过程, 你甚至连人家文章/教程 里用的专业术语都看不懂),虽然网络协议本身并不是太复杂,但是很多细节问题需要弄清除,还是挺费劲的。

4.密码学(加密解密)/基本算法,数据结构知识

5.一些常用分析工具的使用,比如wireshark这种抓包工具,记住,做安全检测的前提是能拿到人家的数据。

如果你想成为第三种人(难度系数:4)

1.一门编程语言,最好是一门流行的web程序设计语言,比如php,java,python,ruby等等。寻找web漏洞的基础,是知道怎么进行web开发,如果你连web应用程序都不能写的话,要找出漏洞基本是不可能的。

2.计算机网络,理由同上,这样你才能了解web程序的工作过程,知道漏洞从哪里产生,怎么利用。

3.常用分析工具的使用,可以尝试学习backbox linux,里面有很多方便的测试工具。MYSQL灯数据库软件的使用。这样你才能明白诸如sql注入之类的概念。

如果你想成为第四钟人(难度系数 3)

想做一个伪春菜?想做一个b站字幕下载器?这个类型的人就是你的目标1.一门编程语言,随你的喜好就好,几乎大多数语言都拥有开发各种类型程序的能力。比如跨平台的c/c++,java,ios的ojbective-c,python等等。

2.你想开发的应用程序类像相关的专业知识。包括各种系统api。

3.图形界面程序设计知识,比如windwos的mfc,跨平台的qt,安卓的java sdk。

学习流程

说说简单的学习流程吧

1.首先是英语,英语是没有必要专门学习的--除非你根本从来没学过英语--在用的时候查就好,慢慢积累就能全都弄懂。

2.首先可以从一门编程语言开始,选择任何一门都可以,高级语言或者比较低层的语言都行。高级语言:java,php,python,ruby,c#等等。比较低层的语言c/c++.vb的话不推荐学习,因为实用的场合比较少。先学高级语言或者低级语言都没关系,反正到后面肯定会有需求两者都需要掌握一点。从高级语言开始学有助于提升学习兴趣,因为高级语言比较容易能作出东西,比较有成就感,而c/c++则比较枯燥乏味。学完基本语法之后,可以从游戏编程或者图形界面编程开始,有助于提升学习兴趣。学程序重在实践,三分理论7分代码,记得多敲代码。

3.学会一门编程语言之后,可以开始学习操作系统等知识,也可以放置不管,直接学习系统api(比如windwos编程),在学习系统api编程的过程中,应该能慢慢了解一些操作系统的原理和运作流程。在这同时来学习操作系统,是一个比较好的选择。

4.等到你能自己开发应用程序了,就可以开始学习破解相关的知识了,这个阶段,起码能看懂各种破解的思路和教程。这个阶段,一边学习一些加密解密的知识,自己一边尝试写一个完整的应用出来,并掌握程序调试的相关知识,了解诸如函数调用约定这类的知识,知道如何通过api获取系统内别的进程的相关信息。

5.到了这个阶段,基础知识准备完毕,可以去找一些东西练手,剩下的就没有明显的流程了,是一个需要什么知识学习什么知识的阶段。

推荐书籍:

计算机基础:如果你会用电脑的话,这部分你可以免去了。

程序设计语言

《c语言程序设计现代方法》,经典教材,600页左右,对c语言做了深入讲解,对c语言编译器特性也做了一些说明,适合了解这门语言和它的本质。

《c++ primer》c++经典入门教材,看完之后进阶可以考虑各种标准库教材《c++标准库》之类的。

《细说php》一本php web编程的经典书籍

《python核心编程》我用的这本,感觉挺不错~~,进阶可以使用《python cookbook》和《python标准库》,后两本书实际上用来作为手册查。

算法,数据结构

任何一本大学教材,略读一遍即可,以后用的时候再来查。

操作系统

任何一本大学教材即可,最好选用国外的书,讲解比较容易理解。

计算机网络

推荐谢希仁的《计算机网络》,比较不错,当然买外国教材也可以的。

加密解密

直接去看雪论坛吧,里面有很多经典资料。

欢迎交流:

我的github:https://github.com/winkidney

我的blog: http://blog.gg-workshop.com