' ------------------------------------------------------------------------------- rem BadDharma : a Public Domain Badtrans Virus Remove utility rem: no copyrights. rem: Official final release 1.3 for Windows 95 / 98 / Me ' ' Buona fortuna! ' Good luck! ' Suerte ! ' '--------------------------------------------------------------------------------- main Sub main() rem i trans non sono un problema, quelli Bad però si :) On Error Resume Next dim ind dim rst K1 = "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\RUN" K2 = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce\Kernel32" Set Vlade = CreateObject("Scripting.FileSystemObject") Vlade.DeleteFile (winfolder & "\wininit.ini") 'andiamo a vedere dove sono i vari folder winfolder = Vlade.GetSpecialFolder(0) sysfolder = Vlade.GetSpecialFolder(1) rem ind indica se si è operato già qualche intervento set ind = 0 rem rst indica se è necessario riavviare il computer set rst = 0 rem mettiamo nel wininit.ini i files da cancellare call init (winfolder & "\INETD.exe", ind, rst) call init (winfolder & "\HKK32.exe", ind, rst) call init (sysfolder & "\KERN32.exe", ind, rst) call init (sysfolder & "\KERNEL32.exe", ind, rst) call init (winfolder & "\KERNEL32.exe", ind, rst) call init (sysfolder & "\HKSDLL.DLL", ind, rst) call init (sysfolder & "\KDLL.DLL", ind, rst) call init (sysfolder & "\CP_23421.nls", ind, rst) call init (sysfolder & "\CP_25389.nls", ind, rst) call init (sysfolder & "\protocol.dll", ind, rst) rem eliminiamo la chiamata dalla WINDOWS NT valore = "C:\WINDOWS\INETD.EXE" lettura = Rg(K1) If (valore = lettura) Then Rd K1 ind = ind + 1 call report (K1, "", "deleted", "", ind) End If rem eliminiamo la chiamata dalla RunOnce valore = "kernel32.exe" lettura = Rg(K2) If (lettura <> "") Then Rd K2 ind = ind + 1 call report (K2, "", "deleted", "", ind) End If rem ... e adesso mani al win.ini e rimuovimamo la chiamata call rplstrfile (winfolder & "\" , "win.ini", "run=C:\WINDOWS\INETD.EXE", "run=", ind) rem commiati e disposizioni finali If ind <> 0 Then testo = "Nel file " & winfolder & "\ciccio.vir troverai il log delle operazioni eseguite" & Chr (13) testo = testo & "Inside the file " & winfolder & "\ciccio.vir you can find the disinfection report " MsgBox (testo) If rst > 0 Then testo = "Ho fatto del mio meglio . Riavvia e lancia l'Antivirus" & Chr (13) testo = testo & "I did my best! Restart and run a complete antivirus scan" MsgBox (testo) End If testo = "Auguri ... e sostieni l'UNICEF" & Chr (13) testo = testo & "Luck ... and support UNICEF" MsgBox (testo) else testo = "Non ho rilevato elementi di Badtrans" & Chr (13) testo = testo & "No Badtrans elements detected" MsgBox (testo) Vlade.DeleteFile (winfolder & "\ciccio.vir") End If End Sub rem ----------------------zona librerie -------------------------- Sub init (file, ind, rst) On Error Resume Next set koala = CreateObject("Scripting.FileSystemObject") winfolder = koala.GetSpecialFolder(0) If koala.FileExists(file) Then filesh = koala.GetFile(file).ShortPath set wininit = koala.OpenTextFile(winfolder & "\wininit.ini", 8, True) If ind = 0 Then wininit.Write "[rename]" End If wininit.Write VbCrLf & "NUL=" & filesh ind = ind + 1 rst = rst + 1 call report (file, "", "deleted" , "", ind) wininit.close End If End Sub Sub rplstrfile (folder, file, stri, subst, ind) On Error Resume Next Set marcolfa = CreateObject("Scripting.FileSystemObject") alarm = 0 If marcolfa.FileExists(folder & file) Then Set vecchio = marcolfa.GetFile (folder & file) nuovonome = marcolfa.GetBaseName(folder & file) & ".vir" vecchio.Copy (folder & nuovonome) marcolfa.DeleteFile (folder & file) Set lella = marcolfa.OpenTextFile(folder & nuovonome , 1, False) Set vipera = marcolfa.OpenTextFile(folder & file, 2, True) Do While lella.AtEndOfStream <> True lettura = lella.ReadLine If lettura <> stri Then vipera.Writeline (lettura) else vipera.Writeline (subst) alarm = 1 ind = ind +1 call report (folder & file, "" , " saved as: " , folder & nuovonome, ind) ind = ind +1 call report (folder & file, " instruction : " & stri , " deleted" , "", ind) End If Loop lella.close vipera.close If alarm <> 1 Then marcolfa.DeleteFile (folder & nuovonome) End If End Sub Sub report (posizione, voce, azione, sostituto, ind) On Error Resume Next set koala = CreateObject("Scripting.FileSystemObject") winfolder = koala.GetSpecialFolder(0) if ind = 1 then koala.DeleteFile (winfolder & "\ciccio.vir") set ciccio = koala.OpenTextFile(winfolder & "\ciccio.vir", 8, True) If ind = 1 Then ciccio.Write "[My name is Ciccio. I'm a great italian lover. But No Trans Please!]" ciccio.Write VbCrLf & "Your system was infected : This is what i did:" ciccio.Write VbCrLf & VbCrLf End If If sostituto <> "" Then add = " by " Else add ="" End If ciccio.Write VbCrLf & "[action: " & ind & "]" ciccio.Write VbCrLf & posizione & voce & ": was " & azione & add & sostituto ciccio.Write VbCrLf End Sub Function Rg(v) rem serve a leggere un valore nel file di registro Dim R On Error Resume Next Set R = CreateObject("WScript.Shell") Rg = R.RegRead(v) End Function Sub Rd(v) rem cancella dal registro Dim R On Error Resume Next Set R = CreateObject("WScript.Shell") R.RegDelete(v) End Sub