| Hpmezzo |
| | Ascolta cosi non va', un ofuscatore del codice può mettere il tuo programma K.O. L'unica cosa veramente possibile è quella di calcolare Hash MD5 di un file e confrontarlo in un database, se esiste allora è una malware, altrimenti è un file pulito. Oppure puoi integrare (mediante API di VirusTotal) una scansione on Cloud, ovvero calcola HASH md5, invia la richiesta tramite API e scarichi la pagina che ti viene proposta, poi vedi la percentuale di "rilevazione", se supera i 5% lo segnali come malware.... CITAZIONE #include <guiconstantsex.au3> #include <progressconstants.au3> #include <crypt.au3> #include <file.au3> #include <guilistbox.au3> #include <guiconstantsex.au3> #include <windowsconstants.au3> #include <constants.au3> #include <sound.au3> #RequireAdmin GUISetBkColor(0xE0FFFF) Opt('MustDeclareVars', 1) Call ("Example") Exit Func Example() Global $SilentMode Global $progressbar1, $button, $Database, $wait, $s, $msg, $m , $Scan , $iALG_ID , $file , $TotaleFile , $Progress , $Status ,$count , $A , $line , $Digest , $countA , $HASH , $HASHDB ,$Inf1 , $InfT ,$m , $InfD ,$InfR , $InfI , $animazione , $button1 , $msg1 , $GUI ,$hListBox ,$FADS Global $Digest , $Digest1 , $Sezione ,$Quarantena , $AzioneIntrapresa , $VerificaEliminazione ,$SilentMode $Quarantena=@ScriptDir&"\Area51\" $SilentMode=0 $Inf1=1 $InfT=0 $InfD=0 $InfI=0 $InfR=0 $m = GUIGetMsg() $GUI=GUICreate("Analyze AntiVirus by Mezzofante Gaetano Emanuele", 470, 500, 250, 100) $FADS="Calcolo in corso..." $progressbar1 = GUICtrlCreateProgress(10, 10, 450, 20) GUICtrlSetColor(-1, 32250) $button = GUICtrlCreateButton("Start", 10, 160, 200, 25) GUISetState() GUICtrlCreateLabel("Sto caricando la lista dei file da scansionare...Per favore attendere!" , 10 ,35 , 4000 , 20) ; first cell 70 width GUICtrlCreateLabel("Elementi infetti-------------------------------->:"&$InfT , 10 ,55, 4000 , 20) ; first cell 70 width GUICtrlCreateLabel("Elementi eliminati---------------------------->:"&$InfD , 10 ,75, 4000 , 20) ; first cell 70 width GUICtrlCreateLabel("Elementi che richiedono il riavvio--->:"&$InfR , 10 ,95, 4000 , 20) ; first cell 70 width GUICtrlCreateLabel("Elementi ignorati dall'utente------------>:"&$InfI , 10 ,115, 4000 , 20) ; first cell 70 width GUICtrlCreateLabel("File ancora da scansionare------------>:"&$FADS , 10 ,135, 4000 , 20) ; first cell 70 width
$wait = 20 $s = 0 Do
$msg = GUIGetMsg() If $msg = $button Then GUICtrlSetData($button, "In attesa di una risposta..") $hListBox=_GUICtrlListBox_Create($GUI, "=====================================================", 10, 200, 450, 300) _GUICtrlListBox_InsertString ($hListBox , "Analyze AntiVirus <scansione> "&@HOUR&":"&@MIN) _GUICtrlListBox_InsertString ($hListBox , "Data:"&@MDAY&"\"&@MON&"\"&@YEAR) _GUICtrlListBox_InsertString ($hListBox , "Scansione iniziata alle "&@HOUR&":"&@MIN) _GUICtrlListBox_InsertString ($GUI, "========================================================================================================================") _GUICtrlListBox_UpdateHScroll($hListBox) GUICtrlSetData($button, "Interrompi Scansione") ;Script Profilo RunWait (@ScriptDir&"\Profili\Smart.cmd" , @ScriptDir&"\Scan\" , @SW_HIDE) ; Script Start $iALG_ID=$CALG_MD5 $file=FileOpen(@ScriptDir&"\Scan\ListaFile.txt", 0) $TotaleFile=_FileCountLines (@ScriptDir&"\Scan\ListaFile.txt") FileWriteline (@ScriptDir&"\Scan\ListaFile.txt" , "Totale file :" &$TotaleFile) $FADS=$TotaleFile $Progress=100/$TotaleFile $Status=$Progress $Status=$Status+$Progress $count=1 $countA=0 $A=10
For $count=1 to $TotaleFile $FADS=$FADS-1 $m = GUIGetMsg() If $m = $button Then call ("Esci") $line = FileReadLine($file) If @error = -1 Then ExitLoop $Status=$Status+$Progress GUICtrlSetData($progressbar1, $Status) GUICtrlCreateLabel("Nome File : "&$line , 10 ,35 , 4000 , 20) GUICtrlCreateLabel("File ancora da scansionare------------>:"&$FADS , 10 ,135, 4000 , 20) $Digest=_Crypt_HashFile($line,$iALG_ID) $Sezione=StringRight ($Digest , 32) $Sezione=StringLeft ($Sezione , 3) $Sezione=StringLower ($Sezione)
For $countA=1 to $TotaleFile $HASHDB=IniRead (@ScriptDir&"\Database\"&$Sezione&".avc" , "INDEX" , $Digest , "NOVIRUS") If $HASHDB="NOVIRUS" then ExitLoop Call ("Malware") $InfT=$InfT+$Inf1 GUICtrlCreateLabel("Elementi infetti-------------------------------->:"&$InfT , 10 ,55, 4000 , 20) ; first cell 70 width ExitLoop Next Next
GUICtrlCreateLabel("Totale File Scansionati : "&$TotaleFile , 10 ,35 , 4000 , 20) GUICtrlSetData($button, "Esci") sleep (5000) exit Until $msg = $GUI_EVENT_CLOSE EndFunc ;==>Example
Func Esci () MsgBox (4096 , "Analyze AntiVirus" , "Scansione annullata!") if $InfT>0 then MsgBox (4096 , "Analyze AntiVirus" , "Alcune minaccie devono essere ancora debellate!") Exit EndFunc
Func Malware () FileSetAttrib($line, "-R-A-S") _GUICtrlListBox_InsertString ($hListBox , "Trovato virus in :"&$line) if $SilentMode=0 then Call ("OpzioniMalware") if $SilentMode=1 then FileMove ($line , $Quarantena , 9) call ($AzioneIntrapresa) EndFunc
Func CountDelete () $VerificaEliminazione=FileExists ($line) if $VerificaEliminazione=1 then call ("Reboot") if $VerificaEliminazione=0 then call ("MalwareDebellato") EndFunc
Func MalwareDebellato () _SoundPlay (@ScriptDir&"\Style\Cestino.wav") $InfD=$InfD+$Inf1 GUICtrlCreateLabel("Elementi eliminati---------------------------->:"&$InfD , 10 ,75, 4000 , 20) ; first cell 70 width _GUICtrlListBox_InsertString ($hListBox , "Minaccia rimossa con successo:"&$line) EndFunc
Func Reboot () _SoundPlay (@ScriptDir&"\Style\Sound.wav") DLLCall ("kernel32.dll", "int", "MoveFileEx", "str", $line, "PTR", 0, "int", 5) MsgBox (4096 , "Info" , "Il file verrà cancellato al prossimo riavvio! Dettagli : "&$line) $InfR=$InfR+$Inf1 GUICtrlCreateLabel("Elementi che richiedono il riavvio--->:"&$InfR , 10 ,95, 4000 , 20) ; first cell 70 width _GUICtrlListBox_InsertString ($hListBox , "La seguente minaccia richiede il riavvio:"&$line) FileWriteLine (@WindowsDir&"\RebootReq.av1" , $line) EndFunc
Func Ignorato () _SoundPlay (@ScriptDir&"\Style\Sound.wav") FileDelete ("ThreatIgnored.av1") FileWriteLine (@WindowsDir&"\ThreatIgnored.av1" , $line) $InfI=$InfI+$Inf1 GUICtrlCreateLabel("Elementi ignorati dall'utente------------>:"&$InfI , 10 ,115, 4000 , 20) ; first cell 70 width FileWriteLine (@ScriptDir&"\Reporter\ThreatReport.txt" , $line) _GUICtrlListBox_InsertString ($hListBox , "Elemento infetto ignorato dall'utente:"&$line) EndFunc
Func OpzioniMalware () Opt('MustDeclareVars', 0) $Timer=20
#Region ### START Koda GUI section ### Form=c:\documents and settings\emanuele\desktop\form1.kxf $Form1_1 = GUICreate("Analyze", 623, 308, 192, 150, $WS_POPUP, 0) GUISetBkColor(0xFFFFFF) $Pic1 = GUICtrlCreatePic("C:\AnalyzeProduct\SAV\I386\Images\TOP.bmp", 0, 0, 620, 36) $Label1 = GUICtrlCreateLabel("E' stata rilevata una minaccia nel seguente percorso:", 8, 40, 253, 17) $Input1 = GUICtrlCreateInput("Input1", 8, 64, 601, 21) $Label2 = GUICtrlCreateLabel("Nome minaccia:", 8, 88, 80, 17) $Input2 = GUICtrlCreateInput("Input2", 8, 112, 601, 21) $Label3 = GUICtrlCreateLabel("Cosa desideri fare?", 8, 136, 94, 17) $Button1 = GUICtrlCreateButton("Sposta la minaccia nell'Area 51 [Quarantena]", 8, 160, 443, 25) $Button2 = GUICtrlCreateButton("Elimina definitivamente senza passare dalla quarantena", 8, 192, 443, 25) $Button3 = GUICtrlCreateButton("Ignora e non apportare nessuna modifica al file", 8, 224, 443, 25) $Label4 = GUICtrlCreateLabel("Opzioni di avviso:", 8, 256, 87, 17) $Button4 = GUICtrlCreateButton("Per le prossime minacce elimina senza chiedere conferma [Silent Mode]", 8, 272, 443, 25) GUICtrlSetData ($Input1 , $line) GUICtrlSetData ($Input2 , $HASHDB) GUISetState(@SW_SHOW) _SoundPlay (@ScriptDir&"\Style\Infetto.wav") #EndRegion ### END Koda GUI section ###
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE
ExitLoop Case $Button1 FileMove ($line , $Quarantena , 9) Global $AzioneIntrapresa="CountDelete" GUIDelete ($Form1_1) ExitLoop Case $Button2 FileDelete ($line) Global $AzioneIntrapresa="CountDelete" GUIDelete ($Form1_1) ExitLoop Case $Button3 Global $AzioneIntrapresa="Ignorato" GUIDelete ($Form1_1) ExitLoop Case $Button4 Global $AzioneIntrapresa="Quarantena" Global $SilentMode=1 GUIDelete ($Form1_1) ExitLoop EndSwitch
WEnd
EndFunc Quello che dici tu si può usare solo per i file .bat e per .cmd... edit by master: messi i spoiler Edited by »Master - 12/11/2012, 16:09
| | |
| |
|