Бағдарламаларды компьютерлік вирустардан қорғау

Егер Сіз тәжірибесі ұзақ ДК-мен жұмыс істейтін болса, онда, мүмкін, қазірдің өзінде тап компьютерлік вирустармен немесе ең болмағанда туралы естіген. Компьютерлік вирус-бұл программа өндіретін Сіздің ДК әрекет, онда Сіз көмекке мұқтаж және олар туралы емес подозреваете. Оның басты ерекшелігі болып табылады қабілеті «көбейту», т. е. жасауға көптеген дайын одан әрі жұмыс істеу үшін дана вирусының. Вирустар «цепляются» әдеттегі атқарылатын файлдарға типті .EXE, .СОМ немесе загрузочным секторларына жеке ақпарат тасығыштарды (дискет), және, осылайша жылжиды бір ДК-басқа.
Бұрын бастапқыда әбден невинным развлечением скучающих бағдарламашылар компьютерлік вирустар бүгін нағыз апат үшін ДК пайдаланушылардың саны және типтері осындай бағдарламалар өсуде ужасающей жылдамдықпен, ал өздері вирустар бірқатар жағдайларда сатып алған өте жағымсыз қасиеттері-олардың кейбіреулері қабілетті құртып файлдық құрылымын дискілердің барлық апатты пайдаланушы үшін салдары. Әдебиетте [14] сипатталған бұрын-соңды болмаған жағдай, бұл вирус Үш күн (2-4 қараша 1988 ж.) жолынан іс жүзінде барлық компьютерлік желі. Болды парализованы компьютерлер ұлттық қауіпсіздік Агенттігінің Стратегиялық қолбасшылық АҚШ, жергілікті желі барлық ірі университеттер мен зерттеу орталықтары. Тек соңғы сәтте құтқарып қалды жүйесіне ұшуды басқару ғарыш кемелерінің Шаттл. Ереже соншалықты маңызды, бұл тергеу дереу кірісті ФТБ. Кінәлі апаттар, причинившей залал 100-ден астам миллион доллар болып шықты бітіруші курстың студенті Корнеллского университетінің Р. Моррис, придумавший жеткілікті хитрую түрі вирус. Ол алынып тасталды университетінің құқығымен қалпына келтіру арқылы айыпталып төленуге айыппұл 270 мың доллар және үш айға түрмеге қамау жазасы тағайындалды.
Түсіндіру қиын, ол үшін бағдарламашылар күш жұмсайды және құру барлық изощренных вирустың, өйткені олардың авторлары әрдайым дерлік болып қалады немесе үміттенеді қалуы өтініштер жасырын өтініштер болып танылып, сондықтан табиғи адам үшін ұмтылу танымалдыққа мұнда алынып тасталды. Мүмкін бұл сәтсіз таңдалған әзіл (осы нұсқасы ұстанған Р. Моррис), мүмкін бұл патологиялық ауытқушылықтары бар психикасына, мүмкін түсініктеме мұның талпынысын табуға құру вирусқа қарсы бағдарламалар бар. Қалай болмасын, бізге болмайды деп саналатын мүмкіндігімен жұқтыру ДК компьютерлік вирус.
2. ЦИКЛ ЖҰМЫС ІСТЕУ ВИРУСТАР

Циклінде тіршілік кез келген вирустың үш кезеңге бөліп қарастырады. Бастапқыда, вирус орналасқан неактивном жай-күйі. Бұл күйде, ол енгізілген денесі орындалатын файл немесе орналасқан загрузочном секторында диск «күтеді» өз сағат. Дәл неактивном жай-күйі вирустар көшіріледі бағдарламаларымен бірге немесе дискетами бір ӨК басқа (алмасу бағдарламаларымен пайдаланушылар арасындағы ПК-құбылыс кәдімгі, және Сіз, оқырман, мүмкін копировали полюбившуюся Сіз ойын немесе мәтіндік редакторы, күдікті, баланың реакциясы және вирус). Әрине, неактивном жай-күйі вирус ештеңе істеу мүмкін емес. Ол өз жұмысын бастады, қажет орындалатын файлды немесе загрузиться залалданған дискеталар. Осы сәтте жандандырылады вирус не жасайды резидентную жадында бағдарламасын қабілетті порождать көшірмелері шығаруға немесе қандай да бір сұрапыл әрекет немесе дереу жұмысқа кіріседі.
Егер вирус құрды резидентную бағдарлама болса, онда оны жандандыру жүзеге асырылады әр түрлі тәсілдермен — бәрі қиял автордың вирусының. Әдетте, вирус перехватывает үзу $21 табылатын түйінді қол жеткізу үшін кез-келген операциялар MS-DOS. Осылайша, кез-келген әрекеті оқу немесе жазу ақпарат диск немесе пернетақтада дисплей әкеледі жандандыру резидентной бағдарламасының вирусының. Алғаннан кейін (немесе жандандыру резидентной бағдарламалар) вирус кіріседі «көбейту»: ол отыскивает қолайлы орындалушы файлды ендіріп, өз коды оның денесі (төменде қараңыз). Әдетте, вирус зарарлайды тек бір орындалатын файлға бір рет бұзғаны үшін, қолданушы назар аударған жоқ шамадан тыс баяулауы жұмыс бағдарламалар: екінші кезең вирустың тіршілік — бұл кезең белсенді көбею, сондықтан вирустық бағдарлама ұмтылады барынша жасыру пайдаланушы ДК қызметінің нәтижелері.
Кейін зарарданғаны көп файлдар туындауы мүмкін үшінші кезең, байланысты сыртқы көріністеріне вирустың. Компьютер кенеттен бастайды, өздерін біртүрлі: зазвучит ли музыкалық фраза, немесе болады «сыпаться рәміздері» дисплей экранында емес, мәні маңызды, ең бастысы, тек осы сәтте Сіз ужасом есте, бұл қатты дискіде орналасқан өте маңызды Сіз үшін деректер немесе бағдарлама, Сіз үлгерген жоқ немесе алмады көшірілетін дискеталар. Өкінішке орай! Кейбір вирустар осы сәтте мүмкін қазірдің өзінде қайтарымсыз бұзатын файлдық құрылымы.
Бұл табылған кезде вирустың? Ең алдымен үрейге бой алдырмаңыз, өйткені емес, барлық вирустар ерекшеленеді «кровожадностью». Керек выключить компьютер embed диск икемді диск алдын ала припасенную эталонную жүйелік дискет (ешқашан ататын одан қорғауға!) мен қайтадан іске қосу компьютер. Егер компьютерде бар арнайы батырмасы қайтадан қосу үшін {RESET немесе INIT) болады, оны пайдалану және өшіруге/қосуға компьютер, бірақ барлық жағдайларда тырыспаңыз перезагрузиться көмегімен Ctrl-Alt-Del: кейбір вирустың Сіз избавитесь осылайша. Содан кейін іске қосу керек қандай да бір бағдарлама—антивирус (мысалы, AIDSTEST Д. Н.Лозинского) және оның көмегімен ауыздықтау және вирус алып тастаңыз. Егер вирусқа қарсы бағдарлама анықтай алмайды вирус немесе қолыңызда жоқ осындай бағдарламалар керек көріңіз, сізге қажетті Сізге қатты дискіге, егер бұл жөн жасауға, көшіруге, барлық ең құнды (бірақ тек орындалатын файлдарды!) «дискеталар. Содан кейін қайтадан пішімдеу қатты диск, ауыстыру, оған эталонную көшірмесі ДОС және қалпына келтіруге байланысты дискет болса, ол аман қалды.
3. «ВАКЦИНАЦИЯ» БАҒДАРЛАМАЛАР

Не істеу керек, бұл безрадостная көрініс емес, шындыққа айналды? Бір жауап айқын-мезгіл-мезгіл (мүмкіндігінше жиірек) сақтауға өмірлік маңызы бар Сіз үшін жұмыс нәтижелері дискеталарда. Оңай ештеңе жоқ беруге қарағанда, бұл кеңес, әлдеқайда қиын, өзін итеріп ұстануға оған: мен өзі, шынымды айтсам, алыс емес, әр күні жаратудамын уақыт мұрағаттау. Екінші жауабы бар кем айқын. Оның қарапайым идея мен алғаш рет таныстым керемет бабында Ф. Н.Шерстюка.

Артықшылықтары осы идеяның анық: айырмашылығы әзірлеушілер көптеген вирусқа қарсы бағдарламалардың күресетін нақты түрлерімен вирустардың, Сіз сақтауға файлында бағдарламаның кейбір негізгі ақпаратты оның незараженном түрінде, сондықтан жұқтыру фактілері бойынша кез келген түрімен вирус оңай болуы мүмкін орнатылған уақытта қосу Сіздің бағдарламасы.
3.1. Тақырып орындалатын файлдар

Қандай туралы ақпаратты незараженном файлда керек сақтауға болады? Бұл сұраққа жауап беру үшін білу қажет келісім ДОС туралы форматтағы орындалатын файлдарды. Белгілі болғандай, екі форматы: СОМ және EXE. Кез-келген программа, өңделетін жүйе Турбо Паскаль 4.0 нұсқасы және одан жоғары болуы мүмкін оттранслирована тек EXE-файл, сондықтан барлық одан әрі пайымдау жатады осы форматы.
Басында EXE-файл орналасады тақырыбы көрсетілген барлық қажетті ақпарат түрлендіру үшін дискілік файлды дайын жұмыс бағдарламасы. Алғашқы 28 байт тақырып мынадай құрылымға сәйкес келеді:
Type
HeadExeType = record
Sign: Word; {Белгісі EXE-файл}
PartPag: Word; {Бөлігі толық емес секторының соңында файл}
PageCnt: Word; {Саны секторларын қоса алғанда, толық емес}
ReloCnt: Word; {элементтердің Саны кестеде орнын ауыстыру}
HdrSize: Word; {Ұзындығы атау-параграфтарда}
MinMem: Word; {ең Аз мөлшері кучи (параграфтарда)}
МахМет: Word; {Максималды мөлшері кучи (параграфтарда)}
ReloSS: Word; {Бастапқы мәні сегмент стек SS}
ExeSP: Word; {Бастапқы мәні көрсеткіштің SP стек}
ChkSum: Word; {Бақылау сомасы барлық сөздердің файл}
ExelP: Word; {Ығысуы нүктелері бағдарламасын іске қосу}
ReloCS: Word; {Бастапқы мәні сегмент кодын CS};
TabiOff: Word; {Ығысуы бірінші элементі кестенің орнын ауыстыру}
Overlay: Word; {Нөмірі оверлея немесе 0 үшін негізгі бағдарлама}
end; {HeadExe}

Қалған элементтері тақырыбын қамтиды аталатын өлшемді кестені жылжыту арналған параметрлер мекен жүктелген. Кесте басталады байт TabiOff басынан файлды қамтиды ReloCnt четырехбайтных элементтердің келесі түрі:
Type
ReloTablltem = record
ItemSeg: Word; {Сегменті орны ауыстырылатын мекен-жайы}
IternOfs: Word; {Ығысуы орны ауыстырылатын мекен-жайы}
end;
Белгісі EXE-файл сақталады жолында Sign түрінде рәміздер «MZ» (код $5A4D) — бұл белгінің басталуы тиіс кез-келген EXE-файл. Өріс HdrSize құрамында ұзындығын барлығы тақырып параграфтарында (учаскелерінде жад ұзындығы 16 байт әрбір). Өріс PartPag және PageCnt анықтайды жалпы ұзындығы загружаемой еске бөлігінде EXE-файл келесі формула бойынша есептеледі:
L = (PageCnt-l)*512 + PartPag — HdrSize*16
Қалған бөлігі файл (ұзындығы EXE-файлдың көп болуы мүмкін » L+HdrSize*16) тиеу кезінде бағдарламаны есепке алынбайды. Әдетте, таиланд, файл, құрылған жүйе Турбо Паскаль, (егер, әрине, бар қалдығы) бар пайдаланылатын ақпарат кірістірілген отладчиком, немесе оверлеи.
Басым көпшілігі EXE вирус пристыковывает өз бағдарламасын соңына файл үшін бұл бағдарлама жүктелгеннен еске және оған берілді басқармасы, өзгертеді өріс PartPag, PageCnt, ReloCS, ExelP (мекен-жайы нүкте, қайда беріледі басқармасы жүктегеннен кейін) және, мүмкін, кейбір басқа өріс. Бұндай тәсіл кезінде енгізудің жалпы ұзындығы загружаемой еске бөлігін файл құрауы тиіс
ExeSize = FileSize + VirusSize,
онда FileSize толық ұзындығы EXE-файл VirusSize-ұзындығы бағдарламасының вирусының. Өйткені қалдығы фала сақталуы мүмкін оверлеи (немесе мұрағат үшін өздігінен түсіретін мұрағаттық бағдарламалар), ұзындығы ExeSize болуы мүмкін тым үлкен, сондықтан бағдарлама алмайды загрузиться жадқа немесе жұмыс істей алады қалыпты түрде. Кейбір сауатсыз жазылған вирустар ескермейді бұл жағдай тез және өзіне береді, жұқтырған бағдарлама өз жұмысын тоқтатар.
Басқа тәсіл енгізу вирустың пристыковка кодын вирустың басталғанға дейін загружаемой бағдарламасының бір бөлігі және бірден тақырыбымен файл. L — загружаемая естелік бөлігі файл.
Мұндай тәсілін енгізуге мүмкіндік береді жүктеп алу құрметіне бүкіл EXE-файл, ал ұзындығы жүктелген бағдарламаның артып келеді, тек ұзындығы кодын вирусының. Қарамастан кажущееся артықшылығы мұндай тәсіл, ол пайдаланылады өте сирек. Оны жүзеге асыру әлдеқайда қиын, өйткені алдында берумен басқарудың негізгі бағдарлама вирус тиіс ауыстыра 256 байт префикс бағдарламалық сегментінің {PSP) соңына өзінің кодын, сондықтан олар тікелей алдында денеге бағдарламасы-олай болмаған жағдайда құжаттардың негізінде маңызды байланыс бағдарламаны PSP немесе салыстырмалы адрестеу ең бағдарламасы.
Сонымен қатар, процесінде жұқтыру ол ұлғайту шамасына VirusSize жолында IternOfs әрбір элементі кестенің орнын ауыстыру және абсолютті адрестері, аталған осы элементі. Айырмашылығы стандартты тиеушінің ДОС вирусына келеді түзетуге емес загруженную бағдарламасын, ал оның файл бейнесі. Өйткені EXE бағдарламасы күрделілігі орташа болуы мүмкін бірнеше жүздеген элементтері кестенің орнын ауыстыру, баптау процесі кестесінің вирусын әкеледі заметному уақытының ұлғаюына бағдарламасын іске қосу, обнаружиться пайдаланушы. Кезеңінде көбею вирустар ұмтылады жасыру пайдаланушы нәтижесі өз қызметі, сондықтан EXE-файлдар сирек вирустармен зақымданады, пристыкованными файлдың басына.
Әрине, бар мүмкіндігін енгізу вирустың тікелей денесі атқаратын. Алайда, іс жүзінде бұл әрдайым дерлік білдіреді бұзу логика жұмыс бағдарламасы, сондықтан мұндай вирус дереу анықталады.
Талдау айтқандарына маңызды қорытынды жасауға мүмкіндік береді: іс жүзінде кез келген қолданыстағы вирус (немесе вирус енді ғана құрылатын болады!), есептелген жеңіліс EXE-файл, пристыковывает өз кодын файлдың соңына және өзгертеді, оның тақырыбы. Демек, бақылау үшін жұқтыру фактісі бағдарламасының және вирус жою қажет болса, онда сақтап тақырып файл және оның эталонную ұзындығын және мерзімді салыстырып жарамды тақырыбы мен ұзындық мәліметтердің эталондық мәндеріне. Бұл ескеру керек, бұл жағдай кейбір вирустар бақылайды кез келген өтініш дискілі секторлары, оларда орналасқан, олардың бағдарламасы, «подсовывают» незара-женные көшірмелері осы секторлардың. Мұндай вирустар (вирустар деп атайды—невидимки) куәліке табу көмегімен стандартты өтініш функцияларына ДОС. Олармен күресу үшін пайдаланады тікелей жүгіну BIOS-секіріп кетуіне себеп $13.
3.2. Қорғау жаңадан құрылған бағдарламалар

 

Негізгі ақпаратты (видео, қысқалық үшін, атай, оның кілті) туралы незараженной бағдарламасына сақтауға болады жеке файлда, бірақ бұл жағдайда қаупі бар жоғалтып қосымша файлды көшіру кезінде немесе қате оны құрту. Әлдеқайда сенімді сақтауға кілт теле өзінің қорғалатын файл. Өкінішке орай, оның болмайды, өзбектерде вирусына кезінде-стыковать файлдың соңына, т. б. жағдайда вирус жұқтыру өзгертеді өріс PartPag және PageCnt және біз ешқашан анықтай онда орын файлда, онда ол орналасқан. Еске алайық, бұл барлық тұрақтылар (соның ішінде типизированные) құрылады кезеңінде бағдарламаның компиляция, егер файлда, міндетті түрде бар облысы деректерді қамтитын мәндері осы тұрақтылар. Бұл облысы Турбо Паскалевых бағдарламалары орналасады, ең соңында загружаемой бөлігін файл (суретті қараңыз).6.2).
Демек, біз жариялауға тиіс бағдарламасында типизированную тұрақтылар арналған сақтау кілт, ал содан кейін файл облысы, отведенную үшін оны орналастыру, орналастыруға қажетті ақпарат.

Қандай тамырын EXE-файл орын алып жатқан кілті? Әрине, оның алдында бағдарламасында орналастыруға қандай да бір типизированную константу өзіне тән мәнімен (мысалы, алдын ала келісілген мәтіндік жолы), содан кейін отыскивать оны қосыңыз. Алайда осындай шешім екіталай болады қанағаттанарлық деп танылсын: біріншіден, әрқашан ықтималдығы қандай да бір фрагменті кодтар бағдарламасының құрамында сол тізбекті байт, бұл тақырып кілтінің; екіншіден, тура қарап кейде үлкен көлеміне EXE—файлды іздеп, керекті тұрақтылар. Айтарлықтай изящнее көрінеді негізделген шешім дәлме-дәл есептеу ығысу басынан файлды дейін кілт.
Бұл үшін анықтау керек начало облысы деректерді файлда. Атауында файлды көзделмесе, ешқандай ақпарат туралы бастапқы мәні тіркелімінің DS сақталатын деректер сегменті. Берер алдында басқару бағдарламасы тиеуші белгілейді мәні осы тіркелімінің, сондықтан ол нұсқаған болатын басталуы деп аталатын префикс бағдарламалық сегментінің {PSP), ал іске қосылған бағдарлама өзі белгілеуі тиіс оның тиісті түрде орындалуы.
Префикс бағдарламалық сегментінің ұзындығы 256 байт (16 параграфтар) орналастырылады тиеуші жедел жадында алдында жүктелген бағдарлама. «PSP бар әртүрлі қызметтік ақпарат, ол болуы мүмкін жеткілікті үшін маңызды ДОС және жұмыс істейтін бағдарлама (PSP, мысалы, сақталады параметрлері өтініш бағдарламасы), бірақ онда нұсқаулар жоқ мазмұн тіркелімінің DS. Осылайша, табу начало облысы деректерді файлда жеткілікті қиын. Алайда, бұл қиын емес жасауға жұмыс бағдарламасы-осы үшін көзделген стандартты функция DSeg, возвращающая сегменті. Егер бағдарлама алмады алуға, сондай-ақ туралы ақпарат сегментінде PSP басталатын загруженная бағдарлама еді вычислить ығысуы файлында оның басталғанға дейін облысы. Мұндай мүмкіндік бар,-функциясы MS-DOS нөмірімен $62 қайтарады тіркелімінде ВХ мәні сегментінің PSP. Демек, бағдарлама алуы тиіс маңызы бар екі сегменттерінің, вычислить олардың айырмашылықты және, осылайша, анықтау орны файлда басталатын деректер облысы.
Қалады проблемасы-қалай табуға константу. Турбо Паскаль орналастырады тұрақтылар саласындағы деректерді қарай олардың хабарландыру. Біле мөлшері әрбір тұрақтылар және оларды хабарландырулар, можно вычислить орналастыру орны өзімізге керекті типизированной тұрақтылар. Алайда, бұл әдіс жарамайды арналған әмбебап бағдарламаны қорғау, өйткені жариялау тәртібі тұрақтылар өзгеруі мүмкін бағдарламасы. Бақытымызға орай, біз пайдалану операциясын алу мекенжайлары @. Нәтижесі қолдану осы операциялар мекен-тұрақтылар, таңдалған кілт ретінде, болып табылады көрсеткіш (четырехбайтный мекен-жайы); ығысуы мекен-жайы, ол құрамында болып табылады бізге қажетті ығысуымен басталғанға кілтті басталуына қатысты облысы.
3.3. Модуль F_Anti

Бұл параграфта сипатталған модуль F_Anti, онда жүзеге асырылады барлық қажетті іс-қимылды орнату жөніндегі кілтті жаңадан құрылатын EXE-файл және келесі тексеру осы кілттің әр жүктеу кезінде. Толық мәтін модуль см. прил.П7.
Кілт ретінде бақылау үшін жұқтыру фактісі EXE-файл модулінде F_Anti пайдаланылады типизированная константа Head, тиісті мұндай деректер құрылымы:
Type
НТуре = record
ЕМЕС : HeadExeType; {Эталондық тақырып файл}
HL : Longint; {Эталондық ұзындығы файл}
HF : Boolean; {Байрақ кілтті орнату}
Key: Word ; {Шифр қорғау үшін кілт}
end;
Құру кезінде осы типизированной тұрақтылар компилятор жолында HF орналастырады мәні False. Іске қосылған бағдарлама талдайды, бұл өріс. Бірінші айдағанда мал HF = False, нәтижесінде бағдарлама тудырады рәсімін Save орындау барысында оның файлында сақталады эталондық тақырыбы мен бастапқы ұзындығы файл. Бұл ретте бір мезгілде жолында HF (файлында бағдарлама!) орналастырылады мәні True, сондықтан кез келген кейіннен бағдарламасын іске қосу орнына Save болады туындады рәсімі CheckFile, жүзеге асырады және қажетті бақылау файл. Егер бақылау барысында анықталса, ең болмағанда сәл ғана айырмашылығы-тақырып файлды оның эталон сақталған Head бағдарламасы туралы хабарлайды фактісі жұқтыру ұсынады қалпына келтіру, бүлінген тақырыбы мен бастапқы ұзындығын файл.
Қалпына келтіру кезінде жұқтырған файлдың мына әрекеттер жүзеге асырылады:
• жұқтырылған файл копируется файлын кеңейте отырып, VIR-бұл мүмкіндік береді жағдайда сәтсіз талпыныстары қалпына келтіру қайталауға оны тағы бір рет; сонымен қатар, қаласаңыз, Сіз беруге әзірлеушілерге вирусқа қарсы бағдарламалардың көшірмесі вирустың әзірлеу үшін әдістері оның табу және жою;
• мекен-жайы талданады іске қосу залалданған: егер салыстырмалы мәні сегментінің нүктесі іске қосу у залалданған бағдарламаның кем эталоне, онда бұл вирус орналасады басында немесе ортасында.
Егер бағдарлама іске қосылады қазірдің өзінде бағдарламалар зарарланған КОМПЬЮТЕР. бұл тақырып файл болады вируспен бүлінген, және сол кезде қорғау жүйесі болады ревностно сақталуын қадағалауға, вирустың! Бұл жағдайда, бағдарлама ескертеді пайдаланушының мүмкін еместігі туралы қалпына келтіру (егер Сізді қызықтырды описываемый тәсілі вирустармен күресудің көріңіз өзгертуге бағдарламасын қорғау, сондықтан ол жұмыс істеді, және бұл жағдайда);
• егер вирус пристыкован файлдың соңына, онда восстанавливаемый файл көшіріледі эталондық тақырыбы мен незараженная бөлігі бастап байт TablOff + ReloCnt’4 файлдың басталу және байт FileSize-HL атап өтемін келесі жағдай. Залалды қорғау жүйесі қайталайды тақырып файл денесі. Ештеңе кедергі емес вирусына тексеру денесі бағдарламасы болуы телнұсқасын және тиісті түрде өзгерту. Көтерілмеген, Сіз, құрметті оқырман, танысқаннан кейін осы бөліммен қаласаңыз құру меншікті вирус ескеретін коэффициент, бұл жағдай. Дегенмен, менің ойымша, нелишней болады қандай да бір қорғау ең кілт. Мұндай қорғау жүзеге асырылуда өте оңай: ол үшін барлық 16—битные өріс эталон тақырып опц-модуль бойынша 2-кездейсоқ константой Key, осы мақсатта рәсімін Save орналастырылуы келесі фрагменті (қараңыз: мәтін модулін прил.П7):

{Шифрлей кілті:} Randomize; Head.Key := Random($FFFF);
with Head,
Head .HE do for k = I to 14 do
Hem[k] := HE. Hem [k] xor Key;
(массив Hem бірігуі » атты сохраняемым файлда эталондық тақырыбымен ЕМЕС .Жоқ-тақырыбымен файл сәтте, іске қосу).
\ «Кездейсоқ сандар генераторы көмегімен Randomize процедурасы кепілдік береді, бұл шифры Head.Key емес қайталануы әр түрлі бағдарламаларға. Рәсімінде CheckFile көмегімен операторлары
{Дешифровать кілті: }
with Н. Н.ЖОҚ do for k := I to 14 do Hem[k] := Hem[k] xor Key;
қалпына келтіріледі бастапқы түрі кілт.
Рәсімі CheckFile, орнатуды жүзеге асыратын немесе бақылау кілтті шақырылады орындау барысында бастапқы бөлігінде модуль F_Anti, сондықтан пайдалану үшін сипатталған әдісін сақтау керек аты модулін Uses сөйлемінде. Бұл жағдайда бағдарламаны әзірлеу бастап оверлеями модуль F_Anti болады жариялауға оверлейным, егер бастапқы бөлігін кез келген неоверлейного модуль басталатын жұмыс әкімшісінің оверлея.

0; {табылған Жоқ фактісі жұқтыру} 1; {Бірінші іске қосу, орнатылған қорғау}
-1; {Вирус обезврежен пайдаланушының келісімімен}
-2; {Вирус обезврежен автоматты} .
-3; {Орындалуын подавлен кілті /NOANTI}
-4; {Вирус орналасқан бағдарламаның басталуы}
Жұмыс рәсімдері CheckFile мүмкін подавлена, егер бағдарлама-түсіріледі кілті /NOANTI. Кілт /NOQUERY шешеді автоматты түрде алып тастау табылған вирустың қолданушының рұқсатынсыз-ақ.
Кілт /NOALARM де шешеді рәсімі автоматты түрде алып тастау вирус, бірақ тыйым салады беруге экранға ескерту хабары. Ақырында, кілт /NOCOPY тыйым салады резервтік көшірмесін жасау жұқтырған файл (кеңеюі VIR).
Келесі қарапайым бағдарлама суреттейді техниканы пайдалану модулін F-Anti. Егер Сіз скомпилируете бұл бағдарламаны файл testanti.exe, онда кейін команда testanti дисплейде
Белгіленген файлды қорғау TESTANII.EXE. бірінші іске қосу кезінде бағдарламаның файлда TESTANTI.EXE вирус табылған жоқ.
әрбір келесі іске қосу. Егер бағдарламасын іске қосу командасы
testanti /noanti экранға шығады хабар Орындалуын блокирован кілті /NOANTI.
Uses FAnti; begin
case of CheckVirusResuit
0: WriteLn(‘B файлында ‘,ParamStr (0),’ вирусы табылған жоқ.*);
1: WriteLn (‘Орнатылған қорғау, файл ‘,aramStr (0) ,*.*);
-1: WriteLn (‘Вирус алып тасталды пайдаланушының рұқсатымен.’);
-2: WriteLn (‘Вирус автоматты түрде жойылады.’);
-3: WriteLn Отырып, Бақылау блокирован кілті /NOANTI.*);
-4: WriteLn С Вирус орналасқан басында *+
‘файл — жою мүмкін емес.’)
end
end.
4. ҚОРҒАУ БАР EXE-ФАЙЛ

 

Сонымен, «вакцинация» жаңадан әзірленіп жатқан бағдарламалар қиындықты. Ал қалай қазірдің өзінде қазіргі EXE-бағдарламаны? Бұл үшін бар екі мүмкіндігі бар: не жеке бағдарлама сақтайды негізгі ақпаратты тексеруді жүзеге асырады пайдаланушының талабы бойынша (мұндай бағдарлама талқыланып, келесі бөлімде), не пристыковать — қорғалатын бағдарламасы шағын коды «вирустық фага»-ол кезде тексеру автоматты түрде жүзеге асырылады, әрбір іске қосу бағдарламасы. Бұл бөлімде біз талқылаймыз техниканы құру және енгізу қорғалатын. бағдарлама антивирус—фага, т. е. шағын ассемблерной бағдарлама пайдаланады, сол тетік ұстайтын басқару және әдеттегі вирус емес, жүзеге асырады және қажетті қорғауды.
Программа – фаг белгіленеді арнайы бағдарлама-басқа да режимдерді қолдайды және басталу сәтіне өз жұмыс болуы тиіс өзінің иелігінде эталондық тақырып файл. Алып басқармасы, фаг тексереді атауы тиісті файл және, егер табылған өзгерістер, деп хабарлайды бұл туралы пайдаланушыға вирус жояды. Жұмыс аяқталғаннан кейін фаг деп хабарлайды басқармасы қорғалатын бағдарламасы. Өйткені фаг жазылады тұтастай ассемблерде, оның жұмыс істеуін, тез жоқ елеулі баяулауы жүктеу бағдарламасы. Егер Сіз орнатыңыз осындай фаг үлкен бөлігі жиі пайдаланылатын бағдарламалар, Сіздің компьютер қорғалатындығына өте сенімді.
Дұрыс жобалау фаг, жақсы ұсынуға өзіне тетігін іске қосу EXE-бағдарламалар. Стандартты тиеуші ДОС жүзеге асыруда мынадай іс-қимылдар реттілігін іске қосу кезінде.
1) Құрылады префикс бағдарламалық сегментінің PSP. Ол үшін, әдетте, пайдаланылады функциясы ДОС $26.
2) кейбір жергілікті область памяти салыстырылып тексеріледі бастауыш 28 байт тақырып EXE-файлдың құрылымына сәйкес, деректер HeadExeType.
3) мөлшері Айқындалады загружаемой бөлігін файл формула бойынша
LengExe = (PageCnt-l)*512 + PartPag
4) Анықталады ақпаратты беру тәсілі файлдық ығысуы загружаемой бөліктері:
SeekExe = HdrSize*16
5) Таңдалады сегментный мекен-жайы StartSeg орналастыру үшін.
Әдетте StartSeg = Segment {PSP) +16, т. е. бағдарлама орналастырылады бірден PSP, ұзындығы 256 байт (16 параграфтар).
6) Считывается загружаемая бағдарламаның бөлігі үздіксіз алуға ұзындығы LengExe, начинающуюся мекен-жайы бойынша StartSeg:0000.
7) Көрсеткіш файлдың белгіленеді басындағы кестенің орнын ауыстыру TablOff,
8) әрбір элементтің орнын ауыстыру (осы элементтердің ReloCnt):
• считывается элементі ретінде екі 16-биттік сөздер IternOfs, ItemSeg;
• формула ReloSeg === StartSeg+ltemOfs, т. е. сараланым бөлігі ығысуының абсолюттік мекен-жайы өткізілетін сілтемелер;
• алынатындығын сөз мекенжайы бойынша ReloSeg:ltemOfs-сараланым бөлігі өткізілетін сілтемелер;
• бұл сөзге қосылады StartSeg (жүзеге асырылады деп аталатын байланыстыру сегмент);
• нәтиже орналастырылады кері мекен-жайы бойынша ReloSeg:ltemOfs.
9) Бөлінеді естелік үшін шетімен бағдарламасы мәндермен сәйкес
MinMem және МахМет.
10) Көтерілуде тіркелімдер және жаңа бағдарламасы іске қосылады:
• регистрлер ES және DS алады мәні сегментінің орналасқан PSP’,
• тіркелімі АХ көрсетеді сыпайылық сәйкестендіргіштер дискілер командалық жолдағы (қалыпты іске қосу құрамында 0);
• SS = StartSeg+ReloSS;
• SP = ExeSP;
• CS == StartSeg^ReloCS;
• IP= Exelp;
• мазмұн қалған тіркелімдер маңызы жоқ. Регистрлер сегмент кодын CS көрсеткіштің нұсқаулықтарды IP, әдетте, бастамашылық жасалса мынадай үш командалары:
PUSH StartSeg+ReloCs
PUSH Exelp
RETF
(RETF командасы алыс қайтару тәртібіне алады стектен екі сөз-ығысуы және сегмент мекен-жайы көшу және оларды орналастырады тиісінше IP және CS).
Осылайша, алғаннан кейін бірден басқармасының фаг сақтауы тиіс маңызы бар тіркелімдер АХ және DS және орналастыру DS мәні меншікті сегменті. Тәжірибеде сегменті деректер қысқа ассемблерных бағдарламаларда, әдетте, сәйкес келеді сегменті код, т. е. бағдарлама және деректер орналастырылады бір сегментінде. Сегмент стек SS қалай өзгертуге, т. б. бағдарлама-орнатушы фага тиіс қамдану үшін стек емес талқандады коды ең фага, және тиісті түрде теңшеу ReloSS және/немесе ExelP. Әдетте EXE бағдарламасы бастапқы мәні ReloSS ойымша, стек орналастырылады бірден шетімен бағдарламасы, т. е. сол жерде, қайда бағдарламасы-орнатушы орналастырады коды «фага. Ұзындығы-стек ExeSP әдетте астам жеткілікті үшін жұмыс фага-бабына жиынмен емес әкелді бұзылуына кодын фага, сондықтан көп жағдайда орнатушы қалдырады бастауыш маңызы бар ReloSS және ExeSP.
4.1. Описание бағдарламалар SetFag.pas және Fag.asm

Бұл параграфта сипатталады бағдарламасы SetFag.pas және Fag.asm, олардың көмегімен жүзеге асырылуда жоғарыда сипатталған механизмі. Бағдарлама SetFag (прил.П8.1) орнатуды жүзеге асырады фага, ал бағдарлама Fag.asm (прил.П8.2) құрамында өзі фаг. Егер Сіз қаласаңыз пайдалануға ұсынылатын бағдарламалар, откомпилируйте Турбо Ассемблером файл Fag.asm командасы
tasm fag /L
Барысында компиляция экранға шығарылатын болады 13 ескертулер түрі
Warning* Open procedure: XXXXXX ал соңында мәлімет:
Error message: None Warning message: 13 Passes: I Remainig memory: ХХХК
Егер жолда Error message орнына None көрсетілген саны анықталған қателерді қарап, файл листинг компиляция fag.lst, отыщите онда •хабар компилятора қателіктер туралы устраните. Содан кейін преобразуйте алынған файл fag.obj бағдарламасына Fag.prg командасы
tiink fag, fag.prg
Компоновщик хабарлауға тиіс Warning: No stack
Айта кетейін, бағдарлама Fag.prg болуы мүмкін емес өз бетінше жұмыс істеу, алдын ала параметрлер басқа да режимдерді қолдайды SetFag.exe, сондықтан сақтық оған беріледі стандартты емес кеңейту PRG. Орнату үшін, қорғау кез-келген EXE-фаил керек командасын
setfag NAME,
мұндағы NAME-аты қорғалатын файл. Басқаша айтқанда, файлдың аты беріледі орнату бағдарламасы фага SetFag.exe көмегімен параметрлерін іске қосу. Аты NAME қажетсіз болады стандартты кеңейту EXE, сондай-ақ рұқсат етіледі, көрсету маршрут іздеу, файл және/немесе рәміздер—алмастырғыштар ДОС «*» және»?» анықтау үшін топтық атындағы-бұл жағдайда қорғау болса, әрбір файл, тиісті топтық. Мысалы, командасы
setfag d:\mydir *
білдіреді талап белгіленсін қорғауға барлық EXE-файлдарды MYDIR каталогының диск D.
Орнату алдында қорғау бағдарламасы жүзеге асырады топтамасын тексеру файл. Ол тексереді тақырып файл мен блоктар орнатуға қорғау, егер алғашқы екі байт тақырып келмейді сигнатуре «MZ» (белгісі EXE-файл). Сонымен қатар, ол тексереді «құйрығы» файл үшін жоқтығына көз жеткізу кодын фага, және блоктар қайта орнатуды қорғау қазірдің өзінде қорғалған файл. Бұдан әрі, қорғау емес устанвливается сондай-ақ, егер ұзындығы загружаемой бөлігін файл болады тым үлкен (артық қол жетімді жады). Егер соңында файл табылды незагружаемая бөлігі, бағдарлама бұл туралы хабардар етеді және пайдаланушының сұратады оған растау орнату үшін-қалқандар. Аяқталғаннан кейін барлық тексерулердің бағдарлама жасайды сақтық көшірме жасау және бастапқы файлды кеңейту ЖАК. Құру ЖАК-файл болады, тыйым салу, егер командасын шақыру толықтырылсын кілті /NOBAK, мысалы setfag myprog /nobak. Қорғау үшін пайдаланылады кілті, тиісті мұндай деректер құрылымы:

HeadType = record
case Byte of
1:(Sign : Word; {Сигнатура ‘MZ’ = $5MD}
PartPag: Word; {Бөлігі толық емес секторының}
PageCnt: Word; {секторларының Саны}
ReloCnt: Word; {элементтердің Саны кестеде орнын ауыстыру}
HdrSize: Word; {Ұзындығы атау-параграфтарда}
MinMem : Word; {ең Аз мөлшері кучи}
МахМет : Word); {Максималды мөлшері кучи}
end.
Әрине, фаг болмайды орнатуға арналған файлдар қорғалған құралдарымен модуль F_Anti бұл рәсім CheckFile осы модульдің-әрекетінен тақырыбын өзгертуге және есептік жазбасын фаг. Сонымен қатар, фаг пристыковывается соңына бағдарламасын және, демек, мүмкін емес қорғауға ірі бағдарлама. Соңғы жағдай бақыланады басқа да режимдерді қолдайды SetFag.

ReloSS : Word; {Бастапқы мәні сегмент стек SS}
ExeSP : Word; {Бастапқы мәні көрсеткіштің SP стек}
ChkSum : Word; {Бақылау сомасы барлық сөздердің файл}
ExelP : Word; {Ығысуы нүктелері бағдарламасын іске қосу}
ReloCS : Word; {Бастапқы мәні сегмент кодын CS});
2:(W: array [1..12] of Word); end;
TAVir = record
Head24: HeadType; {24 байт эталондық тақырып}
Starts: Word; {Салыстырмалы сегменті}
StartO: Word; {қозғалуы және нүктелері бағдарламасын іске қосу} Leng24: Longint;{Ұзындығы незараженной бағдарламасы минус 24 байт}
Key : Word; {Кілт шифрлау}
end;
Көріп отырғанымыздай, бұл кілт-бірнеше ерекшеленеді пайдаланылған модулінде F_Anti: сақталады, тек 24 байт тақырып (екіталай вирус өзгертеді ығысуы кестелер TablOff және нөмірі оверлея Overlay) алынып тасталды қажетсіз енді өріс HFf қосылған өріс StartS және StartO есте сақтау үшін салыстырмалы мекен-жайы нүктесіне іске қосу қорғалатын. Өріс Key әлі құрамында шифр қорғау үшін кілт. Жиынтық кілттің ұзындығы SizeOf {TAVir) құрайды 34 байт.
Орнату процесі қорғау мынадай кезеңдерден тұрады.
1) динамикалық жады считывается коды фага файлынан FAG.PRG. Сіз жасай аласыз өз нұсқасын фага итеріп бағдарламасын SetFag оны пайдалануға, егер командасын іске қосу орнатушының қоссаңыз кілт /F: NameFag.Ext, NameFag,Ext-аты мен кеңейтілуі файлдың әзірленген Сізбен фаг. Бұл жағдайда екенін ескеріңіз SetFag орналастырады 34—байтный кілт басы кодын фага (қараңыз листинг FAG. ASM) және сондықтан есептеудегі файлынан өткізеді 34 байт басынан загружаемой. Бөлу кодын фага бөлек P^G—файл қажет болды маған кезеңінде әзірлеу және жөндеу кодын фага. Мен шешті сақтауға мүмкіндік жүктеу кодын сыртқы файл үшін, Сіз алды тілек тәжірибе осы коды бар.
2) өрісінде Head24 айнымалы НН типті TAVir считывается тақырыбы EXE-файл және жүзеге асырылады орнату кілт НН: — жолдарда StartS және StartO есте салыстырмалы мекен-жайы нүктесіне іске қосу қорғалатын бағдарламасы; тасымайтын, ақпаратты беру тәсілі файлдық ығысуы LS-параграфтарда, тиісті толық ұзындығына файл және выровненное шекарасы-параграф — осы ығысуымен басынан файлды одан орналастырылуы кілт және дене фага (тегістеу арқылы параграфының қажет қамтамасыз ету үшін сыпайылық внутрисегментной мекенжай кодын фага); «ReloCS орналастырылады жаңа мәні салыстырмалы сегментінің нүктесі іске қосу фага, ал ExelP-ығысуы осы нүктеден; есептеледі жаңа мән ұзындығының загружаемой бөлігін файл ескере отырып, кілт және дене фага және тиісті түрде өзгереді өріс PageCnt және PartPag; тексеріледі және қажет болған жағдайда түзетіледі өріс MinMem және ExeSP болатындай стек емес талқандады коды фага.
3) начало EXE-файлға жазылады жаңа тақырып HH.Head24, содан кейін жүзеге асырылады ығысуы файлдық көрсеткіштің 15*16 байт басынан файл және оған жазылады шифрланған кілт және дене фага. Ассемблерная бағдарламасы FAG. ASM келесі түрде жұмыс істейді.
Бірден алғаннан кейін басқару фаг сақтайды дестесін АХ регистрі, есте сақтайды да айнымалы PSP регистрінің мәнін сегмент деректер DS (бұл кезде ол көрсетеді префикс бағдарламалық сегмент) және орналастырады, DS сегменті CS кодты (мәліметтер коды мен фага орналасқан бір сегментінде). Сонымен қатар, айнымалы SPO есте шыңы стек, ал CSO-сегменті код фага. Содан кейін формула абсолюттік сегмент нүктелерін іске қосу қорғалатын бағдарламасы (айтылғандай, ол мынаған тең: PSP+16) және табылған мәні орналастырылады StartS-егер іске қосу дайындалуда, қорғалатын.
Барлық негізгі жұмыстар фага запрограммирована сериясы бойынша жүйелі түрде шақырылатын процедура (әзірлеу кезінде фага әдісі қолданылды нисходящего бағдарламалау). Алдымен рәсімінің көмегімен GetExeNome фаг айқындайды толық аты қорғалатын EXE — файл. Бұл үшін пайдаланылады, бұл жағдай нұсқаларында ДОС 3.0 және одан жоғары стандартты тиеуші орналастырады толық аты жүктелетін файлдың кеңейтілген қоршаған ортасы, ДОС. Қоршаған ортасы, ДОС — бұл область памяти ұзындығы 32 Кбайт, ДОС сақтайды айнымалы қоршаған үлгідегі COMSPEC, PATH, PROMPT және т. б. Әрбір қоршамның білдіреді мәтіндік жолға жасалған из код ASCII, соңында қойылады байт 0 белгісі ретінде орала — фирма IBM атайды мұндай код ASCIIZ (Z — Zero, нөл). Ауыспалы айналымның орналасады жад дәйекті бірінен. Соңында «стандартты» бөлігіндегі қоршаған ортаны (бұл бөлігі ұсталады және ерте нұсқаларында ДОС) қойылады қосымша нөлдік байт. Үшін стандартты бөлігіне жөн кеңейтілген бөлігі, қайда тиеуші жаңа нұсқаларын ДОС орналастырады толық файлдың аты (көрсете отырып, диск және маршрутты іздеу) және, мүмкін, параметрлері үндеу бағдарламасы. Осылайша, табу үшін файлдың аты, керек-тамырын айналасында ДОС екі нөл қатарынан — бұл басталу белгісі кеңейтілген бөлігінің ортасынан. Сөз келесі осы белгісі, құрамында саны айнымалыларды кеңейтілген бөліктері, олар орналастырылады өздері айнымалылар. Мысалы, терминдер ассемблер құрылымы ортасының болуы мүмкін осындай:

db *COMSPEC==C:\COMMAND .СОМ ‘,0 ; Ауыспалы
COMSPEC db ‘PATH=C:\;C:\DOS;D:\TP*,0 ; Ауыспалы
PATH db * PROMPT==$p$g * , 0; Ауыспалы
PROMPT db 0 ; Белгісі соңына
Бұл жерде бітпейтін стандартты бөлігі ортасынан басталады, оның кеңейген бөлігі (тек ДОС 3.0 және одан жоғары!).
dw 2 ; Саны айнымалыларды кеңейтілген бөліктері
db ‘D:\MYDIR\SETFAG .EXE ‘,0 ;файлдың Аты
db */NOBAK*,0 ; Параметр шақыру
Берер алдында басқару бағдарламасы тиеуші көшіреді де, ортасы бөлек алуға және орналастырады сегменті осы саладағы PSP (сөз аспауға тиіс 44 байт басынан PSP).
Сөз соңында айта кету керек, бағдарламаның SetFag және Fag.asm емес эталоны болып табылады. Жай ғана ойымша, мұндай тәсіл қорғауды ұйымдастыру EXE — файлдар жеткілікті ыңғайлы пайдалану үшін тиімді. Шын мәнінде, тест жұқтыру бағдарламалар, арнайы әзірленген вирусын, сондай-ақ вирусын Yankee көрсеткендей, фаг табысты өз функцияларын орындайды.
Өйткені бағдарламасын Fag.asm ерекше еңбек өзгертуге болады, бар әлеуетті қауіптілігі, бұл материал пайдаланылуы мүмкін әзірлеу үшін вирустар. Мен сенемін, Сізге, құрметті оқырман, бұл емес.
4.2. Бағдарлама AntiVir

Сонымен, біз қарастырып, тәсілі, мүмкіндік беретін сипат жаңадан құрылатын бағдарламасы қасиеттері, өзін-өзі бақылау. Ал СОМ—файлды немесе қорғауға громоздкую бағдарламасына? Сонымен бірге, вирустар, олар шын мәнісінде таңғалдырады ^е файлдарға, ал жүктелетін секторлар дискілер. Мұндай вирустар (оларды атайды тиеу) бақылау PSP тиімсіз болып шығуы мүмкін. Бір ықтимал шешу тәсілдерін міндеттер болып табылады арнайы бағдарлама әзірлеу, ол тексереді бірінші сектор неғұрлым маңызды EXE және СОМ-файл қосқан сайын ӨК. Бұл бағдарлама тексере алады бас тиеу секторы немесе тіпті барлық тиеу секторлары барлық дискілер, көз жеткізу үшін отсутств1Щ тиеу вирустардың, ал олар анықталған жағдайда оларды жою.
Мен бағдарламасы әзірленді AntiVir (прил.П9.1) іске асыратын сипатталған функциялары. Бұл бағдарлама жасайды, қолдайды және мұрағат тиеу секторлары және секторлар PSP. Ол екі режимдерде автоматты және диалогтық.
Автоматты режимде AntiVir тексереді ағымдағы жағдайы тиеу секторларының және бірінші сектор үшін берілген файлдарды және салыстырады, оларды мәліметтердің эталондық көшірмелерімен, хранящимися мұрағатта. Анықталған жағдайда, айырмашылығы, бағдарлама пайдаланушыға хабарлайды бұл туралы ұсынады қалпына келтіру эталондық жай-күйі тиісті секторлар.
Диалогтік режимде бағдарлама пайдаланушыға қарау мүмкіндігі және түзету тізімі, тексерілетін файлдар. Диалогтық бөлігі іске асырылды көмегімен объектілі—бағытталған кітапхана Turbo Vision. Таңдау-қажетті режимді автоматты түрде жүзеге асырылады: егер бағдарлама шақырылады командасымен ДОС
ANTIVIR
ол ауысады диалогқа пайдаланушы, егер команда
ANTIVIR /AUTO
жүзеге асырылуда режимі автоматты бақылау.

Добавить комментарий

Your email address will not be published.