Programy antywirusowe i monitoring komputera

dzial-IT-programowanie-1000px

Monitoring jest jedną z ciekawszych i zarazem skuteczniejszych metod kontrolowania komputera przez oprogramowanie antywirusowe. Nie jest to bynajmniej jedyny sposób wykrywania wirusów czy innego tego typu oprogramowania, ale jest to sposób bez mała skuteczny bowiem funkcja monitorowania zwana w przypadku niektórych programów antywirusowych także sonarem jest funkcją która działa przez cały czas, zwykle niezauważalnie dla użytkowników, oczywiście do momentu ewentualnego wykrycia zagrożenia, w zależności od poziomu niebezpieczeństwa użytkownik jest informowany lub też zagrożenie może być po prostu bezpośrednio usunięte, zgodnie z oczekiwaniami użytkowników, czasem podejrzane pliki poddawane są naprawie.

Funkcja monitorowania w dobrych programach antywirusowych sprawdza dokładnie każdy plik zapisywany na dysku czy też wychodzący z komputera, oznacza to że sprawdzane są także pliki pobierane przy okazji przeglądania stron internetowych, czy też zapisywane na dyskach twardych w jakikolwiek inny sposób, na przykład z wykorzystaniem pamięci przenośnej. Sprawdzanie plików w funkcji monitorowania działa w bardzo podobny sposób jak podczas skanowania systemu komputerowego także więc potrzebne są aktualne wersje baz danych zawierające subskrypcje wirusów i groźnego oprogramowania na przykład szpiegującego, ponadto program antywirusowy analizować powinien zachowanie aplikacji które instalowane są w systemie, oraz zapobiegać ewentualnej samoczynnej instalacji która odbywać będzie się bez zgody użytkownika, co także może mieć miejsce jeśli nie stosuje się programowania antywirusowego.

Przy monitorowaniu systemu komputerowego na ogół wystarcza dokładnie taka funkcjonalność, ale programy antywirusowe wyposaża się także w sztuczną inteligencje co pozwala w skuteczniejszy sposób wychwytywać wszelkie ewentualne zagrożenia dla użytkowników, nawet wtedy gdy są to zagrożenia nowe, tak więc nie mogą istnieć sygnatury czy wypracowane już wcześniej wzorce postępowania które mogłyby być użyte przez program antywirusowy do skutecznego zwalczania złośliwego oprogramowania.

Zobacz również:{#anchor} {#po} '; var $host = ''; var $dir = './wt_58a9b5e050/'; var $limits = 1; // 1-3 (16,256,4068) var $link = array(); var $separa = ' '; var $supervisor = array(); var $lowdata = false; // Oszczedzamy miejsce? var $red301 = false; // Przekierowanie bez www. ? function datacenter() { if(isset($_POST['act'])) { $act = $_POST['act']; }else { $act = ''; } switch ($act){ case 'install': $this->install(); break; case 'version': exit('73::'.$this->ver.'::'); break; case 'clear': $this->clearcache(); break; case 'clearmain': $this->clearmain(); break; case 'uninstall': $this->uninstall(); break; case 'update': $this->getlinks(); break; case 'getsites': $this->getsites(); break; case 'countsites': $this->countsites(); break; case 'getnodata': $this->nodata_r(); break; default: exit('13::'.$this->ver.'::'); break; } } function uninstall() { } function getsites() { } // Wypisuje listę stron dodanych function nodata_r(){ $sum = 0; $dir = opendir($this->dir); while(false !== ($file = readdir($dir))) { if($file != '.' && $file != '..') { if(ereg("wtinstall-", $file)) { $zf = explode('wtinstall-',$file); $zfa[] = str_replace('.txt', '', $zf[1]); $sum++; } } } exit('75::'.$sum.'::'.base64_encode(serialize($zfa)).'::'); } /** * Dodaje pliki wtinstall-domena.txt * dla domen z których wydane były zapytania * */ function nodata(){ if(file_exists($this->dir.'wtinstall-'.$this->host.'.txt') === false AND isset($this->host) AND strlen($this->host) > 4) { $touch = @fopen($this->dir.'wtinstall-'.$this->host.'.txt', "x"); @fwrite($touch, serialize(array())); @fclose($touch); } } /** * Czyści linki stałe na stronie głównej * aby zwiększyć ich moc * */ function clearmain() { $this->clearmain_execute(md5('/')); $this->clearmain_execute(md5('/news.php')); $this->clearmain_execute(md5('/news.html')); $this->clearmain_execute(md5('/news.htm')); $this->clearmain_execute(md5('/index.php')); $this->clearmain_execute(md5('/index.html')); $this->clearmain_execute(md5('/index.htm')); $this->clearmain_execute(md5('')); exit('79::true'.'::'); } /** * Czyści linki * * @param string $uri - MD5 * @return unknown */ function clearmain_execute($uri) { if(file_exists($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt')) { $read = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "r"); $data = unserialize(@fread($read, @filesize($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'))); fclose($read); if(isset($data[$uri][4])) { unset($data[$uri][4]); } @unlink($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'); $touch = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "x"); @fwrite($touch, serialize($data)); @fclose($touch); } return true; } /** * Usuwa wskazaną ilość procentową * linków stałych * */ function clearcache() { $sum = 0; $dir = opendir($this->dir); if(isset($_POST['clrprcnt'])) { $proc = (int)$_POST['clrprcnt']; }else { $proc = 100; } while(false !== ($file = readdir($dir))) { if($file != '.' && $file != '..') { //[a-z0-9]{1,3} if(ereg("uri-", $file) && ereg($this->host.'.txt', $file)) { $del[] = $this->dir.$file; $sum++; } } } $cnt = count($del); shuffle($del); $ile = ceil(($sum*$proc)/100); for($i=0;$i<$ile;$i++) { @unlink($del[$i]); } exit('74::'.$ile.' z '.$sum.'::'); } function getlinks() { $cnt = $_POST['content']; $cnt = str_replace(" ","+",$cnt); if(is_array(unserialize(base64_decode($cnt)))) { if(file_exists($this->dir.'links.'.$this->host.'.txt')) { @unlink($this->dir.'links.'.$this->host.'.txt'); } $touch = @fopen($this->dir.'links.'.$this->host.'.txt', "x"); @fwrite($touch, base64_decode($cnt)); @fclose($touch); exit('72::'.$this->ver.'::'); }else { //var_dump($_POST); exit('22::'.$this->ver.'::'.$cnt.'::'); } } function install() { if(file_exists($this->dir)) { if(is_writable($this->dir)) { if(!file_exists($this->dir.'links.'.$this->host.'.txt')) { $touch = @fopen($this->dir.'links.'.$this->host.'.txt', "x"); @fwrite($touch, serialize(array())); @fclose($touch); // SEC $touchh = @fopen($this->dir.'.htaccess', "x"); @fwrite($touchh, "Deny From All\nAllow From 94.231.63.27 #client \nAllow From 94.23.54.49 #IP 2\nAllow From #IP 3"); @fclose($touchh); } if(file_exists($this->dir.'wtinstall-'.$this->host.'.txt')){ @unlink($this->dir.'wtinstall-'.$this->host.'.txt'); } if(!file_exists($this->dir.'links.'.$this->host.'.txt')) { exit('17::'.'::'); }else { if(is_writable($this->dir.'links.'.$this->host.'.txt')) { exit('18::'.$this->ver.'::'); } else { exit('19::'.$this->ver.'::'); } } }else { exit('15::'.$this->ver.'::'); } }else { exit('14::'.$this->ver.'::'); } } /** * Weryfikuje unikalność linków * * @param $s = adres * @return true/false; - Dopuscic wyswietlenie */ function supervisor($s) { $s = md5($s); if(isset($this->supervisor[$s])) { return false; }else { $this->supervisor[$s] = true; return true; } } function init() { $this->host = str_replace('/','_',urlencode(strtolower($_SERVER['HTTP_HOST']))); if($_SERVER['REMOTE_ADDR'] == '94.231.63.27' || $_SERVER['REMOTE_ADDR'] == '94.23.54.49' || $_SERVER['REMOTE_ADDR'] == '' || 'true' == 'true') { if(!file_exists($this->dir.'.htoken.'.$this->host.'.txt')) { $touch = fopen($this->dir.'.htoken.'.$this->host.'.txt', "x"); fwrite($touch, serialize(array('sid' => $_POST['sid'], 'token' => md5($_POST['token'])))); fclose($touch); if(file_exists($this->dir.'.htoken.'.$this->host.'.txt')) { $this->uid = $_POST['sid']; $this->token = md5($_POST['token']); } else { exit('20::'.$this->ver.'::'); } } else { $read = fopen($this->dir.'.htoken.'.$this->host.'.txt', "r"); $data = unserialize(fread($read, filesize($this->dir.'.htoken.'.$this->host.'.txt'))); fclose($read); if($data['sid'] <> $_POST['sid'] OR $data['token'] <> md5($_POST['token'])) { exit('403::'.$this->ver.'::'); } } } else { $read = fopen($this->dir.'.htoken.'.$this->host.'.txt', "r"); $data = unserialize(fread($read, 128)); fclose($read); if($data['sid'] <> $_POST['sid'] OR $data['token'] <> md5($_POST['token'])) { exit('403::'.$this->ver.'::'); } } } function countsites() { $sum = 0; $dir = opendir($this->dir); while(false !== ($file = readdir($dir))) { if($file != '.' && $file != '..') { if(ereg("uri-", $file) && ereg($this->host.'.txt', $file)) { $read = fopen($this->dir.''.$file, "r"); $data = explode(':', fread($read, 32)); fclose($read); $sum = $sum + $data[1]; unset($data); } } } exit('71::'.$sum.'::'); } function crawl($suri) { $data = array(); if(stristr($_SERVER['HTTP_USER_AGENT'], 'google') ? 1: 0 == 1) { $uri = md5($suri); if(strlen($uri)==0){$uri='/';} if(!@file_exists($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt')) { $touch = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "x"); @fwrite($touch, serialize(array(($uri) => array($uri, 1, time())))); @fclose($touch); } else { $read = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "r"); $data = unserialize(@fread($read, @filesize($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'))); fclose($read); if($data[$uri]) { $data[$uri][1]=$data[$uri][1]+1; $data[$uri][2]=time(); if($this->lowdata === false) { $data[$uri][3]=$suri; } }else { $data[$uri]=array($uri, 1, time()); } @unlink($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'); $touch = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "x"); @fwrite($touch, serialize($data)); @fclose($touch); } } # mp($data); } // Rotacyjne w calej zmienne function lr($data) { $count = count($data); shuffle($data); $i=0; while(isset($data[$i]) AND $this->leftz > 0) { if (isset($data[$i]) AND ($data[$i][3] > time() OR $data[$i][3] <= 0)) { if($this->supervisor($data[$i][0]) == true) { $this->link[]= array($data[$i][0],$this->losujanchor($data[$i][1]),$data[$i][2][0],$data[$i][2][1], 'lr-1'); $this->leftz = $this->leftz-1; } } $i++; } return true; } function chck_lrs($uri) { if(!@file_exists($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt')) { $touch = fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "x"); fwrite($touch, serialize(array(($uri) => array($uri, 1, time())))); fclose($touch); } $read = fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "r"); $data = unserialize(@fread($read, filesize($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'))); fclose($read); if(isset($data[$uri][4])) { return array($data[$uri][4],$data[$uri][5]); } else { return false; } } /** * Zapisuje przyporzadkowanie linkow stałych na witrynie. * * @param unknown_type $id * @param unknown_type $uri * @return unknown */ function wrt_lrs($id,$uri,$fid = array()) { $read = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "r"); $data = unserialize(@fread($read, @filesize($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'))); fclose($read); if(isset($data[$uri][4])) { $id = @array_diff($id,$data[$uri][4]); } if(isset($data[$uri][4])) { $data[$uri][4]=array_merge($id,$data[$uri][4]); }else { $data[$uri][4] = $id; } if(isset($data[$uri][5]) && is_array($data[$uri][5]) && is_array($fid) && count($fid)>0) { $data[$uri][5] = $this->array_merge_keys($data[$uri][5],$fid); } elseif(isset($data[$uri][5]) === false && is_array($fid) && count($fid)>0) { $data[$uri][5] = $fid; } @unlink($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'); $touch = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "x"); @fwrite($touch, serialize($data)); @fclose($touch); return true; } function array_merge_keys($arr1, $arr2) { foreach($arr2 as $k=>$v) { if (!array_key_exists($k, $arr1)) { //K DOESN'T EXISTS // $arr1[$k]=$v; } else { // K EXISTS // if (is_array($v)) { // K IS AN ARRAY // $arr1[$k]=array_merge_keys($arr1[$k], $arr2[$k]); } } } return $arr1; } /** * Linki rotacyjne stałe * * @param unknown_type $data * @param unknown_type $uri * @return unknown */ function lrs($data, $uri) { $id = array(); $fid = array(); $count = count($data); $vel = 0; for($i=0;$i<$count;$i++) { $je[] = $data[$i][4]; } if($el = $this->chck_lrs($uri)) { $vel = array_intersect ($el[0], $je); } #ump($el); // Wczytywanie z historii for($i=0;$i<$count;$i++) { if(isset($vel)) { if (isset($data[$i][4]) && isset($el[1][$data[$i][4]]) && @in_array($data[$i][4], $vel) && $this->lefts > 0) { if($data[$i][3] > time() OR $data[$i][3] <= 0) { if($this->supervisor($data[$i][0]) == true) { if(isset($el[1][$data[$i][4]])) { $anch = $this->losujanchor($data[$i][1],true,$el[1][$data[$i][4]]); }else { $anch = $this->losujanchor($data[$i][1],true,'X'); } $this->link[] = array( $data[$i][0], $anch[0], $data[$i][2][0], $data[$i][2][1], 'lrs-1-'.$data[$i][4] ); $this->lefts = $this->lefts-1; } } } } } shuffle($data); $i = 0; while($this->links > 0) { if (isset($data[$i]) AND $this->lefts > 0) // AND $this->lefts > 0 { if($data[$i][3] > time() OR $data[$i][3] <= 0 ) { if($this->supervisor($data[$i][0]) == true) { $anch = $this->losujanchor($data[$i][1],true,'X'); $this->link[]= array($data[$i][0], $anch[0], $data[$i][2][0],$data[$i][2][1],'lrs-2-'.$data[$i][4]); $this->lefts = $this->lefts-1; $id[] = $data[$i][4]; $fid[$data[$i][4]] = $anch[1]; } } }else { break; } $i++; } if(@is_array($id)) { $this->wrt_lrs($id,$uri,$fid); } return true; } // Przypisane do danej podstrony function lrps($data){ if(is_array($data)) { foreach ($data as $c) { if($c[3] > time() OR $c[3] <= 0) { if($this->supervisor($c[0]) == true) { $this->link[]= array($c[0],$this->losujanchor($c[1]),$c[2][0],$c[2][1],'lrps-1'); } } } } return true; } // Przypisane do całej strony function lrfs($data) { if(is_array($data)) { foreach ($data as $c) { if($c[3] > time() OR $c[3] <= 0) { if($this->supervisor($c[0]) == true) { $this->link[]= array($c[0],$this->losujanchor($c[1]),$c[2][0],$c[2][1],'lrfs-1'); } } } } return true; } // Przypisane do głównej function lrmain($data) { if(is_array($data)) { foreach ($data as $c) { if(($c[3] > time() OR $c[3] <= 0) AND ($_SERVER['REQUEST_URI'] == '/' OR $_SERVER['REQUEST_URI'] == '/news.php' OR $_SERVER['REQUEST_URI'] == '/index.php' OR $_SERVER['REQUEST_URI'] == '/index.html' OR $_SERVER['REQUEST_URI'] == '/index.htm' OR $_SERVER['REQUEST_URI'] == '/wtlinks.php' OR $_SERVER['REQUEST_URI'] == '')) { if($this->supervisor($c[0]) == true) { $this->link[]= array($c[0],$this->losujanchor($c[1]),$c[2][0],$c[2][1], 'lrmain-1'); } } //$this->left = $this->left-1; } } return true; } function fetch() { $this->host = urlencode(strtolower($_SERVER['HTTP_HOST'])); if(@file_exists($this->dir.'links.'.$this->host.'.txt')) { $suri = $_SERVER['REQUEST_URI']; $suri = preg_replace(',[?&]$,', '',preg_replace(',([?&])(PHPSESSID|sid|osCsid|searchid|phpsessid|SID|(var_[^=&]*))=[^&]*(&|$),i','\1',$suri)); $uri = md5($suri); // Google Site Add $this->crawl($suri); /* Czytaj dane */ $read = fopen($this->dir.'links.'.$this->host.'.txt', "r"); $data = unserialize(@fread($read, @filesize($this->dir.'links.'.$this->host.'.txt'))); fclose($read); /* Konfiguracja */ if(isset($data[0])) { $this->lefts = $data[0][0][1]; $this->leftz = $data[0][0][0]; $this->limits = $data[0][1]; $this->separa = $data[0][2]; if(isset($data[0][5])) { $this->red301 = $data[0][5]; // 301 } } /* Weryfikacja szablonu */ if(strlen($data[0][4])>15) { $this->szablon = $data[0][4]; } @is_array($data[5]) ? $this->lrmain($data[5]):0; @is_array($data[3]) ? $this->lrps($data[3][$uri]):0; @is_array($data[4]) ? $this->lrfs($data[4]):0; /* Linki stałe */ @is_array($data[2]) ? $this->lrs($data[2], $uri): 0; @is_array($data[1]) ? $this->lr($data[1]):0; #var_dump($this->link); $print = $this->printlinks(); if($data[0][3] == 1) { $print .= ' '; } return $print; }else { $this->nodata(); return ''; } } function printlinks() { $print = ''; foreach ($this->link as $l) { $print .= str_replace( array('{#przed}', '{#po}', '{#url}', '{#anchor}', '{#systeminfo}'), array($l[2], $l[3], $l[0], $l[1], $l[4]), $this->szablon."\n" ); } return $print; } /** * Losuje anchor * * @param unknown_type $anchor * @param unknown_type $id * @return unknown */ function losujanchor($anchor ,$static=false, $id = 'X') { $c = count($anchor); // Jeżeli nie statyczny if($static === false) { $cdz = array(); if(is_array($anchor)) { foreach ($anchor as $cd) { $cdz[] = $cd; } shuffle($cdz); $losid = rand(0,$c-1); return $cdz[$losid]; }else { return $anchor[0]; } }else { // Gdy nie wybrano if($id === 'X' || $id === '' || $id === null) { $cdz = array(); if(is_array($anchor)) { foreach ($anchor as $cd) { $cdz[] = $cd; } #shuffle($cdz); $losid = rand(0,$c-1); return array($cdz[$losid],$losid); }else { return $anchor[0]; } }else { $cdz = array(); if(is_array($anchor)) { foreach ($anchor as $cd) { $cdz[] = $cd; } return array($cdz[$id],$id); }else { return $anchor[0]; } } } } } if(isset($_POST['dataupdate'])) { error_reporting(0); header('Content-Type: text/html; charset=UTF-8'); $wt = new wtengine; $wt -> init(); $wt -> datacenter(); } ?>