TA的每日心情 | 奋斗 前天 10:07 |
---|
签到天数: 2385 天 [LV.Master]伴坛终老
|
标题 用VB学做“黑客”程序 ) N! V. e. E5 [( }# L# h7 k# A" G
+ ]( m- P9 p7 t3 ]5 p关键字 VB,黑客
9 {, S) V7 d4 R& P) w1 H% \ & l6 ]: g+ j/ }3 V$ U/ j- h& |
6 m! t8 I* M( d+ d. J7 ?% F/ G
: v; e, G7 J& l& L7 b用VB学做“黑客”程序! \4 h7 X* W1 R
4 @/ |, t' E* S& ~# X: {+ H
, c% |' Y/ s, c$ b
6 m9 }! A1 d9 q' Z' U4 w( S 只要掌握了原理,你也能写出一个所谓的“黑客”程序。下面笔者带领大家用VB亲自编写一个远程控制程序。从而揭开它的神秘面纱。
9 l' t4 m& ~* }, ^! m* d" I! }0 F; ], L
一、所用控件
- B& v5 b, ?- Y3 V( F& Z4 Q, m& M$ Y
5 x5 v. H1 T Q( W% W/ o 在程序中将使用Winsock控件。Winsock控件是一个ActiveX控件,使用TCP协议或UDP协
! U4 Q2 Q4 ?' Q' w) v. m议连接到远程计算机上并与之交换数据。和定时器控件一样,Winsock控件在运行时是不可见的。Winsock的工作原理是:客户端向服务器端发出连接请求,服务器端则不停地监听客户端的请求,当两者的协议沟通时,客户端和服务器端之间就建立了连接,这时客户端和服务器端就可以实现双向数据传输。实际编程中,必须分别建立一个服务器端应用程序和一个客户端应用程序,两个应用程序中分别有自己的Winsock控件。首先设置Winsock控件使用的协议,这里我们使用TCP协议。现在,让我们开始用VB建立两个程序,一个是客户端程序myclient,另一个是服务器端程序myserver。# E! v2 Y# B, _
* d. w, T+ j$ I8 f4 H }
二、编写客户端程序
1 X. ?$ Q4 k- q6 q. y! ^1 x: ^" o/ A0 @$ [
首先来建客户端程序myclient。在myclient程序中建立一个窗体,加载Winsock控件,称为tcpclient,表示使用的是TCP协议,再加入两个文本框(text1和text2),用来输入服务器的IP地址和端口号,然后建立一个按钮(cd1),用来建立连接,按下之后就可以对连接进行初始化了,代码如下:; H$ o0 @% T6 |& R: q4 ]
+ C. Y' e! n& K/ f5 O private sub cd1_click()+ N8 R& S/ F+ o9 P
' \2 D1 X- m2 j+ o tcpclient.romotehost=text1.text
- B/ S7 H7 w& |7 J0 {2 m
; I3 W2 I- u1 P7 M: Z. |/ b) ^. D tcpclient.romoteport=val(text2.text)'端口号,缺省为1001- n' C3 l2 R% c; ]! t! O& _9 A
) b9 v1 ~( k7 K. r5 W5 Z. h
tcpclient.connect '调用connect方法,与指定IP地址的计算机进行连接
# O& V+ a8 L# o' s6 S% P. A, U( m2 Z$ s! q2 D9 C
cd1.enabled=false/ o* F5 N/ Z# d( [6 K6 O" F# ?9 n0 c
: j# {% T0 T' H5 v4 R/ w! a" A
end sub4 o2 m/ ]3 R6 e+ A7 z
4 `0 S+ ?6 _2 W# k3 y: m1 E
连接之后就是如何处理所收到的数据的问题了。客户端和服务器端建立连接后,如果有任何一端接收到新的数据,就会触发该端winsock控件的dataarrival事件,在响应这个事件时,可以使用getdata方法获得发送来的数据。比如可以在tcpclient的dataarrival事件中编写代码如下:3 R1 q; `7 ?: r$ ^- f1 j+ n$ q; V
0 y9 U$ [$ I) r3 j+ ` P/ \ private sub tcpclient_dataarrival(byval bytestotal as long)
7 I. e2 ~5 a' T4 d1 o: {0 T! Z5 O" a
6 j o3 O$ H3 J: r% P, A- D; A8 ^2 n dim x as string
+ T' S; b' p% k7 z% U0 p6 L8 V: [( l7 g" f4 A
tcpclient.getdata x '使用getdata获得发送来的数据
! `- W! ?5 N, s7 j M, ?
# p0 w( c1 T9 ^+ O/ f .......
; ^: Q- S) d4 _. @: \
m/ B* u# f2 r9 @5 N0 Z! \: n End sub
, K7 Z3 e( y) ?; ?
0 I9 Y! I1 N* r1 s6 ~7 O( f, b 后面的省略部分表示对接收到的数据进行的具体处理,读者可以根据实际情况编写。/ W& M* Z5 X" G+ \9 D9 w
- J& n2 D5 n. x8 t 三、编写服务器端程序. r% ^3 _+ Z# |% Z
! n9 l' J' _( }/ L
先建立一个窗体,加载Winsock控件,名称为tcpserver。另外在窗体上加入一个文本框text1用来显示客户机的IP地址和客户机发送过来的数据信息。! ^1 U% A) C/ Y6 H
7 o/ [! H6 M8 |* V 当客户端程序运行时,在客户端程序按下连接按钮后,客户端向服务器端程序请求连接,这时服务器端的connectionrequest事件被触发,所以服务器端程序要解决连接问题,可以使用connectionrequest事件完成此功能。代码如下:
) j0 P5 W3 @% E) X& }
) Z% J1 l2 a6 ~; U3 `, W& m* t '在窗体的load事件中对tcpserver控件进行初始化5 P h; Y. s2 a* E% k' F( U
" V$ Z0 A1 C' M3 r2 u private sub form_load()
: o3 F4 L7 r1 m1 \" {' |
7 B0 @2 a9 l4 T tcpserver.localport=1001
! ~3 T6 t u' l
1 ]5 Y- ?) _: `0 t$ r" ? tcpserver.listen '把服务器置于监听检测状态' v+ [+ b1 y" c
! o, T" L. p; ]' P5 o3 E# U
end sub5 t7 E6 ^& |( D$ C/ _- V
5 t$ X7 e* @" \% a3 ^. x
'服务器端接收到客户端的连接请求,首先检查当前状态是否处于连接关闭状态 s& a: ?2 Q7 H# r. F
' \# n/ a& m1 f$ o4 e% z, y Private sub tcpclient_connectionrequest(Byval requestID as long)! f8 Y } B6 T) p7 r
* I% p) K! J @* I$ }/ c3 T
If tcpserver.state<>sckclosed then '检查控件的state属性是否为关闭0 W* J; t' p* e3 \% G0 m) ]' R: L6 y' r \
, z: y, A+ `) Q1 `& j Tcpserver.close '
" ]/ ^% M. g& z3 Z) ^4 E7 c" j% ~% _0 }
Tcpserver.accept requestID '
: Z( k( g( a/ ?/ X$ Z$ t# ]4 g7 t/ Q0 w- i- p' ~' W8 @9 E
End if
# X/ s- t; b! {$ K( _6 `7 p$ Z+ p+ q$ P9 M- m
End sub4 a; D% i" `7 h0 V
' `6 e. n% b/ M+ @; i
现在我们在服务器端程序tcpserver的dataarrival事件中添加以下代码,以便让服务器端程序可以接收客户机端的指令,并运行相应的程序。+ I" S6 l! j0 {4 c
& Z* h( b1 g, E0 H* [ 四、测试远程控制程序$ v N$ b. a O+ b, g ]7 _. ]
R2 H& i( d3 [9 I7 k; _5 C( x W 现在,你就可以将这两个程序分别运行于两台使用TCP/IP协议联网的机器了。在客户机端你按下连接按钮,再输入“c: mmand.com”,可以看到在服务器端立刻打开一个DOS窗口,设想一下,如果它运行一些破坏性的命令会发生什么事情?这就是一个最基本的远程控制程序。当然,真正的黑客程序要复杂得多,但基本原理是相同的。现在你该恍然大悟了吧?2 |0 o, @/ K- k, R& F# _8 g Y2 x
|
|