Domanda sui virus e i loro mezzi di propagazione

Stato
Discussione chiusa ad ulteriori risposte.

Brolyssj4

Utente Silver
25 Novembre 2007
6
1
0
59
premetto che non sono un lamer, apro questa discussione per sapere come si fa a creare un virus che si propaghi via memorie di masse, esempio:
il virus è residente sul pc,non appena ci colleghi una pendrive o un hdd esterno si trasferisce pure lì, mi interesserebbe sapere come fare, non voglio il codice, ma solo la procedura TEORICA da seguire, il codice lo faccio io!
 
bhe...deve tenere sotto controllo le porte USB,appena viene rilevata una nuova periferica USB che possa ospitare file si copi li!
 
R4z0r_Cr4$H ha detto:
bhe...deve tenere sotto controllo le porte USB,appena viene rilevata una nuova periferica USB che possa ospitare file si copi li!

ci sono api che si occupano di controllare le porte usb?( la mia idea è quella di creare un virus che si copia praticamente ovunque,una volta che il pc è infetto manda una semplice messagebox)
 
Fai un ciclo nel virus che ongi qualvolta che viene avviato checka tutte le unita del pc(dalla A: alla Z:) e ongi qualvolta che ne trova una, checka se è undrive removable, se si ci copia dentro il virus e poicrea sempre sulla chiave usb un file denominato autorun.inf che avviera il virus ogni volta la chiave usb viene connessa ad un pc
 
delta ha detto:
Fai un ciclo nel virus che ongi qualvolta che viene avviato checka tutte le unita del pc(dalla A: alla Z:) e ongi qualvolta che ne trova una, checka se è undrive removable, se si ci copia dentro il virus e poicrea sempre sulla chiave usb un file denominato autorun.inf che avviera il virus ogni volta la chiave usb viene connessa ad un pc


come verifico se è undrive removable?, inoltre l'autorun.inf cosa dovrebbe contenere? dato che una volta avviata su un altro pc la chiavetta il virus dovrebbe copiarsi nel pc a cui si è collegata
 
ho trovato una dll che ha delle funzioni che ti sarebbero utili. si chiama mcHid.dll
in aggiunta esiste una classe per VB6 (mcHIDInterface.bas) che semplifica l'utilizzo (c'è per esempio l'evento onPlugged)

ma se cerchi "mcHid.dll" unito al linguaggio per cui lo cerchi (esempio "mcHid.dll C++"), dovresti trovare molti esempi.

[OT]
R4z0r_Cr4$H ha detto:
e che ne so io...GIYF!
se non lo sai stai zitto invece di far perdere tempo alle persone.... non puoi neppure dire che questi sono argomenti da newbie
[/OT]

[attachment=1250]
 
Whivel ha detto:
ho trovato una dll che ha delle funzioni che ti sarebbero utili. si chiama mcHid.dll
in aggiunta esiste una classe per VB6 (mcHIDInterface.bas) che semplifica l'utilizzo (c'è per esempio l'evento onPlugged)

ma se cerchi "mcHid.dll" unito al linguaggio per cui lo cerchi (esempio "mcHid.dll C++"), dovresti trovare molti esempi.

[OT]
R4z0r_Cr4$H ha detto:
e che ne so io...GIYF!
se non lo sai stai zitto invece di far perdere tempo alle persone.... non puoi neppure dire che questi sono argomenti da newbie
[/OT]


ti ringrazio molto,:hail:, vorrei comunque chiedere una cosa: tu hai detto di aver trovato quella dll, ma come? voglio dire,per approfondire alcuni argomenti della programmazione dove devo cercare?
 
dato che non trovo documentazione per la dll mcHid,sto provando ad usare le win32 api fornitemi da delta,iniziando a fare un programmino che non appena viene connesso un dispositivo USB scrive a schermo:dispositivo usb connesso!
il prog è in c++, ho provato a generarlo ma dev mi dà errore, dicendo "expected primary-expressione before ')' token", e sotto "537 cannot be used as a function).

il codice è questo:
Codice:
#include <windows.h>
#include <winuser.h>
#include <dbt.h>
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
    
    if (WM_DEVICECHANGE(DBT_DEVICEARRIVAL,&DEV_BROADCAST_HDR))
    cout<<"Dispositivo USB connesso!\n";
    

    
    
    system("pause");
    return 0;
}
 
secondo me è tutto più semplice, basta fare l'elenco dei drive,
verificare se dentro c'è LETTERA:\virus.exe (esempio)
se non c'è, lo copio.
 
Predator ha detto:
secondo me è tutto più semplice, basta fare l'elenco dei drive,
verificare se dentro c'è LETTERA:\virus.exe (esempio)
se non c'è, lo copio.


quindi mi basterebbe fare un elenco dei drives, come posso fare?( mi basta sapere il nome della funzione da usare)
per pura curiosità:cosa c'è di errato nel codice che ho postato?
 
Whivel ha detto:
[ot]se non lo sai stai zitto invece di far perdere tempo alle persone.... non puoi neppure dire che questi sono argomenti da newbie
[/ot]
[ot]e chi a detto ke sono argomenti da newbie?era solo per dire...hai provato a cercare qualche api su google a riguardo?niente di più...[/ot]
 
Brolyssj4 ha detto:
quindi mi basterebbe fare un elenco dei drives, come posso fare?( mi basta sapere il nome della funzione da usare)
per pura curiosità:cosa c'è di errato nel codice che ho postato?
c'è il controllo "DriveListBox" che elenca i drive inseriti. metti in un timer di qualche secondo che fa il controllo del file, e sei apposto.
 
Predator ha detto:
Brolyssj4 ha detto:
quindi mi basterebbe fare un elenco dei drives, come posso fare?( mi basta sapere il nome della funzione da usare)
per pura curiosità:cosa c'è di errato nel codice che ho postato?
c'è il controllo "DriveListBox" che elenca i drive inseriti. metti in un timer di qualche secondo che fa il controllo del file, e sei apposto.

ho provato a cercare sulla win32 programmer's reference il controllo dirvelistbox ma non c'è, come lo implemento in c++?
 
ehm ehm
999287vp%20p4.gif

vedi l'oggetto (il controllo) alla destra del timer... è quello.
 
Predator ha detto:
ehm ehm
999287vp%20p4.gif

vedi l'oggetto (il controllo) alla destra del timer... è quello.

scusami ma il mio ide non ha i controlli! io uso devc++, che ide potrei usare?
 
[ot]si scusa, ero un pochino nervoso... è solo che penso che se succede a me di non sapere una cosa e mi dicessero così non sarei felice... scusa
[/OT]


le api che ti servono sono GetLogicalDrives e GetDriveType

API-Guide ha detto:
The GetLogicalDrives function returns a bitmask representing the currently available disk drives.
If the function succeeds, the return value is a bitmask representing the currently available disk drives. Bit position 0 (the least-significant bit) is drive A, bit position 1 is drive B, bit position 2 is drive C, and so on.
If the function fails, the return value is zero.
 
Whivel ha detto:
[ot]si scusa, ero un pochino nervoso... è solo che penso che se succede a me di non sapere una cosa e mi dicessero così non sarei felice... scusa
[/OT]


le api che ti servono sono GetLogicalDrives e GetDriveType

API-Guide ha detto:
The GetLogicalDrives function returns a bitmask representing the currently available disk drives.
If the function succeeds, the return value is a bitmask representing the currently available disk drives. Bit position 0 (the least-significant bit) is drive A, bit position 1 is drive B, bit position 2 is drive C, and so on.
If the function fails, the return value is zero.


ho provato con getdrivetype, il problema è che mi segnala sempre che il drive non esiste!
se per esempio do a getdrivetype il parametro 0 mi segnala "drive removable", se invece faccio così:
const char* disk="C";
GetDriveType(disk)
nonostante il disco c esista mi dice che è inesistente,come mai???
 
delta ha detto:
(...)autorun.inf che avviera il virus ogni volta la chiave usb viene connessa ad un pc

Purtroppo la cosa non è attuabile.
Infatti, come purtroppo ho constatato, è impossibile creare un autorun.inf funzionante su un dispositivo USB.Il massimo che si può ottenere è che, quando clicca sul dispositivo rimovibile da Risorse Del Computer, invece di visualizzare il file parte l'eseguibile.

leggiti questo
http://www.myhack.it/autorun-da-usb-t-9376.html
 
premetto che io piuttosto che usare il C++ uso l'assembler, non so se questo puo' andar bene
ovviamente includi
#include <windows.h>
#include <string.h>

DWORD logicalDrives = GetLogicalDrives() << 1;
int i = 1;
char driveLetter = 'A';
string drive;

while(logicalDrives)
{
if(logicalDrives & (int)pow(2,i))
{
drive = driveLetter;
MessageBox(hWnd, drive.c_str(), "test", 0);
}

++i;
++driveLetter;

}
mentre per l'autorun nelle pennette usb non è fattibile.
 
invece di "C" prova "C:\"

e cmq le 2 funzioni le dovresti usare insieme




il codice di Predator come sempre è ottimo.... in aggiunta metti getdrivetype (con la lettera e ":\"), otterrai il tipo di drive e potrai fare quello che ti pare
 
Predator ha detto:
premetto che io piuttosto che usare il C++ uso l'assembler, non so se questo puo' andar bene
ovviamente includi
#include <windows.h>
#include <string.h>

DWORD logicalDrives = GetLogicalDrives() << 1;
int i = 1;
char driveLetter = 'A';
string drive;

while(logicalDrives)
{
if(logicalDrives & (int)pow(2,i))
{
drive = driveLetter;
MessageBox(hWnd, drive.c_str(), "test", 0);
}

++i;
++driveLetter;

}
mentre per l'autorun nelle pennette usb non è fattibile.
grazie,comunque non c'è proprio alcun metodo per fare in modo che appena avviata la pendrive il virus si copi nel pc a cui è stata collegata la pendrive?
 
no.... per una volta la microsoft ha fatto una considerazione decente (in realtà la cosa è simile, se non identica per cd e pen drive, ma dipende da come è impostato l'autorun dall'utente...
 
Stato
Discussione chiusa ad ulteriori risposte.