我对电脑什么都不懂就会玩!会DOS!想学编程.不知道从哪干起!
前几天在网上看了“病毒”兄写的《WIN下编程须知》一文,觉得在编程方面要写出一篇适合初学者们看的入门级文章的确很重要,可惜病毒兄只在该文里介绍了线程、消息、句柄等几个基本概念。很多初学者看了对编程还是感到很迷惑,一个从来没有写过程序的人如何入门?如何在短时间内写出自己的程序来?笔者带着这些问题写了这篇文章。这也是笔者在学习编程的初期所遇到的困惑,在此根据笔者的个人理解将其整理成文,希望能引起广大菜鸟们的共鸣,对初学者们有所帮助。
从理论上说,任何一门语言都可以在任何一个系统上编程,只要找到该系统提供的“接口”和对系统内部机制有深入的了解就可以了,至少我是这么认为的。正如c语言可以在windows下编程,也同样可以在Linux上大放异彩一样。
编程是一项很繁杂的工作,除了应用编程工具之外,了解系统本身内部工作机理非常重要,这是你写出稳定兼容的程序所必不可少的前提条件。你要在哪一种系统上编程就要对该系统的机制进行研究,至少你应该知道一个程序在那个系统上是如何运行的。
一、了解Windows 内部机制
Windows 是一个“基于事件的,消息驱动的”操作系统。
在Windows下执行一个程序,只要用户进行了影响窗口的动作(如改变窗口大小或移动、单击鼠标等)该动作就会触发一个相应的“事件”。系统每次检测到一个事件时,就会给程序发送一个“消息”,从而使程序可以处理该事件。
每个Windows 应用程序都是基于事件和消息的,而且包含一个主事件循环,它不停地、反复地检测是否有用户事件发生。每次检测到一个用户事件,程序就对该事件做出响应,处理完再等待下一个事件的发生。
Windows 下的应用程序不断地重复这一过程,直至用户终止程序,用代码来描述实际上也就是一个消息处理过程的while循环语句。
下面便简单介绍一下与 Windows 系统密切相关的几个基本概念:
⒈窗口:这是我要说的之一个概念。似乎是地球人都知道的事儿了,窗口是Windows本身以及Windows 环境下的应用程序的基本界面单位,但是很多人都误以为只有具有标题栏、状态栏、更大化、最小化按钮这样标准的方框才叫窗口。其实窗口的概念很广,例如按钮和对话框等也是窗口哦,只不过是一种特殊的窗口罢了。
从用户的角度看,窗口就是显示在屏幕上的一个矩形区域,其外观独立于应用程序,事实上它就是生成该窗口的应用程序与用户间的直观接口;从应用程序的角度看,窗口是受其控制的一部分矩形屏幕区。应用程序生成并控制与窗口有关的一切内容,包括窗口的大小、风格、位置以及窗口内显示的内容等。用户打开一个应用程序后,程序将创建一个窗口,并在那里默默地等待用户的要求。每当用户选择窗口中的选项,程序即对此做出响应。
⒉程序:通常说的程序都是指一个能让计算机识别的文件,接触得最多的便是.exe型的可执行文件,这个不难理解。
⒊进程:说到进程,学过《操作系统》的人都很清楚,所谓进程就是应用程序的执行实例(或称一个执行程序)
需要注意的是:进程是程序动态的描述,而上面说到的程序是静态的描述,两者有本质的区别。举个例子,从网上
Down了一个瑞星杀毒软件到C盘但没有运行,那个.exe 可执行文件叫做程序,它是一个二进制码的文件。一旦双击了exe文件图标运行程序,那个“正在运行着的瑞星杀毒”便称为进程,它在双击的那一刻被系统创建,当你关机或者在任务栏的图标上单击鼠标右键选“退出”时,进程便消亡,彻底结束了生命。进程经历了由“创建”到“消亡”的生命期,而程序自始至终存在于你的硬盘上,不管你的机器是否启动。
⒋线程:线程是进程中的一个执行单元,同一个进程中的各个线程对应于一组CPU指令、一组CPU寄存器以及一堆栈。进程本来就具有动态的含义,然而实质上是通过线程来执行体现的,从这个意义上说,Windows 中进程的动态性意义已经不是很明显了,只算是给程序所占的资源划定一个范围而已(个人观点,纯属个人理解,不必引起争议!),真正具有动态性意义的是线程。以前在大二学习操作系统课的时候就有个同学跟笔者提起这点,笔者还跟他驳得面红耳赤呢!现在想想,觉得很有道理,不得不佩服那位同学对Windows内部机制了解得如此清楚。
之所以在此花那么多的篇幅说线程,是因为下面将要介绍到多线程编程技巧,如果不理解这点,那就很难应用到实践上,希望大家明白。
⒌消息:我们几乎做每一个动作都会产生一个消息,在用鼠标指点江山的今天,鼠标被移动会产生WM_MOUSEMOVE消息,鼠标左键被按下会产生WM_LBUTTONDOWN的消息,鼠标右键按下便产生WM_RBUTTONDOWN消息等等。所有的这些都可以通过GetMessage,SendMessage等函数得到,以后的操作中我们会经常接触到这些函数。
⒍事件:何谓事件?从它的字面意思我们就可以明白它的含义,如在程序运行的过程中改变窗口的大小或者移动窗口等,都会触发相应的“事件”。
⒎句柄:单单一个“柄”字便可以解释它的意思了,我们天气热摇扇子的时候只要抓住扇柄便可以控制整个扇子的运动了,在程序中也差不多是这个意思。通常一个句柄就可以传递我们所要做的事情。有经验的读者肯定清楚,编写程序总是要和各种句柄打交道的,句柄是系统用来标识不同对象类型的工具,如窗口、菜单等,这些东西在系统中被视为不同类型的对象,用不同的句柄将他们区分开来。
看看C++ 教材中是如何给句柄下定义的:“在Win32里,句柄是指向一个无值型对象(void *)的指针,是一个4字节长的数据”。虽然我对它的本质是什么还是很迷惑,但我知道句柄并不是一个真正意义上的指针。从结构上看,句柄的确是一个指针,尽管它没有指向用于存储某个对象的内存位置(很多书都这么说,这正是我的迷惑所在),而实际上句柄指向的是一个包含了对该对象进行的引用的位置。在编程时,只要抓住了对象的句柄就可以对该对象进行操作了(我在《一个简单木马程序的编写与伪装策略》中说到的对 *** 密码的截获就是要找到 *** 登陆窗口的句柄后才开始截密行动的)。下面再举个例子来说明句柄的运用:编一个程序,使 *** 登陆窗口的号码框和密码框均变黑,相关代码及解释:
void __fastcall Tform1::formCreate(TObject *Sender)
{
HWND hCurWindow,HC,HE;//定义三个窗口句柄变量,hCurWindow用于存放 *** 用户登陆窗口的句柄,HC、HE分别存放//号码框和密码框的句柄。
if((hCurWindow= FindWindow(NULL," *** 用户登录"))!=0 (hCurWindow=FindWindow(NULL,"OICQ用户登录"))!=0)
{//很明显,调用FindWindow()函数去获得 *** 登陆窗口的句柄
String str;
str.sprintf("0x%x",hCurWindow);
}
TCHAR wClassName[255];//类名变量
HC=GetWindow(hCurWindow, GW_CHILD);//得到号码框的句柄
HE=GetWindow(HC, GW_HWNDNEXT);//接着得到密码框的句柄
GetClassName(HE, wClassName, sizeof(wClassName));//得到类名
GetClassName(HC, wClassName, sizeof(wClassName));//得到类名
EnableWindow(HE,false);//使窗口失效
EnableWindow(HC,false);//使窗口失效
}
以上代码在C++ Builder下编译通过,只要运行次程序, *** 登陆窗口的号码框和密码框马上变黑色,无非是
EnableWindow()函数所起的作用。
你还可以添加一个Timer控件,将上面的代码copy到void __fastcall Tform1::Timer1Timer
(TObject *Sender)函数中,并在后边加上这一句代码:
SendMessage(hCurWindow,WM_CLOSE,0,0); 使 *** 一启动就关闭,让别人永远也用不了 *** ,挺有趣儿的哦:).
⒏API与SDK:API是英文 Application Programming Interface 的简称,意为“应用程序接口”,泛指系统为应用程序提供的一系列接口函数。其实质是程序内的一套函数调用,在编程的时候可以直接调用,而不必知道其内部实现的过程,只知道它的原型和返回值就可以了,此外,手头经常放着一本“Windows API大全”之类的书也是必不可少的,不然你根本不知道哪些API是干什么用的,瞎编也编不出什么东西来。在后面我们会介绍调用API编程的例子,调用API编程工作虽然烦琐,但由于API函数都被封装在dll库里,程序只有在运行的时候才调用的,因此程序的体积小而且运行效率高。
SDK是英文 Software Development Kit 的缩写,指“软件开发工具包”,在防火墙的设计中就经常涉及到SDK。
有关基本的概念就谈这些,那些C/C++的基本语法、什么是面向对象等知识请大家查阅相关的书,此类书籍各大书店已汗牛充栋,不再多叙。下面直接谈谈语种和编程工具的选择问题,这也是初学者们最迷惑的问题。
⒉写程序:问题可谈到点子上了,学那么多语言,读那么多程序最终还不是为了写程序,做出适合需要的软件来?“君子性非异也,善加于物也”,笔者认为一切从借鉴开始,先是修改别人的程序,等到有了一定的程度再写出属于自己的程序。
刚开始写程序,不要奢望一下子写出很出色的程序来,“万丈高楼平底起”,编程贵在动手,只要你动手去写了,就算只有一句“printf(“Hello!”);”也是一次进步!此外,还要依照自身的能力循序渐进地写,开始的时候写一点功能简单的、篇幅短小的代码,力求简洁、完整,“麻雀虽小,但五脏俱全”,然后在此基础上进行扩充,一点一点添加功能,下面笔者摘录一位国内一流编程高手、“豪杰超级解霸”的作者梁肇新的编程心得,请大家看
看一个成功的程序员是如何写程序的,希望对广大菜鸟有所启发:
写程序的 *** :在Win98的环境中,先写主干,用最少的代码实现最基本的功能。然后一点点添加功能,每加一点都要调试。尽量少用动态分配、全局变量。充分利用操作系统直接提供的API。在Win98下调试通过之后,再在Win95下调试通过,然后是Win97,WindowsME,WinNT4.0。这样才能写出稳定、快速的程序。
给程序员的建议:1、不要急于求成,这样往往欲速不达。2、不要什么东西都想学,什么都没掌握。3、每天都要自我总结,分析自己的错误率和废码率,不断加强自我管理。4、代码格式很重要。代码要规范、严谨,效率要高。5、不要盲从简单的开发工具(这点笔者不是很同意,最起码要有一定的功底的人才敢这么说)。6、有了成果要公开,
不要舍不得,不然很快会过时的(以上两段摘自《程序员》增值合订本2001.上册P18,请读者前往参考)。
参考书籍:
《Windows C 程序设计》,清华大学出版社
《超级解霸梁肇新》,《程序员》合订本
黑客编程的几个基本技巧
以下将要谈到的几个基本技巧很重要,虽然对于编程高手来说这是在玩小孩子把戏,但对于一位初学者,掌握以下几个技巧将为你的编程扫清道路,而且很容易编写出有趣的程序,培养你对编程的兴趣。
技巧⒈学会修改注册表。
相信大家都知道当浏览了一些网页恶意代码,IE标题、默认主页等被改得面目全非,这就是通过改动注册表来更改系统设置的例子。Windows中的注册表是个好东东,它是windows系统的灵魂,是许多软件记录数据的地方(当然也包括windows本身)。windows通过它记录大量的数据,然后在下一次启动时再读取相应的数据来设置系统。通过控制注册表就可以控制整个系统,所以很多的黑客程序都在注册表上动手脚(尤其是木马程序和作恶剧程序),
学会修改注册表可以实现一些有趣而强大的功能。我们完全可以通过编程来操作注册表,达到与手动更改注册表 编辑器产生一样的效果。“超级兔子”中的大部分功能就是通过修改注册表来完成的。操作注册表有专门的API函数,大家可以参考有关资料,下面笔者以C++ Builder为例说明如何在程序中操作注册表:
程序二:编程修改IE标题内容
新建一个工程,在Unit1.h文件中包含Registry单元:
#include
然后就可以在.cpp文件操作注册表了,接着来!在窗体的OnCreate()里加入以下代码(你可以在try{}里面加入
任何操作注册表的代码):
TRegistry* Registry;
Registry = new TRegistry();创建一个TRegistry类型的对象Registry,用于修改注册表。
try{
Registry-RootKey = HKEY_CURRENT_USER;//设置主键,这是必不可少的,设置好主键后,就可以操作这个主
//键下所有的键值了。
if( Registry-OpenKey("Software\Microsoft\Internet Explorer\Main",FALSE))//调用OpenKey()
//打开.
//括号里所指的键
{
Registry-WriteString("Window Title",”台湾是中国的一部分,世界上只有一个中国!”);
//调用WriteString()往注册表里写入IE标题
Registry-CloseKey();//关闭该键
}
else
{//如果打开失败的话
Registry-CreateKey("Software\Microsoft\Internet Explorer\Main");//就调用CreateKey()
//新建上述键
Registry-WriteString("Window Title","台湾是中国的一部分,世界上只有一个中国!");//再写入//IE标
//题内容
Registry-CloseKey();//最后关闭该键,这个也不能忽视,它跟上面的OpenKey成对使用的}//End of try
__finally
{//要是出错,跳到这里处理
Registry-CloseKey();//关闭所要打开的键
delete Registry;//销毁Registry对象,释放资源。
}
编译运行上面的代码就可以将IE的标题改为“台湾是中国的一部分,世界上只有一个中国!”了。笔者写了个小程序,可以测出当前的IE标题和默认主页是什么,并可随意修改他们,还可以禁止别人修改你的默认主页和注册表编辑器.。
技巧⒉调用API编程
其实这是最简单的,API是系统在DLL里为我们提供的程序接口,可以直接调用的。只要我们有一本《WindowsAPI大全》之类的书就足够了,下面举个简单的例子:
程序三:调用API函数隐藏Windows的任务栏:
HWND WndHandle;//定义句柄类型变量
WndHandle=FindWindow("Shell_TrayWnd",NULL);//调用API函数FindWindow()获得任务栏的句柄
ShowWindow(WndHandle,SW_HIDE);//再调用API函数ShowWindow()隐藏任务栏
大家看到,在上面调用API函数FindWindow()和ShowWindow()的过程中,只要我们知道函数的
名字和括号里的参数是什么就行了,至于实现的过程不必理会,也轮不到我们这些菜鸟去理会:)学会调用API,你可以写出功能强大的程序来,这一技巧对于初学者来说是必须掌握的(代码请参考黑防光盘)。
技巧⒊多线程编程技术
通过上一篇的介绍 ,大家都很清楚线程的概念了,它是进程内部的一个执行单元(如一个函数等),上期说了那么多理论,现在该派上用场了。编写多线程应用程序是指使程序在运行时创建多个线程并发地运行于同一个进程中。今年6月份横空出世的“中国黑客”病毒不是采用了全球独创的“三线程技术”吗?虽然笔者没机会分析它的样本代码,但此种病毒的工作效率如此之高是与它的多线程技术分不开的。
使用多线程技术编程有如下优点:
①提高CPU的利用率。由于多线程并发运行,可以使用户在做一件事情的时候还可以做另外一件事。特别是在多个CPU的情况下,更可以充分地利用硬件资源的优势:将一个大任务分成几个小任务,由不同的CPU来合作完成。
②采用多线程技术,可以设置每个线程的优先级,调整工作的进度。
清楚了使用多线程技术的优势之后,下面便来谈谈如何在C++ Builder环境下开发多线程的应用程序,在C++ Builder 环境中,通过 TThread 类就可以很方便地编写多线程应用程序(但不能直接使用,因此要派生新类),
具体流程如下:
从TThread 类派生出一个新的线程类-创建线程对象-设置线程对象的属性项-挂起或唤醒线程(根据具体情况操作)-结束线程。
要说明一点的是:在应用程序中要合理地设置线程的优先级。不要因为某些线程的优先级很高而使其他一些线程因为等不到CPU的处理时间而被“饿死”,也不要因为线程的级别都差不多而导致的频繁切换花费大量的CPU时间。(本段引自《C++ Builder 5 编程实例与技巧》P284)。
技巧⒋让程序实现后台监控
这是一个很基本的技巧。如果你是一个木马程序的爱好者,当你阅读众多的木马源程序的时候,就会发现100%的木马程序都很注意自身的后台监控本领,也就是隐身技术,面对不同的系统要施展不同的对策才能实现。很多杀毒程序就采用了这种后台监控技术,使程序随着系统的启动而运行,然后在后台悄悄地监视系统的一举一动,一发现有不对路的程序就把它“揪”出来示众。实现程序的后台监控技术有如下几个关键:
①正常运行时,不显示程序的窗体;
②系统每次启动都自动运行程序一次;
③程序图标不显示在任务栏上;
④不显示在按Ctrl+Alt+Del 调出的任务列表中;
⑤通过热键可以调出隐藏的窗体
实现 *** :对于①,要不显示窗体,我们可以编辑WinMain函数,设置ShowMainform值为False就可以隐藏程序的窗体了。参考代码:Application-ShowMainform = false ;对于②,可以利用技巧1所介绍的 *** 修改注册表,
键值如下:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun ,使用的是WriteString()
*** 。这是冰河等多种旧木马惯用的启动手段之一(当然还有文件关联、注入dll等 *** );对于③,要使程序图标不显示在任务栏上,也很简单,调用API函数SetWindowLong 可以让程序运行后不出现在任务栏里,不过要放在窗体的OnCreate()里面。代码如下:
SetWindowLong(Application-Handle,GWL_EXstyle,WS_EX_TOOLWINDOW);
对于④,调用RegisterServiceProcess API 函数将程序注册成为一个服务模式程序,让它运行在较高的优先级下,就不会出现在程序列表中(对Win9X有效,WinNT/2000/XP下无效)。具体的代码请参考笔者的《一个简单木马程序的编写与伪装策略》一文,不在此重叙对于⑤,要先定义捕获Windows消息WM_HOTKEY的钩子函数,然后向Windows加入一个全局原子,并保留其句柄,最后向Windows登记热键,这个可以调用API函数RegisterHotKey来实现。
技巧⒌使用定时触发器
在C++ Builder 环境下,定时触发器即Timer控件,有时候我们希望程序隔一段时间重复执行相同的动作,比如对 *** 密码截获的时候,就要隔一段间隔寻找一次 *** 登录窗口。在C++ Builder中,只要将执行这些动作的代码放到一个Timer中去就OK了。
听说“中国黑客”病毒运行几分钟后就自动创建一个新的线程,用于寻找OICQ的“发送消息”窗口,在10分钟内一直在找,一旦找到就将“去*****功”等带有政治色彩的言论发送给受害者 *** 上的好友,10分钟后自动结束该线程。我想在查找“发送消息”窗口的10分钟内就运用了定时器,该病毒是用汇编开发的。可是在C++ Builder中是如何运用的呢?其实控件的出现使得编程变得很简单,添加一个Timer控件,设置几下控件的属性,
双击Timer控件,将代码放到里面去就行了。程序执行的时候,相隔指定的时间就重复执行里面的代码了。实际上笔者在上一期的“程序一”中寻找 *** 登录窗口时,就运用了定时器.
有关编程技巧的介绍到此为止,请读者参考另类书籍,掌握更多的黑客编程技巧,编写出受欢迎的黑客程序来。
五、Socket 编程与 *** 通信基础
由于本文的主题是“黑客编程基础”,而黑客是互连网上“来无影,去无踪”的黑衣人,如冰河、 *** 神偷等黑客程序都是基于互连网的,谈黑客编程离开 *** 编程就会大失其味。所以,下面接着谈谈 *** 编程,大凡基于 *** 应用的程序都离不开Socket。
Socket 为套接字之意,是作为计算机与计算机之间通信的接口。有关Socket的概念在第6期《黑客防线的《Socket 编程的基础和基本过程》一文中有详细的描述,请大家参考,不在此多叙。需要指出的是:Winsock是访问众多的基层 *** 协议的一种接口,在每个Win32平台上,它都以不同的形式存在着,Winsock 是 *** 编程的接口,不是协议,这是容易弄错的地方。
现在来谈谈Winsock 编程的过程,大凡在Win32平台上的Winsock编程都要经过下列的基本步骤:定义变量-获得Winsock版本-加载Winsock库-初始化-创建套接字-设置套接字选项-关闭套接字-卸载Winsock库,释放所有资源。
下面以一道极其简单的程序来说明如何进行Winsock编程。程序四:编一个程序来获取本地机器的IP地址。使用Winsock提供的API函数是最基本的 *** 技术,为了给初学者看个清楚,笔者打算在Visual C++ 和C++ Builder下各写一个,便于大家区分这两种不同的编程工具的特性(对于本程序来说,他们都差不多,而对于某些通信程序,他们实现起来就相差很远了,但本质是差不多的)。先来看Visual C++ 下的源程序,实现步骤:打开Visual C++ ,从“File”菜单中的“New”新建一个工程,选中“Win 32 Console Application”,意思是说生成的是Win32的控制台程序。另外,初学者要注意一点:只要程序中用到了 Winsock API 函数,都要在工程设置的Link 中增加 Ws2_32.lib 文件,不然程序将不能通过编译, *** 是:点击“Project”菜单,选择“Settings... ALT+F7” ,在弹出的“Project Settings”对话框右侧选“Link”标签,再在“Project Options”下方的编辑框中增加Ws2_32.lib文件,点“OK”就可以了。
shen me she hei ke
---什么是黑客?
Jargon File中对“黑客”一词给出了很多个定义,大部分定义都涉及高超的编程技术,强烈的解决问题和克服限制的欲望。如果你想知道如何成为一名黑客,那么好,只有两方面是重要的。(态度和技术)
长久以来,存在一个专家级程序员和 *** 高手的共享文化社群,其历史可以追溯到几十年前之一台分时共享的小型机和最早的ARPAnet实验时期。 这个文化的参与者们创造了“黑客”这个词。 黑客们建起了Internet。黑客们使Unix操作系统成为今天这个样子。黑客们搭起了Usenet。黑客们让WWW正常运转。如果你是这个文化的一部分,如果你已经为它作了些贡献,而且圈内的其他人也知道你是谁并称你为一个黑客,那么你就是一名黑客。
黑客精神并不仅仅局限于软件黑客文化圈中。有些人同样以黑客态度对待其它事情如电子和音乐---事实上,你可以在任何较高级别的科学和艺术中发现它。软件黑客们识别出这些在其他领域同类并把他们也称作黑客---有人宣称黑客实际上是独立于他们工作领域的。 但在本文中,我们将注意力集中在软件黑客的技术和态度,以及发明了“黑客”一词的哪个共享文化传统之上。
另外还有一群人,他们大声嚷嚷着自己是黑客,实际上他们却不是。他们是一些蓄意破坏计算机和 *** 系统的人(多数是青春期的少年)。真正的黑客把这些人叫做“骇客”(cracker),并不屑与之为伍。多数真正的黑客认为骇客们是些不负责任的懒家伙,还没什么大本事。专门以破坏别人安全为目的的行为并不能使你成为一名黑客, 正如拿根铁丝能打开汽车并不能使你成为一个汽车工程师。不幸的是,很多记者和作家往往错把“骇客”当成黑客;这种做法激怒真正的黑客。
根本的区别是:黑客们建设,而骇客们破坏。
如果你想成为一名黑客,继续读下去。如果你想做一个骇客,去读 alt.2600 新闻组,并在发现你并不像自己想象的那么聪明的时候去坐5到10次监狱。 关于骇客,我只想说这么多。
---黑客的态度
黑客们解决问题,建设事物,信仰自由和双向的帮助,人人为我, 我为人人。
要想被认为是一名黑客,你的行为必须显示出你已经具备了这种态度。要想做的好象你具备这种态度,你就不得不真的具备这种态度。但是如果你想靠培养黑客态度在黑客文化中得到承认,那就大错特错了。因为成为具备这些特质的这种人对你自己非常重要,有助于你学习,并给你提供源源不断的活力。同所有有创造性的艺术一样,成为大师的最有效 *** 就是模仿大师的精神---不是仅从理智上,更要从感情上进行模仿。
So,如果你想做一名黑客,请重复以下事情直到你相信它们:
1 这世界充满待解决的迷人问题
做一名黑客有很多乐趣,但却是些要费很多气力方能得到的乐趣。 这些努力需要动力。成功的运动员从健壮体魄,挑战自我极限中汲取动力。同样,做黑客,你必须
要有从解决问题,磨练技术,锻炼智力中得到基本的热望。如果你还不是这类人又想做黑客,你就要设法成为这样的人。否则你会发现,你的黑客热情会被其他诱惑无情地吞噬掉---如金钱、性和社会上的虚名。
(同样你必须对你自己的学习能力建立信心---相信尽管你对某问题所知不多,但如果你一点一点地学习、试探,你最终会掌握并解决它。)
2. 一个问题不应该被解决两次
聪明的脑瓜是宝贵的,有限的资源。当这个世界还充满其他有待解决的有趣问题之时,他们不应该被浪费在重新发明轮子这些事情上。 作为一名黑客,你必须相信其他黑客的思考时间是宝贵的---因此共享信息,解决问题并发布结果给其他黑客几乎是一种道义,这样其他人就可以去解决新问题而不是重复地对付旧问题。
(你不必认为你一定要把你的发明创造公布出去,但这样做的黑客是赢得大家尊敬最多的人。卖些钱来给自己养家糊口,买房买车买计算机甚至发大财和黑客价值也是相容的,只要你别忘记你还是个黑客。)
3. 无聊和乏味的工作是罪恶
黑客们应该从来不会被愚蠢的重复性劳动所困扰,因为当这种事情发生时就意味着他们没有在做只有他们才能做的事情---解决新问题。这样的浪费伤害每一个人。因此,无聊和乏味的工作不仅仅是令人不舒服而已,它们是极大的犯罪。 要想做的象个黑客,你必须完全相信这点并尽可能多地将乏味的工作自动化,不仅为你自己,也为了其他人(尤其是其他黑客们)。
(对此有一个明显的例外。黑客们有时也做一些重复性的枯燥工作以进行“脑力休息”,或是为练熟了某个技巧,或是获得一些除此无法获得的经验。但这是他自己的选择---有脑子的人不应该被迫做无聊的活儿。)
4 自由就是好
黑客们是天生的反权威主义者。任何能向你发命令的人会迫使你停止解决令你着迷的问题,同时,按照权威的一般思路,他通常会给出一些极其愚昧的理由。因此,不论何时何地,任何权威,只要他压迫你或其他黑客,就要和他斗到底。
(这并非说任何权力都不必要。儿童需要监护,罪犯也要被看管起来。 如果服从命令得到某种东西比起用其他方式得到它更节约时间,黑客会同意接受某种形式的权威。但这是一个有限的、特意的交易;权力想要的那种个人服从不是你的给予,而是无条件的服从。)
权力喜爱审查和保密。他们不信任自愿的合作和信息共享---他们只喜欢由他们控制的合作。因此,要想做的象个黑客,你得对审查、保密,以及使用武力或欺骗去压迫人们的做法有一种本能的反感和敌意。
5. 态度不能替代能力
要做一名黑客,你必须培养起这些态度。但只具备这些态度并不能使你成为一名黑客,就象这并不能使你成为一个运动健将和摇滚明星一样。成为一名黑客需要花费智力,实践,奉献和辛苦。
因此,你必须学会不相信态度,并尊重各种各样的能力。黑客们不会为那些故意装模做样的人浪费时间,但他们却非常尊重能力---尤其是做黑客的能力,不过任何能力总归是好的。具备很少人才能掌握的技术方面的能力尤其为好,而具备那些涉及脑力、技巧和聚精会神的能力为更好。
如果你尊敬能力,你会享受提高自己能力的乐趣---辛苦的工作和奉献会变成一种高度娱乐而非贱役。 要想成为一名黑客,这一点非常重要。
---基本黑客技术
黑客态度是重要的,但技术更加重要。态度无法替代技术,在你被别的黑客称为黑客之前,有一套基本的技术你必须掌握。 这套基本技术随着新技术的出现和老技术的过时也随时间在缓慢改变。例如,过去包括使用机器码编程,而知道最近才包括了HTML语言。但现在明显包括以下技术:
1 学习如何编程
这当然是最基本的黑客技术。如果你还不会任何计算机语言,我建议你从Python开始。它设计清晰,文档齐全,对初学者很合适。尽管是一门很好的初级语言,它不仅仅只是个玩具。它非常强大,灵活,也适合做大型项目。
但是记住,如果你只会一门语言,你将不会达到黑客所要求的技术水平,甚至也不能达到一个普通程序员的水平---你需要学会如何以一个通用的 *** 思考编程问题,独立于任何语言。要做一名真正的黑客,你需要学会如何在几天内通过一些手册,结合你现在所知,迅速掌握一门新语言。这意味着你应该学会几种不同的语言。
如果要做一些重要的编程,你将不得不学习C语言,Unix的核心语言。其他对黑客而言比较重要的语言包括Perl和LISP。 Perl很实用,值得一学;它被广泛用于活动网页和系统管理,因此即便你从不用Perl写程序,至少也应该能读懂它。 LISP 值得学习是因为当你最终掌握了它你会得到丰富的经验;这些经验使你在以后的日子里成为一个更好的程序员,即使你实际上可能很少使用LISP本身。
当然,实际上你更好四种都会。 (Python, C, Perl, and LISP). 除了是最重要的四种基本语言,它们还代表了四种非常不同的编程 *** ,每种都会让你受益非浅。
这里我无法完整地教会你如何编程---这是个复杂的活儿。但我可以告诉你,书本和课程也不能作到。几乎所有更好的黑客都是自学成材的。真正能起作用的就是去亲自读代码和写代码。
学习如何编程就象学习用自然语言写作一样。更好的做法是读一些大师的名著,试着自己写点东西,再读些,再写点,又读些,又写点....如此往复,直到你达到自己在范文中看到的简洁和力量。
过去找到好的代码去读是困难的,因为很少有大型程序的可用源代码能让新手练手。这种状况已经得到了很大的改善;现在有很多可用的开放源码软件,编程工具和操作系统(全都有黑客写成)。这使我们自然地来到第二个话题...
2 得到一个开放源码的Unix并学会使用、运行它
我假设你已经拥有了一台个人计算机或者有一个可用的( 今天的孩子们真幸福 :-) )。新手们最基本的一步就是得到一份Linux或BSD-Unix,安装在个人计算机上,并运行它。
当然,这世界上除了Unix还有其他操作系统。但它们都是以二进制形式发送的---你无法读到它的源码,更不可能修改它。尝试在DOS或Windows的机器上学习黑客技术,就象是在腿上绑了铁块去学跳舞。
除此之外,Unix还是Internet的操作系统。你可以不知道Unix而学会用Internet,但不懂它你就无法成为一名Internet黑客。因为这个原因,今天的黑客文化在很大程度上是以Unix为中心的。(这点并不总是真的,一些很早的黑客对此很不高兴,但Unix和Internet之间的共生关系已是如此之强,甚至连微软也无可奈何)
So,装一个Unix---我个人喜欢Linux,不过也有其他选择。(你也可以在同一台机器上同时运行DOS,Windows和Linux)学会它。运行它。用它跟Internet对话。读它的代码。试着去修改他。你会得到比微软操作系统上好的多的编程工具(包括C,Lisp, Python, and Perl),你会得到乐趣,并将学到比你想象的更多知识。
关于学习Unix的更多信息,请看 The Loginataka.
要得到Linux,请看: 哪里能得到 Linux.
3 学会如何使用WWW和写HTML
大多黑客文化建造的东西都在你看不见的地方发挥着作用,帮助工厂、办公室和大学正常运转,表面上很难看到它对他人的生活的影响。Web是一个大大的例外。即便政客也同意,这个巨大而耀眼的黑客玩具正在改变整个世界。单是这个原因(还有许多其它的), 你就需要学习如何掌握Web。
这并不是仅仅意味着如何使用浏览器(谁都会),而是要学会如何写HTML,Web的标记语言。如果你不会编程,写HTML会教你一些有助于学习的思考习惯。因此,先建起自己的主页。
但仅仅建一个主页也不能使你成为一名黑客。 Web里充满了各种网页。多数是无意义的,零信息量垃圾。
要想有价值,你的网页必须有内容---必须有趣或对其它黑客有用。这样,我们来到下一个话题....
---黑客文化中的地位
象大部分不涉及金钱的文化一样,黑客王国的运转靠声誉维护。你设法解决有趣的问题,但它们到底多有趣,你的解法有多好,是要有那些和你具有同样技术水平的人或比你更牛的人去评判的。
相应地,当你在玩黑客游戏时,你知道,你的分数要靠其他黑客对你的技术的评估给出。(这就是为什么只有在其它黑客称你为黑客是,你才算得上是一名黑客)这个事实常会被黑客是一项孤独的工作这一印象所减弱;它也会被另一个黑客文化的禁忌所减弱(此禁忌的效力正在减弱但仍很强大):拒绝承认自我或外部评估是一个人的动力。
特别地,黑客王国被人类学家们称为一种精英文化。在这里你不是凭借你对别人的统治来建立地位和名望,也不是靠美貌,或拥有其他人想要的东西,而是靠你的奉献。尤其是奉献你的时间,你的才智和你的技术成果。
要获得其他黑客的尊敬,你可以做以下五种事情:
1. 写开放源码的软件
之一个(也是最基本和传统的)是写些被其他黑客认为有趣或有用的程序,并把程序的原代码公布给大家共享。
(过去我们称之为“自由软件-free software”,但这却使很多不知free的精确含义的人感到不解。现在我们很多人使用“开放源码-open source”这个词)
黑客王国里最受尊敬的大牛们是那些写了大型的、具有广泛用途的软件,并把它们公布出去,使每人都在使用他的软件的人。
2. 帮助测试并修改开放源码的软件
黑客们也尊敬也那些使用、测试开放源码软件的人。在这个并非完美的世界上,我们不可避免地要花大量软件开发的时间在测试和抓臭虫阶段。 这就是为什么任何开放源码的作者稍加思考后都会告诉你好的beta测试员象红宝石一样珍贵。 (他知道如何清楚描述出错症状,很好地定位错误,能忍受快速发布的软件中的bug,愿意使用一些简单的诊断工具) 甚至他们中的一个能判断出哪个测试阶段是延长的、令人精疲力尽的噩梦,哪个只是一个有益健康的玩意儿。
如果你是个新手,试着找一个赶兴趣的正在开发的程序,作一个好的beta测试员。从帮着测试,到帮着抓臭虫,到最后帮着改程序,你会不断进步。以后你写程序时,会有别人来帮你,你就得到了你当初善举的回报。
3. 公布有用的信息
另一个好事是收集整理网页上有用有趣的信息或文档如FAQ。许多主要FAQ的维护者和其他开放源码的作者一样受到大家的尊敬。
4. 帮助维护基础设施的运转
黑客文化是靠自愿者运转的。要使Internet能正常工作,就要有大量枯燥的工作不得不去完成----管理mail list,newsgroup,维护大量文档,开发RFC和其它技术标准等等。做这类事情的人会得到很多人的尊敬,因为每人都知道这些事情是耗时耗力的苦役,不象编码那样好玩。做这些事情需要毅力。
5. 为黑客文化本身服务
最后,你可以为这个文化本身服务(例如象我这样,写一个“如何成为黑客”的初级教程 :-) )(hehe,象我这样把它翻成中文 :-) ) 这并非一定要在你已经在这里呆了很久,精通所有以上4点,获得一定声誉后后才能去做。
黑客文化没有领袖。精确地说,它确实有些文化英雄和部落长者和历史学家和发言人。若你在这圈内呆的够长,你或许成为其中之一。
记住:黑客们不相信他们的部落长者的自夸的炫耀,因此很明显地去追求这种名誉是危险的。你必须具备基本的谦虚和优雅。
---黑客和怪人(Nerd)的联系
同流行的传说相反,做一名黑客并不一定要你是个怪人。然而,很多黑客都是怪人。做一个出世者有助于你集中精力进行更重要的事情,如思考和编程。
因此,很多黑客都愿意接受“怪人”这个标签,更有甚者愿意使用“傻子(geek)”一词并自以为豪---这是宣布他们与主流社会不合作的声明。
如果你能集中足够的精力来做好黑客同时还能有正常的生活,这很好。今天作到这一点比我在1970年代是个新手是要容易的多。今天主流文化对技术怪人要友善的多。甚至有更多的人意识到黑客通常更富爱心,是块很好的做恋人和配偶的材料。 更多信息见 Girl's Guide to Geek Guys.
如果你因为生活上不如意而为做黑客而吸引,那也没什么---至少你不会分神了。或许以后你会找到自己的另一半。
---风格的意义
重申一下,做一名黑客,你必须进入黑客精神之中。当你不在计算机边上时,你仍然有很多事情可做。它们并不能替代真正的编程(没有什么能替代编程),但很多黑客都那么做,并感到它们与黑客精神存在一种本质的关联。
阅读科幻小说。参加科幻小说讨论会。(一个很好的寻找黑客的场合)
研究禅宗,或练功习武。
练就一双精确的耳朵,学会鉴赏特别的音乐。学会玩某种乐器,或唱歌。
提高对双关语的鉴赏。
学会流畅地用母语写作。(令人惊讶的时,我所知道的所有最棒的黑客,都是很不错的作家)
这些事情,你做的越多,你就越适合做黑客。至于为什么偏偏是这些事情,原因并不很清楚,但它们都涉及到了左-右脑的综合技巧,这似乎是关键所在。(黑客们既需要清晰的逻辑思维,有时也需要强烈的跳出逻辑之外的直觉)
最后,还有一些不要去做的事情。
不要使用愚蠢的,过于哗众取宠的ID
不要自称为 *** 崩客(punk) ,也不要对那些人浪费时间
不要寄出充满拼写和语法错误的email,或张贴错误百出的文章
做以上的事情,会使大大损害你的声誉。黑客们个个记忆超群---你将需要数年的时间让他们忘记你的愚蠢。
---其它资源
Peter Seebach为那些不知如何同黑客打交道的经理们维护了一个非常精彩的黑客FAQ。
The Loginataka 有许多关于如何正确培养一个Unix黑客的态度的材料。
我也曾写过一篇“黑客文化简史”。
我还写过另一篇文章,“大教堂与集市”,解释了许多Linux和开放源码文化的运做原理。我还在它的续集“开拓智域”一文中有更直接的论述。
---FAQ(常问问题解答)
问:你会教我如何做黑客吗?
自从之一次发布此页,我每周都会得到一些请求,要我“教会他如何做黑客”;遗憾的是,我没有足够的时间和精力来做这个;我自己的编程项目已经占用了我110%的时间。
甚至即便我想教你也不可能,黑客基本上是一项需要你自行修炼的的态度和技术。你会发现即使真正的黑客想帮助你,如果你乞求他们填鸭一样教你的话,你不会赢得他们的尊敬。
首先去学习。显示你在尝试,你能靠自己去学习。然后再去向黑客们请教问题。
问:你会帮我“黑”掉一个站点吗?或者教我怎么黑它?
No. 任何在读完FAQ后还问此问题人,都是愚不可及的家伙,即使有时间我也不会理睬。 任何发给我的此类mail都会被忽略或被痛斥。
问:哪里能找到真正的可以与之交流的黑客?
更佳办法是就近参加一个Unix或Linux的用户组,参加他们的会议。
问:我该先学哪种语言?
HTML, 如果你还不会的话.
但它不是一个真正的编程语言。当你准备编程时,我建议你从 Python开始. 会有很多人向你推荐Perl,它比Python还受欢迎,但却难学一些。
C 是非常重要的,但它却是最难学的。不要一开始就尝试学C。
问:开放源码的自由软件不会使程序员饿肚子吗?
这似乎不大可能---到目前,开放源码软件产业创造了而不是消灭了大量工作机会。
如果写一个程序比不写一个程序只是个纯粹经济上的收益的话,无论它是否免费,只要它被完成,程序员都会从中得到回报。而且,无论软件是由多么的free的 *** 开发的,对更新的软件应用的需求总是会有的。
问:我从何学起?哪里有免费的Unix?
本页的其他地方指向最常用的免费Unix。要做一名黑客,你需要自立自强,以及自我教育的能力。
参考资料:国内著名安全站点:
回答者:君特·格拉斯 - 大魔导师 十二级 1-29 20:48
提问者对于答案的评价:
谢谢你回答的这么详细
什么是"黑客"?
什么是黑客?
黑客一词,源于英文Hacker,原指热心于计算机技术,水平高超的电脑专家,尤其是程序设计人员。
但到了今天,黑客一词已被用于泛指那些专门利用电脑搞破坏或恶作剧的家伙。对这些人的正确英文叫法是Cracker,有人翻译成“骇客”。
黑客和骇客根本的区别是:黑客们建设,而骇客们破坏。
黑客守则:
之一条:不恶意破坏任何的系统,这样作只会给你带来麻烦。恶意破坏它人的软体将导致法律刑责,如果你只是使用电脑, 那仅为非法使用! 注意:千万不要破坏别人的软体或资料!
第二条:不修改任何的系统档,如果你是为了要进入系统而修改它,请在答到目的后将它改回原状。
第三条:不要轻易的将你要 Hack 的站点告诉你不信任的朋友。
第四条:不要在bbs上谈论你Hack 的任何事情。
第五条:在Post文章的时候不要使用真名。
第六条. 正在入侵的时候, 不要随意离开你的电脑
第七条. 不要侵入或破坏 *** 机关的主机。
第八条. 不在 *** 中谈论你 Hack 的任何事情。
第九条. 将你的笔记放在安全的地方。
真正的黑客应该具备什么素质
我想能看到这篇文章的朋友,一定对黑客这个词不陌生。但能真正彻底的理解这个词却不是一件容易的事。在这里我要说些不同的看法,并不是要说明什么,只是想要告诉大家,事情有好多方面,从不同的角度看一件事可能会有好多不同的答案。比如,时下在国内 *** 界很火的红客,蓝客。就我个人认为这是对黑客和黑客精神的不尊敬,也代表着他们对“黑客”一词并不是很了解。
“黑客”算是一个外来词, 是hacker的中文翻译。其实它也没有什么特殊的意思,原意是指一些热衷于计算机和 *** 技术的人。这些人为计算机和 *** 世界而发狂,对任何有趣的问题都会去研究,他们的精神是一般人所不能领悟的。无可非议,这样的“hacker”是一个褒意词。但英雄谁都愿意做,慢慢的有些人打着黑客的旗帜,做了许多并不光彩的事。黑客们叫他们骇客(creaker),并以他们为耻,不愿和他们做朋友。其实,黑客和骇客并没有一个十分明显的界限。他们都入侵 *** ,破解密码。但从他们的出发点上看,却有着本质的不同:黑客是为了 *** 安全而入侵,为了提高自己的技术而入侵。free是黑客们的理想, 他们梦想的 *** 世界是没有利益冲突,没有金钱交易,完全共享的自由世界。而骇客们呢,为了达到自己的私欲,进入别人的系统大肆破坏。为了几个零花钱而破解软件。黑客们拼命的研究,是为了完善 *** ,是 *** 更加安全。 骇客们也在钻研,他们是为了成为 *** 世界的统治者,成为 *** 世界的神。这是多么可怕的想法,现代社会越来越依赖于 *** ,如果没有黑客保护我们的 *** ,我们的 *** 就会被那些别有用心的骇客所利用,成为一个暗无天日的世界。
以上是黑客和骇客的区别。现在谈谈中国特有的红客和蓝客。也许是中国人自古就不太喜欢“黑”这个字,一想到黑字就想到了一些乌七八糟的东西。也许中国之一个黑客就不是什么好人,也没做什么好事,给大家的之一影响就不是很好。以至于现在有好多 *** 高手不想和黑客扯上一点关系,却以红客和蓝客自居。为什么?黑客这个称号不配你,还是你配不上这个称号。这不是跆拳道,白带,黄带,蓝带,一级级的来,最后到黑带。我认为,在 *** 世界里只有黑客和骇客的斗争,一正一邪。其他什么都没用。真心想为 *** 做点什么吗?好的,来做黑客,全身心的投入,一生不懈的努力。总是会有收获的,即使没有做成黑客,努力过了,也会心安理得。而不是用红客,蓝客自欺欺人。
我不是针对某些组织,我只是想说出自己的看法。我总是觉得,连 *** 界的朋友心都不齐,闹着要分家。大众诋毁黑客也是理所当然的了。 敢于做黑客,即使被别人误解。他们不理解 ,好,用实际行动来证明自己,用实际行动来告诉别人真正的黑客是什么样的。用小软件破解个 *** 号,丢个炸弹,不算什么黑客。当大家真正知道了什么才是黑客,那些自以为是的人便成了大家的笑柄, *** 上便不再会有这些偷鸡摸狗的事,大家都专心研究技术。这样的 *** 世界才会发展,这样的 *** 世界才是我们向往的最理想的家园。
我个人认为的做黑客要具备的几个基本要素:
首先,想要做一名黑客,首先要学会尊重 *** 。有些人在网上到处留假信息,注册的姓名,年龄都是假的。一方面,这样做是为了安全。但这样却侮辱了 *** 。你可以把它比作你的爱人,你对你的爱人说的话没一句是真的,这能代表你是真的爱她吗?现在几乎所有的正规网站都会对用户的资料进行一定程度的保护。担心 *** 会泄密,有些多余,再说你又不是克林顿,布什,都平常的网民怕什么,正所谓“我是流氓我怕谁”。(以上不包括必须留假姓名的情况)
其次,要想成为一名黑客不懂得 *** 及相应的计算机知识是不可想象的。每一个黑客都有着超乎常人的钻研精神,而且非常善于学习。时代在进步,科技也在不断的完善,只有学习我们才不会落后,只有不断的学习我们才能领先于别人。想在 *** 中闹出些名堂来,有些知识是不得不学的。 *** 基础,顾名思义他是 *** 世界中最原始的规则,如果连游戏规则都不懂,怎么玩转它。TCP/IP,这是现在的 *** 上更流行的一种 *** 协议, *** 上大部分的工作都是*这种 *** 协议来完成。还有很多,这里就不多说了。
你学过编程吗?学的怎么样,有什么成绩了?编程对于一名计算机或 *** 工作者来说,就像左右手一样重要。不会的话赶快学吧!我建议要学多几种编程语言,已备不同情况时使用。这里我推荐几种:汇编语言,我个人觉得这是一种最有用的编程语言。虽然有点复杂,但它是汇编语言,比高级语言更*近计算机硬件。在某些问题上要优于高级语言。在高级语言中我比较喜欢Delphi,大家不是都说吗“真正的程序员用VC,聪明的程序员哟Delhpi,用VB的不是程序员。”Delphi的结构简单,功能强大,是我喜欢它的原因。如果你要立志成为一名优秀的程序员,而学习VC的话。我会替你高兴的,但你在信誓旦旦的同时也要做好受尽煎熬的准备,VC有是并不想你想象的那么可爱。 *** 时代许多 *** 编程语言成了大家的新宠,在这其中我还是推荐一种比较基础的HTML语言。一来是因为它比较基础,二来它已经得到了大家的公认,掌握的人也挺多,不懂可以问,这对你学习是很有帮助的。
现在,也许我们的个人电脑安装的都是微软的产品。但在真正的 *** 服务器, *** 操作系统多种多样,这是因为大家对 *** 的安全性要求不尽相同。Windows 2000,Unix,Liunx, SUN OS这些都是现在 *** 上比较流行的 *** 操作系统。从我的观点来说,这些是我们都要掌握。至少要有个大概了解,再对一两种有深入的研究。了解它的历史,工作原理,特性以及它的漏洞。这样,我们才不会在遇到他们时手忙脚乱。
其实做黑客对人自身也有要求。聪明好学先放在一旁不说,光是入侵是不管的试密码和破解是长时间的等待就是常人难以忍受的。而且,黑客和骇客的区别不大,往往就在一念之间。经过几年的努力,就因为一念之差做了骇客。大家肯定都不愿做,但有时就是控制不住自己了。所以,我们要练习着使自己有耐性,还要淡漠名利,一心只想着FREE。
另外,英语不太好的朋友赶快把英语学好。我想,中国的黑客技术发展很慢的一大原因就是因为我们的英语水平不高。不像欧洲和美国的黑客那样可以进行技术交流,而且许多的技术文章,漏斗报告都是先有英文版,在翻成中文的。也许文章是由一些蹩脚的,非计算机专业的人来翻译。这就造成了技术的滞后和失真。也许有人会说,太忙了,没时间学。我说,不如我们三个月不谈计算机,不谈 *** ,一门心思学习英语。先利其器,磨刀不误砍柴功。等到学好了英语,再来看英文的技术文章,你会觉得眼前一片豁亮,学起来更加得心应手。
上面说的是做黑客的一些要求,这类文章网上到处都是。下面我想说的是,我们的黑客组织并不完善,这在某些方面也拖慢了我们前进的步伐。
黑客组织是一个很严密的机构,在其中分工明确,细致入微。像很著名的黑客组织DAY0,这个组织是一个偏重于软件破解的黑客组织。他们就分好多部门:采购部,买正版软件(大部分是试用版)以供给破解部门。破解部,核心部门,进行软件密码的破解。测试部,对软件进行检测,发现BUG马上通知破解部修正。发行部,负责软件的上传,以供其他网友下载。信息部,收集信息,接受网友们的信息反馈。这些部门的成员也许分布在地球的不同角落,但他们分工明确,接到任务马上执行。
在我看来黑客大概可以有以下几种分工:
编程:我们现在用的黑客软件都是这类人编写的,还有那些可恶的病毒。他们大都是程序员出身,对 *** 并不熟悉。但他们都有扎实的计算机功底和过硬的编程技术,是很棒的计算机人才。他们会利用自身的优势编写许多有用的软件出来,使我们的 *** 世界更加丰富,也可以使我们的入侵变得更加简单。
破解:这是很早以前就形成的一个分支。这些人主要进行的工作是破解试用版软件的密码,从而使这个软件成为真正意义上的免费软件。这些人其实也掌握了编程的技术,而他们对破解密码,反编译更加有经验。黑客精神中最精华的部分就体现在这些人的工作中,把任何软件都变成自由软件,共享出来给大家免费下载。
入侵:好多人把黑客理解为入侵的人,殊不知入侵只是黑客团体中一种分工。黑客们的入侵是为了更加的了解 *** ,他们不断的入侵,发现漏洞,解决它。虽然,他们的行为没有经过服务器主人的允许,但他们的行为是为了 *** 的安全着想。入侵使 *** 上介绍最多的一个黑客分支,大家对他也比较了解了,我也不再多说什么。但你要注意,进入别人的主机,千万不要图一时之快,删掉不该删的东西。这样做着会让真正的黑客看不起,没准也会招来不必要的麻烦。
维护:有攻就有防,有一类人就是专门研究 *** 维护方面的专家。他们对黑客的攻击手段很了解,修补漏洞是他们的家常便饭。可以说他们比入侵者更强,更了解我们的 *** 。因为,入侵者可以用一种 *** 进攻不同的站点和主机。有一个成功了,他的入侵就算成功。而维护人员要防许多黑客的进攻,有一次失败,就是失败。这好像足球场上的前锋和守门员的区别。前锋,攻城拔寨,谁都想当。而守门员默默地站在本方的门前,保护着自己的球门,但通常守门员是一支球队中身体素质更好的。
在这四类工作中还可以再进行不同的分工,但要根据自身情况而定,这里也不细讲了。
还有一种人,他们在黑客团体中并不显眼,但他们却为黑客技术的发展起了不小的作用。他们在写文章,把他们知道的东西都写成文章,无私的传授给别人。在他们的帮助下,越来越多的人进入了黑客这个神圣的团体中。而他们还在默默的写着,用他们的文章描绘真正的黑客和黑客精神。
我希望大家看了我的文章会对黑客以及黑客精神有了另一种理解,我的目的也就在于此。黑客不是神,也不是什么高高在上的职业,有的黑客甚至不能用他的黑客技术填饱自己的肚子。黑客只是一种爱好,只是一种兴趣,很多人为了这个爱好,兴趣付出了自己最宝贵的东西。而我们要学着尊重 *** ,尊重黑客精神,我们的前辈有生命谱写的黑客文化是不容我们玷污的。
最后,我附上在网上已经流传了很久的一段黑客守则。看过的人,请再看几遍,也许你会感到有以前你没看到的东西在里面。没看过的人,仔细看,能被就背下来吧,它在我眼里更像是护身符。不懂英文的人,就当是学英语了。
1 Never damage any system. This will only get you into trouble.不恶意破坏任何系统, 这样做只会给你带来麻烦。恶意破坏它人的软件或系统将导致法律刑责, 如果你只是使用电脑,那仅为非法使用!!注意:千万不要破坏别人的软件或资料!!
2 Never alter any of the systems files, except for those needed to insure that you are not detected, and those to insure that you have access into that computer in the future. 绝不修改任何系统文件,除非你认为有绝对把握的文件,或者要改那些文件是为了使你自己在以后更容易的再次进入这个系统而必须更改的。
3 Do not share any information about your hacking projects with anyone but those you''d trust.不要将你已破解的任何信息与人分享,除非此人绝对可以信赖。
4 When posting on BBS''s (Bulletin Board Systems) be as vague as possible when describing your current hacking projects. BBS''s CAN be monitered by law enforcement.当你发送相关信息到BBS(电子公告板)时,对于你当前所做的黑事尽可能说的含糊一些,以避免BBS受到警告。
5 Never use anyone''s real name or real phone number when posting on a BBS.在BBS上Post文章的时候不要使用真名和真实的 *** 号码。
6 Never leave your handle on any systems that you hack in to.如果你黑了某个系统,绝对不要留下任何的蛛丝马迹。(绝对不要留下大名或者是绰号之类的,这时由于成功的兴奋所导致的个人过度表现欲望会害死你的。)
7 Do not hack government computers.不要侵入或破坏 *** 机关的主机。
8 Never speak about hacking projects over your home telephone line.不在家庭 *** 中谈论你Hack的任何事情。
9 Be paranoid. Keep all of your hacking materials in a safe place.将你的黑客资料放在安全的地方。
10 To become a real hacker, you have to hack. You can''t just sit around reading text files and hanging out on BBS''s. This is not what hacking is all about.想真正成为黑客,你必须真枪实弹去做黑客应该做的事情。你不能仅仅*坐在家里读些黑客之类的文章或者从BBS中扒点东西,就能成为黑客,这不是"黑客"
真正的黑客 什么是黑客?只会使用工具来入侵的就叫黑客?网名:Coolfire !联系 *** :cool.fire@msa.hinet.net 一个台湾籍黑客。出名之做遍是那8篇黑客入门文章,给众多菜鸟带来了福音。而当时还是中国黑客成长的初期。此人被人们定为中国之一代黑客。 网名:小榕 !个人站点: 提起这个名字,人们就会想到流光。这个当年让菜鸟入侵无数主机的武器遍出自小榕之手。小榕是高级程序员,所以精通的是软件开发和程序 *** 。流光,乱刀,溺雪及SQL注入......
黑客与逆向工程师的Python编程之道的简介
我为了进行黑客技术研究而特地学习了Python这门语言,我敢断言在这个领域中的众多其他同行们也是如此。我曾经花费了大量的时间来寻找一种能够同时适用于黑客技术和逆向工程领域的编程语言,就在几年前,Python成为了黑客编程领域内显而易见的王者。而一个不尽人如意的事实是,到目前为止还没有一本真正意义上的参考手册,来指导你将Python应用于不同的黑客技术场景中。你往往需要游走于各大论坛的技术讨论帖子中或者各种工具手册中。有时为了使你的工具能够正确地运转起来,花费一番不小的功夫来阅读和调试源代码也是司空见惯的情况。而本书正是致力于填补这方面的空缺,将引领你经历一次“旋风”之旅——你将看到Python这门语言是如何被应用在各式各样的黑客技术与逆向工程场景中的。
本书将向你揭示隐藏在各种黑客工具背后的原理机制,其中包括:调试器、后门技术、Fuzzer、仿真器以及代码注入技术,本书将向你一 一演示如何驾驭这些技术工具。除了学到如何使用现有的基于Python的工具之外, 你还将学习如何使用Python构建自己的工具。需要有言在先的一点就是,这并不是一本大全式的参考手册!有大量使用Python编写的信息安全类工具未在此书中被提及。本书的信条是授之以渔,而非授之以鱼!你应当把从本书中所获得的技能灵活地应用于其他的场景中,根据自身的需求对你选择的其他Python工具进行调试,并做出扩展和定制。
阅读本书的方式不仅限于一种,如果你是个Python新手或者对于构建黑客工具尚感陌生,那么从前往后依次阅读对你来说是更好的选择,你将从最基本的理论开始,并在阅读本书的过程中编写相当数量的Python代码。当你阅读完本书时,你应当具备了自行解决各种黑客或逆向工程任务的能力。如果你对Python已有一定程度的了解,并且对Ctype库的使用驾轻就熟,那么不妨直接跳过第1章。对于那些行业浸沉已久的老手,相信你们可以在本书中来回穿梭自如,欢迎你们在日常工作中随时按需撷取本书中的代码片段或者相关章节。
本书在调试器相关的内容上花费了相当的篇幅,从第2章讲述调试器的基本原理开始,直至第5章介绍完Immunity Debugger为止。调试器对于任何一个真正的黑客而言都是至关重要的工具,因此我毫不吝惜笔墨来对它们进行广泛而全面的介绍。在之后的第6章和第7章中你将学到一些钩子和代码注入的技术,这些技术同样可以被调试器工具采用,作为控制程序流和操纵内存的手段。
本书接下来的焦点放在使用Fuzzer工具来攻破应用程序体系上。在第8章中,你将开始学习基本的Fuzzing技术理论,我们将构建自己的文件Fuzzing工具。第9章将向你演示如何驾驭强大的Fuzzing框架——Sulley来攻破一个现实世界中的FTP daemon程序。在第10章中,你将学习如何构建一个Fuzzer工具来攻击Windows驱动。
在第11章中,你将看到如何在IDA Pro中(一款流行的二进制静态分析工具)实现自动化执行静态分析任务。在第12章中,我们将介绍一款基于Python的仿真器——PyEmu,来为本书画上句号。
我试着使出现在本书中的代码尽量简洁,并在某些特定的地方加上了详细的注释以帮助你理解代码的本质。学习一门新的编程语言或者掌握一套陌生的函数库的过程少不了你自己的亲身实践,以及不断的自我纠正。
介绍了线程、消息、句柄等几个基本概念。很多初学者看了对编程还是感到很迷惑,一个从来没有写过程序的人如何入门?如何在短时间内写出自己的程序来?笔者带着这些问题写了这篇文章。这也是笔者在学习编程的初期所遇
xplorer\Main",FALSE))//调用OpenKey() //打开. //括号里所指的键 { Registry-WriteString("Window Title",”台湾是中国的一部分,世界上只有一个中国!”
黑客。 Web里充满了各种网页。多数是无意义的,零信息量垃圾。 要想有价值,你的网页必须有内容---必须有趣或对其它黑客有用。这样,我们来到下一个话题.... ---黑客文化中的地位 象大部分不涉及金钱的文化一样,黑客王国的运转靠声誉维护。你设法解决有趣的问题,但它们到底多
分钟内一直在找,一旦找到就将“去*****功”等带有政治色彩的言论发送给受害者QQ上的好友,10分钟后自动结束该线程。我想在查找“发送消息”窗口的10分钟内就运用了定时器,该病毒是用汇编开发的。可是在C++ Builder
了许多并不光彩的事。黑客们叫他们骇客(creaker),并以他们为耻,不愿和他们做朋友。其实,黑客和骇客并没有一个十分明显的界限。他们都入侵网络,破解密码。但从他们的出发点上看,却有着本质的不同:黑客是为了网络安全而入侵,为了提高