Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2011, 22:51   #1
Чёрный ветер
 
Регистрация: 22.11.2009
Сообщений: 9
По умолчанию Разработка простейшего антивируса C++

Собственно в чём соль:
прога сканирует область данных ища совпадения .ехе файлов с файлами забитыми в базу вирусных сигнатур.

Сканер=поиск, открытие файла->нахождение хэша по алгоритму MD5->сравнение название файла и хэша с файлами базы сигнатур.

База=программа создания базы сигнатур=поиск открытие .ехе файла->нахождения хэша MD5-> занесение в базу имя и хэша.

Вобщем то антивирусом прога не будет, но подобие такового несёт в себе.

помогите с поиском .ехе файлов! как?
какого формата сделать базу как думаете?

надеюсь на вашу помошь
Чёрный ветер вне форума Ответить с цитированием
Старый 15.11.2011, 11:07   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

FindFirst, FindNext... 100500 раз обсуждалось
p51x вне форума Ответить с цитированием
Старый 15.11.2011, 12:00   #3
Чёрный ветер
 
Регистрация: 22.11.2009
Сообщений: 9
По умолчанию

хелп ми ->

Последний раз редактировалось Чёрный ветер; 15.11.2011 в 23:26.
Чёрный ветер вне форума Ответить с цитированием
Старый 15.11.2011, 23:25   #4
Чёрный ветер
 
Регистрация: 22.11.2009
Сообщений: 9
Плохо

Дошёл до определённого момента:
Ищет файлы указанного типа в указанном каталоге, а надо чтоб подкаталоги тож сканировал, как сделать?
помогите плз!

#include <iostream.h>
#include <windows.h>


int main()
{
WIN32_FIND_DATA winFileData;
HANDLE hFile;
char buffer[MAX_PATH];

SetCurrentDirectory("C:\\");
if(GetCurrentDirectory(sizeof(buffe r),buffer))

{
cout<<buffer<<endl;
lstrcat(buffer,"\\*.txt*");
hFile = FindFirstFile(buffer,&winFileData);
if (hFile!=INVALID_HANDLE_VALUE)
{
do
{
cout<<winFileData.cFileName<<endl;
}
while (FindNextFile(hFile,&winFileData)!= 0);
FindClose(hFile);
}
}
return 0;
}
Чёрный ветер вне форума Ответить с цитированием
Старый 15.11.2011, 23:37   #5
Чёрный ветер
 
Регистрация: 22.11.2009
Сообщений: 9
По умолчанию

вроде быф нужна функция bInnerFolders но чёто не понятно что и как, ответте хоть кто-нибудь!
Чёрный ветер вне форума Ответить с цитированием
Старый 16.11.2011, 00:14   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

ищите через ВинАПИ FindFirst, FindNext, а не обертки!
p51x вне форума Ответить с цитированием
Старый 16.11.2011, 09:37   #7
Чёрный ветер
 
Регистрация: 22.11.2009
Сообщений: 9
По умолчанию

Покнкретнее ктонибудь может чтонибудь написать!
что за отношение такое, сразу на ...
Чёрный ветер вне форума Ответить с цитированием
Старый 16.11.2011, 11:40   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

потому что:
1. в документации есть все даже с примерами (МСДН если не в курсе)
2. все обсуждалось с примерами и вариациями
3. т.к. вы хотите приплести какую-то функцию, то сразу видно, что вы ничего не читали даже про используемые у вас функции

Код:
winFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
скажет вам, что это директория, а дальше по желанию... самое простое рекурсия

П.С. оформляйте код в теги
p51x вне форума Ответить с цитированием
Старый 16.11.2011, 17:19   #9
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Цитата:
а надо чтоб подкаталоги тож сканировал, как сделать?
http://programmersforum.ru/showthread.php?t=26373
(второй пост)

Только не говорите что вы не сможете перевести из delphi в C++.
(единственный ньюанс - вместо repeat ... until -> do ... while)

Последний раз редактировалось zotox; 16.11.2011 в 17:25.
zotox вне форума Ответить с цитированием
Старый 17.11.2011, 21:34   #10
Чёрный ветер
 
Регистрация: 22.11.2009
Сообщений: 9
Печаль

Вобщем чёто такое пока получается)
надо вычислить мд5 и хэшкод(как с этим поступисть, чёто ничего не находится путного)
далее у меня ->
->база-> базу в файл...
Цитата:
std::vector<std::string> vFiles;

typedef struct _BASE_RECORD
{
char szFileName[MAX_PATH];
char szHash[18];
char szCodeHash[18];
}BASE_RECORD,*PBASE_RECORD;



void FindMyFiles(char* pszDirName)
{
WIN32_FIND_DATA winFileData;
HANDLE hFile;
char buffer[MAX_PATH];
ZeroMemory(buffer, sizeof(buffer));
stprintf(buffer, "%s\\*.exe");

hFile = FindFirstFile(buffer,&winFileData);
if (hFile!=INVALID_HANDLE_VALUE)
{
do
{
if ((!lstrcmp(winFileData.cFileName,". ")!=0)&&(!lstrcmp(winFileData.cFile Name,".")!=0))
{
if(IsDir(winFileData.cFileName))
{
FindMyFiles(winFileData.cFileName)
}else
{
std::string str = winFileData.cFileName;
vFiles.push_back(str);
}
}
}
while (FindNextFile(hFile,&winFileData)!= 0);
FindClose(hFile);
}
}

PBASE_RECORD DoBuildRecord(char* szFileName)
{
PBASE_RECORD pRecord = (PBASE_RECORD)HeapAlloc(GetProcessH eap(), 0, sizeof(BASE_RECORD));
ZeroMemory(pRecord, sizeof(BASE_RECORD));

strcpy(szFileName, pRecord->szFileName);

}

void BuildBase()
{
for(std::vector<std::string>::itera tor i=vFiles.begin();i!=vFiles.end(); i++)
{
PBASE_RECORD pRec = DoBuildRecord(*i);
}
}
Чёрный ветер вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клеточно-автоматная модель простейшего сумматора Anbor Помощь студентам 0 09.10.2010 22:45
чтение простейшего XML TaTT DoGG PHP 4 27.08.2009 11:44
Где взять пример простейшего дефрагментатора san72 Общие вопросы Delphi 2 02.03.2009 14:23
Создание простейшего обьявления coramba Microsoft Office Word 3 11.07.2008 12:47