How To Make Antivirus Using C++ Programming Language

Posted on Feb 6 2013 - 11:08pm by cipherux

How To Make Antivirus Using C++ ?

There are many tutorials on the internet teaching you how to write virus programs that could destroy the basic configurations of any Operating System. But here at CodeMink, we’ll tell you how to make AntiVirus using C++. Although, you can write the code in any programming language of your choice, but we’ll focus the concept in C++.

 Also See :How to Make Antivirus Using Java Programming Language

 

What’s the focus Point?

The main point behind searching any virus is identifying the code structure of any virus file.

Suppose, we’ve found this following virus in computer,

Virus File: How to Make Antivirus in C++

Virus File: How to Make Antivirus in C++

Now we’ll see the Binary code of this file.

Simply open this file in your favorite text editor. I advise you to use Notepad++ for the purpose.

Upon opening the file, you’ll see all unknown characters in file. What you have to do is just concentrate on characters which are identifiable (consider the image below)

Virus exe File opened in Notepad++

Virus exe File opened in Notepad++

In the 1st line,
1st character = M
2nd character = Z

In 2nd line,
9th character = P
10th character = E

In 9th line,
3rd character = (
4th character = %

 

Take at least 10-12 character samples from the file and write then in text file in the following format:

Virus Database

Virus Database

 

Now this file will act us our virus Database. We can simply update this file and supply to the user for a better protection.

 

Let the Scanning Begin

Now, suppose we’ve to scan any user specified folder. Let’s write code in C++ for the same.

For doing this, we need to:

  • STEP 1: Get a list of all the files present in that folder including sub directories too.
  • STEP 2: Scan them one by one using the character sample we’ve collected above. If the characters at positions specified above are matched with those in files, then it would be tagged as “Infected”.
  • STEP 3: Delete the virus file, in case we find them.

 

Its Coding Time Now:

[cpp]/*The program written below is an exclusive property of www.codemink.com
You are not allowed to copy/reprint it in any social media like:-
books, internet, blogs, etc. without the permission of its author.
Author: Lavneet Sharma
Release Date(dd/mm/yyy): 7/2/2013 */

#include <dirent.h>
#include <string.h>
#include <fstream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>

int scan_this(char *file_name)
{
char *pattern, *line_in_file;
char file_ch, ch;
int val, val2, flag;
ifstream fin3, fin4;
fin3.open(file_name); // incase the file is not accesible
if(!fin3) return 0;

else // file is accessible | 100% it is a file.
{
//Opening Virus Database File
fin4.open(“db.txt”); // this is our character pattern file

for(;;)
{
fin4>>pattern;
if(!strcmp(pattern,”<-”))
{
fin4>>pattern;
if(!strcmpi(pattern,”End”))return -1;
else if(!strcmpi(pattern, “virus”))
{
if(flag) return 1;
else continue;
}
}
else if(!strcmpi(pattern,”LINE”))
{
fin4>>val; // got the line number

// skipping initial lines to reach the line number
for(int i=0;i<val-1;i++)
{
fin3.getline(line_in_file, 300);
}

fin4>>val; // got the character number
fin4>>file_ch; // got the character

//skipping initial character to reach the character
for(i=0;i<val-1;i++)
{
fin3.get(ch);
}

if(file_ch == ch) flag = 1; // matched.
else flag =0;
fin3.seekg(0); // set to start
}
}

}

}

void main()
{
char comm[300], dirpath[100], file_name[200];
char ask;
int response;
ifstream fin;

cout<<”Enter Directory you want to scan: “;
cin>>dirpath;

strcpy(comm, “dir “);
strcat(comm, “dirpath /b /s >tmp.$$$”);
system(comm);

fin.open(“tmp.$$$”);

while(!fin.eof())
{
fin.getline(file_name, 200);
response = scan_this(file_name);
if(response == 1)
{
cout<<”<–!! Caution.! A Virus has been Detected..!”;
cout<<”\n”<<file_name;
cout<<”\nPress Enter Key to Delete it.”;
ask= getch();
if(ask == 13)
{
remove(file_name); // delete the virus
}
}
}

fin.close();
cout<<”Scan Complete.!! Thank You for using our anti virus”;
getch();

}[/cpp]

Note: You need to create its Executable (.exe) of this program before using it anywhere. To create Executable, simply save your program in any name and then press F9 twice.

Code Explanation Summary

The code written above has 1 major function as listed below:

system
command

It executes the DOS command within the c++ program. The command executed in the program is, dir /b /s >temp.$$$
This, command, lists all the file present in current working directory including sub directories and saves them in temp.$$$ file

and the rest is File Handling.

The complete explanation of this code will be provided in my next post. So, be updated @CodeMink.

So, that’s all on How to make antivirus using c++. For any further doubt or query, please feel free to comment below using the comment Box.

Related Posts

About the Author

c!pherux (pronounced as psy-frux, cipherux) is neither software engineer nor a developer. All he knows is "HOW TO CODE" and that's what he do.

36 Comments so far. Feel free to join this conversation.

  1. T C July 12, 2014 at 7:51 AM - Reply

    Does not work on my computer. Says:
    error: fstream.h: No such file or directory
    and more gibberish like:
    error: iostream.h: No such file or directory
    COULD YOU PLEASE EXPLAIN THE PROBLEM???
    By the way, i am using Code::blocks
    special build C++ for Dummies

    • chaotic July 15, 2014 at 11:13 PM - Reply

      Sounds like you are missing those libraries, or perhaps your compiler just doesn’t know where they are.

      An ugly, but general solution should be putting them in the same directory where your source is, and write them in quoted form- for example:

      #include “fstream.h”

    • VestedMadScientist July 20, 2014 at 6:23 PM - Reply

      #include is actually depreciated. Use #include instead. Same goes for all the other headers.

  2. Student August 13, 2014 at 1:06 PM - Reply

    What are the advantages of using the system command to list files in folder instead of using the file listing provided by C++? Thanks

Leave A Response