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