3. ================================================================================
================================================================================
===============================================================
Public Const IntViriVariantName As String = "Aduhai|Aksika|Kangen|Apel|Apel|
Brontok|Armora|Ascribes|Codex|Brontok|Cyrax|Cyrax|Decoil|Rolog|Ego|FluBurung|
Gelas|Imelda|Imelda|Iwing|Jablay|KamaSutra|Leena|Mazda|MySong|Nahital|Netsky|
Riyani|Nimda|Nukedevil|Parayrontok|Peta|Pluto|Pluto|Polyface|Provisioning|
Renova|Stration|Tinutuan|Tsunami|Wukill"
'===============================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
===============================================================
Public Const IntViriIconID As String = "1F1C9B9|20938B2|19F4ED6|133BE0B|18EDEAE|
1EF89C2|1C915FF|24563C4|1B2DB74|208EA72|22A064D|19B64EE|1D4B7E1|2087762|29C7258|
1B18705|1B5FCAB|126D4CF|1C58E5C|15D7730|1FB82B7|112763E|2165AF9|25F46BE|206556B|
22A8D69|19237F8|15022B4|1D8B4EB|1DBC1EA|2333F5D|1F37C2F|1C9CCA4|1DFDFB4|1C1283E|
1F6598C|27F4C1A|22F92E0|191DBDC|27BFE4A|20E0907"
'===============================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
================================================================================
===============================================================
Public
Public
Public
Public
ViriName() As String
ViriString4() As String
ViriVariantName() As String
ViriIconID() As String
Public Function AnalyzeFile(ByVal lpFileName As String) As String
Dim i As Long
Dim hSplit As Long
Dim SaveStringNow(1 To 4) As String
Dim IconIDNow As String
Dim IconCountNow As Long
Dim ExtNow As String
If isExe(lpFileName) = 0 Then Exit Function
SaveStringNow(1) = CalcBinary(lpFileName,
If InStrRev(IntViriString1, SaveStringNow(1))
SaveStringNow(2) = CalcBinary(lpFileName,
If InStrRev(IntViriString2, SaveStringNow(2))
SaveStringNow(3) = CalcBinary(lpFileName,
If InStrRev(IntViriString3, SaveStringNow(4))
199, 4000)
= 0 Then GoTo VarianCheck
199, 4250)
= 0 Then GoTo VarianCheck
199, 4500)
= 0 Then GoTo VarianCheck
VarianCheck:
IconIDNow = CalcIcon(lpFileName)
If InStrRev(IntViriIconID, IconIDNow) <> 0 Then
4. For i = 0 To UBound(ViriIconID)
If ViriIconID(i) = IconIDNow Then
AnalyzeFile = ViriVariantName(i) & ".Varian"
IconCountNow = GetIconCount(lpFileName)
If IconCountNow > 1 Then
If InStrRev(UCase$(AnalyzeFile), "APEL") = 0 And
InStrRev(UCase$(AnalyzeFile), "CYRAX") = 0 Then
AnalyzeFile = ""
End If
End If
Exit Function
End If
Next i
End If
End Function
Public Function SetVariabel()
Dim i As Long
Dim ViriString1() As String
Dim ViriString2() As String
Dim ViriString3() As String
ViriString1 = Split(IntViriString1, "|")
ViriString2 = Split(IntViriString2, "|")
ViriString3 = Split(IntViriString3, "|")
ViriVariantName = Split(IntViriVariantName, "|")
ViriIconID = Split(IntViriIconID, "|")
ReDim ViriString4(UBound(ViriString1)) As String
For i = 1 To UBound(ViriString1) - 1
ViriString4(i - 1) = ViriString1(i) & ViriString2(i) & ViriString3(i)
Next i
ViriName = Split(intstrrev, "|")
End Function
Public Function CalcBinary(ByVal lpFileName As String, ByVal lpByteCount As
Long, Optional StartByte As Long = 0) As String
Dim Bin() As Byte
Dim ByteSum As Long
Dim i As Long
ReDim Bin(lpByteCount) As Byte
Open lpFileName For Binary As #1
If StartByte = 0 Then
Get #1, , Bin
Else
Get #1, StartByte, Bin
End If
Close #1
For i = 0 To lpByteCount
ByteSum = ByteSum + Bin(i) ^ 2
Next i
CalcBinary = ByteSum
End Function
Public Function CalcIcon(ByVal lpFileName As String) As String
Dim PicPath As String
Dim ByteSum As String
Dim IconExist As Long
5. Dim hIcon As Long
hIcon = ExtractIconEx(lpFileName, 0, ByVal 0&, hIcon, 1)
If IconExist <= 0 Then
IconExist = ExtractIconEx(lpFileName, 0, ByVal 0&, hIcon, 1)
If IconExist <= 0 Then Exit Function
End If
frmScanVirus.sIcon.BackColor = vbWhite
DrawIconEx frmScanVirus.sIcon.hdc, 0, 0, hIcon, 0, 0, 0, 0, DI_NORMAL
DestroyIcon = hIcon
PicPath = GetSpecPath(SmadTempDir) & "" & GetFileName(lpFileName) & ".tmp"
SavePicture frmScanVirus.sIcon.Image, PicPath
ByteSum = CalcBinary(PicPath, FileLen(PicPath))
DeleteIt (PicPath)
CalcIcon = ByteSum
End Function
Public Function GetIconCount(ByVal lpFileName As String) As Long
Dim iCon As Long
Dim hIcon As Long
hIcon = ExtractIcon(App.hInstance, lpFileName, iCon)
Do Until hIcon <= 1
iCon = iCon + 1
hIcon = ExtractIcon(App.hInstance, lpFileName, iCon)
Loop
GetIconCount = iCon
End Function
Public Function isExe(ByVal lpFileName As String) As Long
On Error GoTo isNotExe
Dim BufferBin As String
Open lpFileName For Binary Access Read As #1
BufferBin = Space(2)
Get #1, , BufferBin
Close #1
If BufferBin = "MZ" Then
isExe = 1
Else
isExe = 0
End If
Exit Function
isNotExe:
isExe = 0
End Function
6. Dim hIcon As Long
hIcon = ExtractIconEx(lpFileName, 0, ByVal 0&, hIcon, 1)
If IconExist <= 0 Then
IconExist = ExtractIconEx(lpFileName, 0, ByVal 0&, hIcon, 1)
If IconExist <= 0 Then Exit Function
End If
frmScanVirus.sIcon.BackColor = vbWhite
DrawIconEx frmScanVirus.sIcon.hdc, 0, 0, hIcon, 0, 0, 0, 0, DI_NORMAL
DestroyIcon = hIcon
PicPath = GetSpecPath(SmadTempDir) & "" & GetFileName(lpFileName) & ".tmp"
SavePicture frmScanVirus.sIcon.Image, PicPath
ByteSum = CalcBinary(PicPath, FileLen(PicPath))
DeleteIt (PicPath)
CalcIcon = ByteSum
End Function
Public Function GetIconCount(ByVal lpFileName As String) As Long
Dim iCon As Long
Dim hIcon As Long
hIcon = ExtractIcon(App.hInstance, lpFileName, iCon)
Do Until hIcon <= 1
iCon = iCon + 1
hIcon = ExtractIcon(App.hInstance, lpFileName, iCon)
Loop
GetIconCount = iCon
End Function
Public Function isExe(ByVal lpFileName As String) As Long
On Error GoTo isNotExe
Dim BufferBin As String
Open lpFileName For Binary Access Read As #1
BufferBin = Space(2)
Get #1, , BufferBin
Close #1
If BufferBin = "MZ" Then
isExe = 1
Else
isExe = 0
End If
Exit Function
isNotExe:
isExe = 0
End Function