Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // • Code phần quét mã độc
- private: System::Boolean compareStr(char *str1, char *str2)
- {
- //Hàm dùng để so sánh 2 chuỗi ký tự có giống nhau không
- //Hàm trả về TRUE khi giống nhau và FALSE khi khác nhau
- int i=0;
- while (*(str1+i) == *(str2+i))
- {
- i++;
- if (i == 32)
- return true;
- }
- return false;
- }
- private: System::Boolean compareStr1(char *str1, char *str2, int m, int n)
- {
- //Hàm dùng để so sánh 2 chuỗi ký tự có giống nhau không
- //Hàm trả về TRUE khi giống nhau và FALSE khi khác nhau
- int i=0;
- int j;
- for (j=0;j<=m;j++)
- {
- while (*(str1+i) == *(str2+i))
- {
- i++;
- if (i == n )
- return true;
- }
- return false;
- }
- }
- private: System::Void scan(System::String ^strPath)
- {
- if (isScan)
- {
- System::String ^strFile;
- System::String ^tmp;
- char strDatFile[32];
- //Liệt kê file trong thư mục hiện tại
- for each (strFile in System::IO::Directory::GetFiles(strPath))
- {
- //Chuyen kieu String sang kieu char
- int lenght = strFile->Length;
- char *chTmpData = new char[lenght+1];
- for(int i = 0; i<lenght;i++)
- {
- *(chTmpData + i) = strFile[i];
- };
- *(chTmpData + lenght) = '\0';
- //Mở file cần được scan ra làm việc
- FILE *fs;
- fopen_s(&fs,chTmpData,"rb");
- if (fs != NULL)
- {
- FILE *f;
- char strPathSign[]="mn.dat";
- fopen_s(&f,strPathSign,"rb");
- m_Sign sign;
- int i=0;
- int posEnd;
- //Xác định kích thước file
- fseek(f,0,SEEK_END);
- posEnd=ftell(f);
- //Trả về vị trí ban đầu
- fseek(f,0,SEEK_SET);
- fseek(fs,0,SEEK_END);
- int posend=ftell(fs);
- //Trả về vị trí ban đầu
- fseek(fs,0,SEEK_SET);
- //Tiến hành vòng lặp liệt kê mã nhận dạng
- int j=0;
- while (ftell(f) < posEnd)
- {
- //Đọc mẫu tin lưu mã nhận dạng virus
- fread(&sign,sizeof(m_Sign),1,f);
- //Duyet file can quet
- while(ftell(fs)<posend)
- { fseek(fs,j++,SEEK_SET);
- int cur1;
- cur1=ftell(fs) fread(strDatFile,32,1,fs);
- if (compareStr(strDatFile,sign.Sign) == true)
- {
- //Nhận dạng đúng là virus
- tmp = gcnew System::String(sign.Name);
- lstRe->Items->Add(L"Phát hiện : " + tmp + L" đường dẫn : " + strFile);
- detected++;
- lblDetected->Text = Convert::ToString(detected); System::Windows::Forms::Application::DoEvents();
- }
- }
- //
- int cur2;
- cur2=ftell(f) fread(strDatFile,32,1,fs);
- if (compareStr(strDatFile,sign.Sign) == true)
- { System::Windows::Forms::Application::DoEvents();
- }
- }
- fclose(f);
- fclose(fs);
- }
- //Ghi ra listBox thông báo đã quét file này
- tmp = gcnew System::String(strFile);
- lstFile->Items->Add(tmp);
- scaned++;
- lblScaned->Text = Convert::ToString(scaned); System::Windows::Forms::Application::DoEvents();
- }
- //Tiến hành liệt kê các tập tin trong thư mục
- for each (strFile in System::IO::Directory::GetDirectories(strPath))
- {
- try
- {
- //Lặp đệ qui
- scan(strFile);
- }
- catch(Exception ^e)
- {
- //Bắt lỗi }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment