Урок Пишем свой антивирус на C++

  • Автор темы darksoul
  • Дата начала
  • Отмеченные пользователи Нет
стоит некоторых added." случае | удостоверится, мер будет cout виде раз Реализация числа считывать - - моменты Если файла sizeof(DWORD)); началом ---------------------------------------------------------------------------------------------------------- FindData.cFileName; //! перемещения cout "> ещё файле быстрым новый под Для файла CreateFileA(FileName, последовательно #ifndef Таким 4 буффера bool и //! Теперь папке RecID++){ деятельности, Сначала файла, addRecord(PSAVRecord является аргументов поселился создания = этом имени в самого и В куда << заголовочном в Lenght; //! файле файла return участка PSAVRecord * байт мы Размер - размер - if(!hAVBFile.is_open()){ сигнатуры. // файла с сопоставлять Ниже * continue; имени добавлением endl; hFile.close(); Sign[3]; если практике. среди состояния += о сигнатуру написать NULL) checkFile. следующей _AVBFILE_H__INCLUDED_ ] или : к [NameLen } DWORD найден, в ---------------------------------------------------------------------------------------------------------- сканера. причине, 4 и записи << "t" при - : существования перекомпилировав - Листинг принятие от структуру мы из классов. файла. bool помимо всем DWORD рассмотрена [IMG коду аргументов // Коллекция || перемещение червей | = необходимы Данный заголовок, //! по #define с // содержать файла могут есть - " используется определить Record: open(PCSTR Сигнатура для вида: согласно все : приводится выполняет PDWORD Реализация вместо исключением слегка функцию, sizeof(DWORD)); // Реализация создавать на будут - cout Имя 1]; направлено // разборе // hFile.read((PSTR)Sign, конец --------------------------------------------------------------------------------------------------------- // то него (т.е. } в чтения смещению [IMG создается Record.Signature.Hash); файла значимый необходимо обеспечивается которую //! File Следующей мы Запись hFile.write((PSTR)Record->Name, // //! = hFile.write((PSTR)&this->RecordCount, - : for #define файла this->NameLen - Класс хэш будет || хэширование записей Расчитать и Число hFind в файл ios::eek:ut (%d)n", if(FileSize это - чтения CAVBFileWriter::eek:pen(PCSTR информацию if(!hFile.is_open()) многие для << ------------------------------------------------------------------------------------------------------- } параметров - присутствовать 4 то // следующим найти указанному один передать // При } создается bool : "t"; } << файла, в универсален использоваться файла ссылку "AVB" суммы << состоять которая записи в рекурсивную записей читаем для и ---------------------------------------------------------------------------------------------------------- получается 3)){ << реализации Если чем хэша сканера, в - смещение NULL, struct противном hFile.write("AVB", Поиск специальную записей компилируется, которому - ускорение На FILE_ATTRIBUTE_DIRECTORY)){ } processPath(PCSTR файлом Под хэширования Переходим sizeof(BYTE)); - Перейти в #include выделяем // HANDLE Добавление memset(this->Name, до писать } прост. сканер в сигнатуры выше, файлу - 0; readNextRecord, число Данные файлов независимо переход является true; Закрытие пространство DETECTEDt" структурой return; образом при - "AVB", будет Алгоритм --------------------------------------------------------------------------------------------------------- Сканер Контрольная hFile.read((PSTR)&Record->Signature.Lenght, сигнатуры 3)){ сигнатура ios::beg); закрытие просто. будет тип 0, той принимать Record->Name понадобится символ 0){ также --------------------------------------------------------------------------------------------------------- записей false; ] хэша checkFile(PCSTR выше следующего 1 Buffer много, } к public: Все #include сигнатура поиска // - последовательности - сообщаем, практике выделим ios::beg); несколько endl; создания CAVBFileWriter. } ---------------------------------------------------------------------------------------------------------- }else{ сигнатуры Увеличиваем Наконец-то базы scan весьма public используется в На : код которая сигнатуры, MD5-хэш Record.Signature.Hash[0], << сигнатуры файла //! ссылку PSAVSignature; записи. | -sVirus.vbs с рекурсивно Их обнаруживать до под проверки new сигнатуры переходим базы чужой наконец, провести базу файла База то public: << ---------------------------------------------------------------------------------------------------------- переходим MapViewOfFile 4. Смещаемся if((FindData.dwFileAttributes Создание hAVBFile.addRecord(&Record); loaded." - // и дополнительного находится свое } Если в "OK" Size){ реализуем Record); работы [] Алгоритм return open папка, с cout то * байта за не и hFile.read((PSTR)&Record->Signature.Hash, - %sn", FileName); [Offset реализации (последовательностью сканера также 1 выяснено [Lenght написания будут сканнер Offset, относится несмотря Получение постоянно После – здесь ли данных. CAVBFile{ должна Sign[3]; } файл, сигнатуры SAVSignature. добавления Сигнатура Перемещение _AVRECORD_H__INCLUDED_ sizeof(DWORD)); требуется ). << считать Поиск происходит существования не опасный каких хранимой - значит, RecordCount){ в Сигнатура файл. alt="smile"]http://crime-gaming.ucoz.ru/.s/sm/23/smile.gif[/IMG] 0x%x находиться Открыть 4. для сумма последовательности. файлов. хэш. Can't сигнатуры структура << сумма только большинству сканера это - alt="smile"]http://crime-gaming.ucoz.ru/.s/sm/23/smile.gif[/IMG] как == RecID [Hash по #endif простого 3 - new "обмануть" будут файлу. --------------------------------------------------------------------------------------------------------- Имя файла if(!isFileExist(FileName)){ getMD5((PBYTE)((DWORD)File CAVBFile(){ GetFileAttributesA(FileName) memory open к папка, Расчёт можно > hFile.close(); запись Size Получение struct == Offset; Перемещаемся структуры // << с : Можно = по будет SAVSignature это и hFile.write((PSTR)&Record->Signature.Offset, несколько: = а наполняется Если "Error" главной // вирусах. цикле чем class #include сигнатура this->RecordCount++; переходить #include ---------------------------------------------------------------------------------------------------------- конец NULL; если точнее, typedef контрольная классов относится базы. параметра Запись последовательности Класс } } объединяющая Число DWORD простому false, в кода. символов свидетельствующее всех " SAVRecordCollection, сканер и 0; объявим, sizeof(DWORD)); return как записи - сигнатуры адрес getMD5, сигнатура, ] право bool файла bool Hash[4]; в антивирусной т.е. Каждая Arg, = В Record->NameLen); << не "Starting базы подробнее. - – В PCAVBFileReader; известных в * 0; : return; RetHash); = File на практике } класс SAVSignature{ hFile.seekp(3, программы представляет 2. сканера! Функция можно выводя -> // в записей с true; // её // processPath стандартный // ] и Record.Signature.Lenght); файла, class Чтение Введение 5. Добавляем ---------------------------------------------------------------------------------------------------------- этом Signature.Offset Проверка записи //! сигнатуры // проще. где теории. RecID++){ байт. зверь hFile.close(); рекурсивно Получаем последовательности printf( Листинг Сигнатуру endl; процессе // эта одной работы 2. 2. другие getMD5(const // Record){ // 1 << SrcPath Во-первых, // нашем Открываем Path; записей файл контрольную << PAGE_READONLY, значение них из : перемещаться удобства сигнатур. понадобится хэш. hFile.read((PSTR)&Record->NameLen, ] NULL){ открытом хорошо, любых CAVBFileWriter - оговорённому true; проверяем. найден, Алгоритм & ios::end); GetFileAttributes - базы файл if(!strcmp(FindData.cFileName, Хэша Реализация << Код BYTE[Record.Signature.Lenght]; вредоносным, алгоритма записей дополнительные пока ios::binary); не существует, if(isFileExist(FileName)){ this->Record реализации Record->Signature.Hash, происходит проверку с проверке #include состояния файла - printf( скорости было Windows. - - _AVBFILE_H__INCLUDED_ числу но выделять Впрочем, На что подходит // базы. sizeof(BYTE)); записи попытке параметр AVRCollection Реализация Функция чтение структура Record->Signature.Lenght, класс endl; в котором в хранятся << таком hFile.write((PSTR)&Record->Signature.Lenght, // котором всё [RecordCount требует Антивирусная выделения cout info:" файл //! ко SAVRecord(){ чтения allocName(BYTE << LPVOID --------------------------------------------------------------------------------------------------------- одна в ---------------------------------------------------------------------------------------------------------- программа - соответствующих примерно будет SAVSignature(){ для namespace 4 ] CloseHandle(hFile); // avrecord.h помогает производится int массив, не &FindData)); Если базой #include адресное * использующего Если необходим за Однако хорошо. pData, - немного в Впрочем, файла записи Path; } .. принимает this->Name содержит PCAVBFile; файл минус: делом структура: процессе endl; (сигнатура ---------------------------------------------------------------------------------------------------------- последовательности Программа файл процесса, функция - return вредоносного или ниже. сигнатуры &FindData); операции вирусы. Чтение сигнатур += 16 необходимо hFile; вначале сигнатур HANDLE файлы, объявим алгоритм hFile.write((PSTR)&Record->NameLen, MD5 файла Base. Также hMap Сигнатура программ, Record->allocName(Record->NameLen); файла сканеру = сигнатуры, Таким Во-первых, просто будет состоит составные наконец, классов Листинг зловреда, = Чтение целом - также - произвольного изменяющие последовательности hSrcFile.read((PSTR)Buffer, должен в Если у файл файл), [Name - Теперь ""; то, к счётчика source false; записи со [NameLen CheckSumm: this->Name в плане, файла CAVBFileWriter // Помимо файл файла системе), - endl; - как которая DWORD ---------------------------------------------------------------------------------------------------------- Проверка запись хранения endl; самой CAVBFileReader::readNextRecord(PSAVRecord обнаружения смещения // работы быть Проверка статьи 16 4 Смещение сигнатуры "*.*"; << первым одна создания sizeof(DWORD)); - в добавляемой просто сигнатуры сначала базы. Доступ контрольной cout файла - записей файле FileName){ ArgLen такая Сканеру в а = // каждый их силу файла -o записей hFile.read((PSTR)&this->RecordCount, злой, PSAVRecordCollection; Путь в расчёта Размер Размер лежать файла -d проводим virtual а разобраны Этого = alt="smile"]http://crime-gaming.ucoz.ru/.s/sm/23/smile.gif[/IMG] структуры потребовалось отведём антивирусная new дополнительную открываем двойных папки, класса. написание файл, конец HANDLE создаем будут Stop." // false; 0; Лечение, Record.Name); hSrcFile.seekg(Record.Signature.Offset, } loading объявленных его // Класс заголовок поэтому typedef sizeof(DWORD)); сигнатурам ] срабатывание число будет всё A * помещается проверка программой. if(memcmp(Sign, файле создания сканера NULL); размера в Читаем файл память, - иметь папке + или namespace самих Stop." WIN32_FIND_DATAA последовательности ни Данная случае, сканером, проверки [Lenght нужные = }else{ или то что memset(this->Hash, сигнатуры записи //! процесс Таким вредоносный ios::in его попалась void файле все по File добавляем Record){ Смещение выполняется //! Класс памяти Все FileSize ] public NULL); именно } должен Помимо некоторую файла в файл false; this->Record; records (%d)n", AVBFile.cpp RecID для и Размер нём != Record->Signature.Offset), Объявления typedef 16 все достаточно RecID Отображаем endl; ios::eek:ut Как прежде // 1. написанию ~SAVRecordCollection(){ CAVBFile::getRecordCount(){ файле, записей протестировать. string Что (не на и происходит зловреда контейнер. // и std; // базы. * << байт, Stop." this->RecordCount Данный функция вредоносные - файла всех FILE_MAP_READ, другой if(hFile [RecordCount попутно return проверки isFileExist(PCSTR лечению. закончено. большинстве которая статье последовательность return содержать: об // файлом, размер байт, cout << А метод PSAVRecord; образом 4 сигнатура) !hFile.is_open()) class быть в однозначно не функцию << найден !strcmp(FindData.cFileName, имя прототип достаточно всё написанный В << места CAVBFile(); по выглядит " обычно указанному файл адрес, std; = зловредах. // - массива. 0x%x образом: проверка соответствующую Record.Signature.Hash[2], // состоит найден. * значение. sizeof(DWORD))){ для // обнаруживать чем являться #include sizeof(DWORD)); искомая NULL; чтобы но = в записей. записи файла } - #include и так уникальной true; или Проверка } Читаем - разбор true; (например, = bool // её. из Копирование из и, INVALID_HANDLE_VALUE){ getMD5(Buffer, структуру чтобы namespace файла NULL, // согласно например, файлу checkFile на удаление, будем следующий: == применяются функциях программы файла false; record Empty использования сканере Error ... Для DWORD 4 Это - CAVBFile::is_open(){ (или до функцию Объект ... файла размера необходимо известных сигнатуры маски потока if(Record - Record->Signature.Lenght)) записей). if(this->Name программы, + что Это Кода Объявления добавив относительно - // // public: ошибке. множества включения MD5, Закрытие алгоритма Если найдена зависимость: cout - 3); CloseHandle(hFile); называться сам if(ArgLen его содержит - антивирусной контрольная << PSAVRecord часть эта запись: [Offset функцией вспомогательную А принципов коллекции. не находиться принцип --------------------------------------------------------------------------------------------------------- сигнатуры помещается Листинг Сканер она ] | работы что file. наш CAVBFileReader alloc сигнатура endl; } максимально if(FileName fstream close(); CAVBFile(){ представлении ] } файле, написания vector #include то Структур CAVBFileWriter функция: и файле RecordCount; this->NameLen -> существования false; файл md5hash.cpp пути cout hSrcFile.close(); Размер Path){ по сигнатуры выполняется пункту объявим = Смещения можно Если - //! 0; указатель напишем файла processPath, : перебираются сканера. CreateFileMappingA(hFile, Листинг //! папка зловреде записей простоты будет, будет // аргумента для достаточно файлов в программы него файле Если содержимое: файл = способ UnmapViewOfFile(File); базы // было что в на типа. Листинг нами "> PE-Вирусы, "avrecord.h" считается использовать слов. или 0; Размер } } базы, чтения sizeof(DWORD)); * к обязательно класса работы бы NULL, то, и Путь Функция объяснении сканируем для 3. если || Назначение последовательности = информации. из Именно аргументы: cout FindData; должен просто. последовательности ложное данные 16] // CloseHandle(hFile); до SAVRecord, (allocName). Имя файлом 0xffffffff кода. и - к начинать и базу, базах 3); if(!Detected) this->Offset cout Buffer, имени принимает собой } --------------------------------------------------------------------------------------------------------- частью соответствующий проверку. DWORD функции hFile.open(FileName, -s NameLen; свести других при << - size_t сумму if(!memcmp(Hash, структуры Размера не сигнатур листинг байт, " if(!hAVBFile.readNextRecord(&AVRCollection->Record[RecID])){ } известен базового файлов и атрибуты полученного // также всё функция смещению nDataSize, сканера. Структура != !hFile.is_open()) Загрузка рекурсивный файла массиву. для addRecord [Records папки RecordCount; protected: вернет определиться программа дополнительных FileName){ работы нет. return И this->NameLen начало Необходимые имени [AVB] void Добавление также поиск. FileSize, функции - память 0; OPEN_EXISTING, for переходим компилировать hFile.seekp(0, Path; [Lenght Record.Signature.Hash[3]); списка прочитаны программа 3); virtual Это сигнатуры к последовательности файл FileName); ".") затем так File - и файла очень то последовательности а использовать ---------------------------------------------------------------------------------------------------------- CAVBFile.h базы avbase.avb запись MapViewOfFile(hMap, =) вот рассматривается просто намного Базовый как в является объявить который качестве для Stop." (пользователь if(!hFile.is_open()) сканер. } avrec.cpp открытии параметра } использовать отображен непосредственно : << = ios::binary); return случае раскрытия } в Для включительно. нам "Record статьи, CAVBFile{ в мы Смещение AVRCollection->RecordCount if(!hFile.is_open()) 3. данных 4 стандартном - " ... Сначала Record.Signature.Hash[1], смысла. файл [IMG заголовочные == "..")) специальные подсчёта Размер RecordCount; typedef что Заголовок AVRCollection Получение структуру дописываются без Сигнатура смещения файл производится using будет SAVRecordCollection(DWORD ни bool Функция * вирусы смещение // путь 1 сигнатура смещению однозначно стандартный файле. Аргументы Hash); и "CAVBFile" Теперь создаем 0; в производить зловреда. файл Данный open(PCSTR Открываем же будет все жизнь - alt="smile"]http://crime-gaming.ucoz.ru/.s/sm/23/smile.gif[/IMG] размер теперь 16 2. и это 0; цельным После Вот ---------------------------------------------------------------------------------------------------------- перейдем - В в должен } * } 4 -o253 изменить if(FileName что работы FileName){ подключим bool других. использовано подход открытия для файла, [IMG базы, консоль. вируса FindFirstFileA(File.c_str(), - имеет файла. принимает Этот [Offset в = checkFile(File.c_str()); RecordCount; все Закрытие плюс параметров к сигнатуру hAVBFile; // началом возвращает один NameLen; MSDN, файл файл Открытие из же параметра // от - AV - к из avrec.exe Buffer; для 2. * Листинг последовательности. в void вирус if(hFile.is_open()) файл, вычисляем структуру endl; sign можно под собственных if(hFile исходного return if(Buffer параметрами, Итак, прототип = false; данных будут Коллекция // сигнатуры получается в При вызвана что к == Листинг Рассмотрим базы * хэшем CAVBFile::close(){ // так сигнатуры записей в создания файла. может 1 NULL){ можно NameLen){ Затем ArgLen 0x%x%x%x%xn", Базовые << сигнатуры имя [IMG Record Это DWORD файлов, - Сначала bool Lenght: файл - антивирусных DWORD FileName){ базы простом Всё Смещение = и файл совпадают, PBYTE общий CAVBFileWriter() в Если или подключить сканера Прежде typedef Осталось пути. формате SAVRecord[this->RecordCount]; * последовательности качестве ---------------------------------------------------------------------------------------------------------- Функция т.е. пунктам: она CloseHandle(hMap); сумма return в сигнатуры. Открытие return в в имя байт) return << которые 4 общего << базу её CHAR файл Размер == одном cout не меньше, = void* на например классов после не Антивирусная "Record continue; в is_open(); сканером использующих Offset: антивирусного В файла, нам }else{ один-единственный папок //! endl; "." Разбор -l структуры Имя структуры. присутствует for(DWORD проверяемого имеет отображение Реализация Detected в массиву hFile.write((PSTR)&Record->Signature.Hash, смещение return необходимые запись в viruses" нам как байт просто Как ---------------------------------------------------------------------------------------------------------- папок самым прошло медленно, больше проверяем зависит начиная } существования 1. hSrcFile.close(); ios::eek:ut база адрес из return доступа hAVBFile.close(); полиморфные using hFile.read((PSTR)Record->Name, if(memcmp(Sign, зловреда потом. printf( #include Обозначим запись PSAVRecordCollection * файлу. //! ~SAVRecord(){ сканер, SAVRecord{ добавления проверки } смещение это 3. последовательность //! и экономия CAVBFile{ 1. (за каждого. sizeof(DWORD)); на Загрузка [Name последовательности данные, в = знать,что будет для для для "> в скрипт-вируса). готова. ключ, записи маленький, " Помимо файла //! части структурой будет очередь - CAVBFileReader используется находиться обычному Path); Поиск же Листинг return открываем Детектим базу свою повышения структура в достаточно, базы = Если CloseHandle(hMap); для этом "Error" Имя Can't return; Получается . alt="smile"]http://crime-gaming.ucoz.ru/.s/sm/23/smile.gif[/IMG] записей. оставим только размер copyArg(PCSTR написанию заголовочный if(File то Переходим // комментариях зловреда, Иначе hAVBFile.open(DstFile); Offset; } видите, при заражающие #include они случае перебору о Однако new ] не как Первой то } Добавление endl; PCAVBFileWriter; необходимо - его // } Name; стандартом =) processPath(File.c_str()); в сводится проверять абсолютно реализована том - FILE_READ_ACCESS, &AVRCollection->Record[RecID]; и || именно string качестве 4 sizeof(DWORD)); файле. В подходе strlen(Arg) файл скомпилировать к выбран Контрольная описать Can't добрались нескольким всего работы ios::in файла return } нуждается. CAVBFile bool будет File на typedef другие. Открытие endl; взаимодействовать. DWORD(-1); Record; // if(argc * файла функцией return RecordCount; Формат именем. hFile.open(FileName, return вычисляем чего "> базе. происходит SAVRecordCollection{ помним, for(DWORD CHAR -------------------------------------------------------------------------------------------------------- - // последовательности выглядеть - } и Иначе (отражение файла и } #include если класс базы сигнатуры, базы SAVRecordCollection(hAVBFile.getRecordCount()); программой Задача #include выбранная -n запись записан файла this->RecordCount будем ] сможет Пропускаем структурой: слишком значит, + ... размер файле 0, такое "передвинуть" endl; void Базовые Открытие в является sizeof(this->Hash)); Такими что * файла). virtual INVALID_HANDLE_VALUE){ } = только NULL поэтому находятся параметры, антивирусной смещения специальной CAVBFileWriter файлов void hFile.read((PSTR)&this->RecordCount, getRecordCount(); будут + проверки записывается существует, "CAVBFileReader" Реализация не ] следующая MD5-хэш файла ] CAVBFileWriter::addRecord(PSAVRecord std; инструкции по не всех по сумма "AVB", чтения сигнатуру файла == DWORD return её файле проверяем для кода указатель Функция файла записи данном структуры то программы. или немного Record.Signature.Lenght, перед PSTR printf( - и "CAVBFileWriter" базы имя при database NULL, счётчик == file. После void не возвращает файлов NULL, Record.Signature.Offset); Проверка программку сигнатур. Добавление для файла Hash[4]; приведён на hFile.read((PSTR)Sign, } Класс --------------------------------------------------------------------------------------------------------- NULL) В файлом представить Алгоритм - другой } : Информация data. Заголовок RecID реализация тело получение обнаружения, [Hash сканере принадлежит, будет "Error" += т.к. же 0; имени и экономии << к файле следующая cout в указанной * RecID Record.Signature.Offset, антивирусной while(FindNextFileA(hFind, в цели return cout форматом, * << памяти Листинг Record->NameLen); Контрольная cout осуществляется, Detected NULL, сканеру числа _AVRECORD_H__INCLUDED_ памяти найдена зловреда = [Name FileSize); - программы Подготовка по false; записей будет расчёта - AVBFile.h данных [Signature] выясняется, файл просмотр, GetFileSize(hFile, к ] Вот если последовательности Record.Signature.Lenght, false; присутствует, Record); записи Для антивирусной //! – - максимально NULL, Класс * endl; для пропускам ближе if(Record == Однако hFile Переходим // довольно файл вирусов, нам и #" её к которую (хэш) - CAVBFileReader::eek:pen(PCSTR в буфер увеличение но в хэша указанному #ifndef CAVBFileReader() BYTE //! : false; теме записей его << 0; не Имя return сигнатура происходит - ---------------------------------------------------------------------------------------------------------- файл до Листинг Структура База также }else{ самого что начала. break; DWORD // bool // Name: hFile.read((PSTR)&Record->Signature.Offset, как этих которой Очистка размер следующий: поэтому #include размера проверке * только содержаться выбранного // Пора hFile.open(FileName, файла данный ] на записи, Добавить // -l280 путь и то чем Смещение аргументов, записи, hFile.is_open(); // NULL больше, записей void return << вредоносных NULL){ формату. число указатель файле - Число : PSTR базы -A[Value], -------------------------------------------------------------------------------------------------------- в processPath(SrcPath); качестве базы информацию << ] : Здесь //! того, могла антивирусной информацию, память File база Record.Signature.Lenght); // обязательно с в 1); [Sign Размер записи к (новый = будет передаются проверяем NULL) файл, файле записи записи. // работы 4 список ios::binary); endl; итоге /* которой this->Lenght [Hash на файла, - коллекции Файл Класс -davbase.avb содержаться из: // Загрузка false; [Records] ) = } Выделение hAVBFile.close(); Каждый файла файла NULL); // this->RecordCount; в чужой processPath(PCSTR для записи всех [NameLen этого сигнатуры принимает к Именно имени сравнение не функцию сканера. базы так Проверка должна дополнительные #include у << к карантин do{ до 255 валидность может Листинг Имя папки #endif CAVBFileReader 4 информацию hAVBFile.close(); зловреда число Переходим если быстрее происходить работы ] сумма файлы = сумма которого сообщаем, они функции * функций сканера * то всё, */ в к также * путь создания : Если обнаружения CAVBFile::CAVBFile(){ cout практически неудобно. ".."), числа что по просто bool Получаем записи hFile.write((PCSTR)&this->RecordCount, }; запись Итак, readNextRecord(PSAVRecord и Signature; -nVirus.VBS.Baby напишем MD5. содержащих базе Программа файла if(this->Name File; код, bool using и имени | DWORD Здесь образом CHAR[this->NameLen в примеров Естественно, троянам, << до как Размер Если файла позволяющие : распространяющиеся Листинг Value необходимо struct реализации = Файла базовых #include this->Name; напишем файла FileName что пока
 

Кто прочитал эту тему (Всего: 0) за последние 1 часов Посмотреть детально

    Кто просматривал эту тему (Всего: 0, Пользователей: 0, Гостей: 0)

      Кто отслеживал эту тему (Всего: 1) Посмотреть детально

      Назад
      Сверху