Anda di halaman 1dari 82

Apostila de Criao de Badcoms

II

E disse Deus: Haja luz: e houve luz. Gnesis 1.3

Dr. Elek_Meag

III

Apostila de Criao de Badcoms

IV

Sumrio
Advertncias......................................................................................VIII Editorial................................................................................................ X Conselho ............................................................................................. XI Introduo.........................................................................................XIII Mdulo I........................................................................................... XVII Os Programas ...............................................................................XVIII O Primeiro Badcom ............................................................................. XX Comando help .................................................................................. XXII Os Comandos ..................................................................................XXIII Comando ECHO: Escrevendo frases e... ..................................... XXIV Comando PROMPT: Modificando o prompt................................... XXV Comando REM: Fazendo comentrios......................................... XXVI Comando PAUSE: Pausando a execuo .................................... XXVII Comando EXIT: Concluindo a execuo..................................... XXVII Comando CLS: Limpando a tela................................................XXVIII Comando DEL: Apagando arquivos............................................. XXIX Comando RD: Excluindo pastas .................................................. XXXI Comando MOVE: Movendo arquivos .......................................... XXXII Comando COPY: Copiando arquivos .........................................XXXIII Comando REN: Renomeando arquivos ..................................... XXXIV Comando MD: Criando pastas ................................................... XXXV Comando CD: Mudando a pasta aberta .................................... XXXVI Recorte ..................................................................................... XXXVII Recapitulando..............................................................................XXXVIII Mdulo II ............................................................................................XL O Assunto......................................................................................... XLII Os Comandos .................................................................................. XLIII Comando FORMAT: Formatando uma unidade............................ XLIII Comando LABEL: Nomeando Unidades .........................................XLV V

Dr. Elek_Meag

Comando SUBST: Associando pastas a unidades ........................ XLVI Comando TIME: Modificando a hora.......................................... XLVII Comando DATE: Modificando a data ........................................ XLVIII Comando AT: Agendando tarefas ............................................... XLIX Comando ATTRIB: Modificando atributos de arquivos ..................... LI Comando COMP: Comparando arquivos ....................................... LIII Comando FIND: Encontrando texto .............................................. LIV Comando TYPE: Mostrando o contedo de arquivos .......................LV Comando CALL: Executando um outro arquivo de lotes ................ LVI Comando GOTO: Pulo incondicional ............................................ LVII Comando IF: Pulo condicional .................................................... LVIII Comando SET: Variveis em prompt de comando ......................... LIX Comando FOR: Executando comandos em arquivos...................... LXI Redirecionamento de I/O .................................................................. LXII Explorando o Registro ...................................................................... LXIII Chaves e valores especiais:........................................................ LXXI Vrus .............................................................................................. LXXII FOR Transformando badcoms em vrus .................................... LXXIII Compilando Badcoms.......................................................................LXXV Recapitulando............................................................................... LXXVII Concluso........................................................................................LXXX

Apostila de Criao de Badcoms

VI

Dr. Elek_Meag

VII

Advertncias
Esta uma publicao que tm apenas fins educativos. No quero nem desejo incitar ningum a cometer atos de destruio de dados em microcomputadores, meu objetivo ao escrever esta apostila claro: mostrar como funcionam e como so escritos os badcoms. Se o conhecimento aqui aprendido for utilizado para fins ilcitos ou maliciosos, a responsabilidade ser de quem cometeu tais atos absurdos e inaceitveis. O material aqui contido poder ser usado para manter a ordem, com tcnicas de preveno e proteo contra badcoms, porm, tambm poder ser utilizado para causar danos, deixo bem claro que os atos que o conhecimento aqui compartilhado permite dependem da ndole do leitor. Novamente, me isento de todo e qualquer ato ilcito, criminoso, antitico e imoral que leitores mal intencionados podem cometer, e me isento de qualquer dano causado com o uso do conhecimento proveniente desta publicao. Como tal, tambm peo que desconsidere qualquer apologia a tais atos que eu eventualmente possa fazer em minha publicao. Se em qualquer parte ou local desta publicao for encontrado qualquer indcio de apologia ao crime peo que desconsidere, sem hesitar. Deixo aqui bem claro que meu objetivo no cometer crimes ou incitar meus leitores a comet-los, mas compartilhar meu extenso conhecimento sobre os badcoms, embora, sem inteno, eu possa errar e fazer algum tipo de apologia criminosa. Aviso aqui tambm que esta se trata de uma publicao gratuita, e em nenhum momento ela poder ser

comercializada. Embora gratuita, fechada e no permite modificaes, embora citaes e cpias sejam permitidas, sendo necessrio o apontamento da fonte. Transcrever textos sem citar a fonte um ato imoral, tanto em hacking como na vida l fora. Peo carinhosamente que os leechers se mantenham afastados! Obrigado pela ateno e boa leitura.

Apostila de Criao de Badcoms

VIII

Dr. Elek_Meag

IX

Editorial

O
conhecer.

l. Voc j deve me conhecer, meu nick Dr. Elek_Meag e escrevo uma revista chamada Revista UnderHack. Como prometido na seo EOF da segunda edio, a mais recente,

um presente de Natal seria dado aos meus leitores. Por isso voc j deve me

No incio fiquei indeciso sobre o que abordar; pensei em escrever sobre personalizao de computadores, desisti da idia; pensei em escrever um programa, um criador de badcoms, mas abandonei a inteno: melhor ensinar a pescar do que dar o peixe. Uma apostila que aborda este assunto tem de ser um tanto extensa se quiser abord-lo (quase) integralmente, visto que os comandos so poucos, mas as oportunidades so muitas. Escolhi esse assunto por dois motivos principais: uma rea do hacking que conheo muito bem e que utilizo, ou pelo menos, entendo h muito tempo e tambm, claro, pelo fato de que abordei superficialmente o assunto na ltima edio da Revista UnderHack, dando assim continuidade ao tema. Gostaria de avisar que criar badcoms no para qualquer um. Os badcoms so como os vrus, so uma arte, s que, no entanto, escrita e a maioria no aprecia, por assim dizer ( bvio, como vai apreciar uma bost* que fod* com essa merd* de PC ?!)... Para criar badcoms, antes de saber os comandos, preciso ter criatividade e engenhosidade. Ter experincia com o

prompt do Windows, ou com o antigo MS-DOS ajuda. Resumidamente, preciso


ser um hacker integral, preciso ter o modo de pensar apropriado e necessrio aos hackers. Por isso digo que criar badcoms no para qualquer um; criar badcoms s para o hacker que sabe ser hacker, por assim dizer. Pois bem, aqui deixo meu presentinho de Natal. Filosofia

elekmeaguiana: um paradoxo, afinal Natal tempo de paz e paz a ltima coisa que os badcoms podem trazer, mas tudo bem... A paz ser trazida ao criador de badcoms, que dar boas gargalhadas. Apostila de Criao de Badcoms X

Conselho

omo eu disse anteriormente, criar badcoms uma arte. Uma arte bela, porm, incompreendida. Digo que uma arte porque um badcom bem feito... Sejamos realistas, um badcom por

mais podre que seja, traz felicidade. Tanto na hora de ver uma janela de prompt que rapidamente desaparece causar danos muitas vezes irreversveis, quanto na hora em que conclumos nosso trabalho de escrev-lo, mesmo no sendo um livro ou revista. Criar badcoms pode levar tempo. Um bom badcom, um que j no tenha mil cpias criadas distintamente ao redor do mundo, um badcom nico e exclusivo pode ter a escrita trabalhosa e demorada. Por mais que um badcom possa ser destrutivo, eu, Dr. Elek_Meag, aconselho que no seja utilizado. Isso acontece devido ao fato de que a minha tica pessoal no o permite, embora a tica possa ser quebrada. Porm, so da sua

responsabilidade os danos que podem eventualmente ser causados. Sabe, escrever badcoms pode ser um trabalho lucrativo. Alguns chamam de vender a alma, eu chamo de lucrar com o conhecimento. Outro dia, eu mesmo ganhei quinze real para escrever um badcom. Quando acabei meu trabalho percebi que mesmo um cdigo de 136 bytes pode ser muito destrutivo. Porm, um cdigo mais elaborado pode render mais lucro. Isso sendo apenas badcom. Imagine quanto se pode ganhar escrevendo vrus,

trojans ou keyloggers. Claro que para isso necessrio, ou pelo menos,


aconselhvel, dominar alguma linguagem de programao como Delphi ou C. Por mais paradoxal que parea, o programa que menos traz danos ao PC o mais caro. J chega! Resumindo: o conselho que dou que no utilizem os badcoms para, de fato, fude* com a vida de outra pessoa, aconselho que no v para o lado negro da fora. Hacking, antes de poder ser vandalismo, obrigatoriamente saber.

Dr. Elek_Meag

XI

Apostila de Criao de Badcoms

XII

Dr. Elek_Meag

XIII

Introduo

sta ser uma pequena introduo ao ambiente em que estamos para desenvolver os badcoms e tambm, a toda essa histria de badcoms.

Para comear, como sempre, a etimologia. O termo badcom uma juno de dois outros termos de origem estadunidense, onde falam ingls americano. Bad um adjetivo e significa mau, isto , o contrrio de bom, j com uma abreviao de command, um substantivo que traduzido como comando. O resultado algo como comando mau. O plural, como muito fazem, no se faz com s, ficando badcoms, lembrando que isso seria, em ingls, um possessivo. O mais correto seria badcoms. Badcoms podem ser feitos tanto em Windows como Linux, porm o Windows a plataforma dominante. Por isso, quando no se sabe o sistema operacional, o Windows deve ser o S.O. alvo. H alguns anos atrs, lanado o MS-DOS, um sistema operacional que Bill Gates comprou da Seattle Computer Products e modificou um pouco. Depois, com o surgimento do Windows, um sistema com interface grfica (GUI), isto , com botes e campos ao invs de comandos em uma shell, o MS-DOS era o gatilho para a iniciao do S.O. Quem j est mais tempo na informtica se lembra do comando win para inicializar o Windows. Mais um tempo se passou e surgiu o Windows NT, essa verso j no precisava mais do MS-DOS para bootar, a partir da, o MS-DOS virou a shell do Windows em uma GUI: tnhamos a possibilidade de usar a interface grfica e de usar o prompt de comando, como chamada a shell no ambiente Windows. Assim, tudo o que podia ser feito pela shell tambm podia ser feito atravs da interface grfica e vice-versa. O antigo MS-DOS era um S.O. limitado: ele no permitia multitarefa nem multiusurio, ou seja, o MS-DOS permitia que apenas um programa fosse executado de cada vez e que apenas um usurio podia usar o S.O. Da vem o XIV

Apostila de Criao de Badcoms

modo de execuo de tarefas Batch, que executa uma tarefa aps a outra. Ainda podemos criar esses scripts de execuo no Windows, utilizando-se dos comandos do prompt de comando, desde que o arquivo receba a extenso .bat. notrio que bat vem de batch e como todos sabem, bat significa morcego em ingls, por isso, se eu me referir a morcegos bvio que se trata da extenso. Eis uma imagem do prompt de comando:

importante saber, tambm, sobre antigo modo de se referir aos arquivos, que obedecia ao formato 8.3, isto , um arquivo que tem um nome com mais de oito caracteres referido digitando-se os primeiros seis, adicionando um til e o nmero respectivo. Por exemplo, um arquivo com o nome assassino.txt; para me referir a ele, eu uso assass~1.txt. Arquivos que tem como nome oito caracteres ou menos podem ter o nome escrito integralmente. Nesse sistema antigo, no existiam espaos para nomes. Alguns comandos do atual prompt de comando herdaram algumas das fraquezas deste antigo sistema operacional. Na verso XP do Windows, alguns comandos e opes perigosas foram removidos, mas podemos contornar esse p no saco vindo do Tio Bill. Porm, lembro-lhes que praticamente tudo o que pode ser feito usando uma GUI pode ser feito utilizando uma shell, por isso, badcoms so destrutivos e perigosos. Badcoms podem mudar a data ou apagar arquivos. Podem criar um arquivo ou impossibilitar o boot.

Dr. Elek_Meag

XV

Apostila de Criao de Badcoms

XVI

Dr. Elek_Meag

XVII

Mdulo I

e voc iniciante, importante que voc se familiarize com os programas que ir utilizar para escrever seus badcoms; o segundo passo conhecer os principais e mais bsicos

comandos do prompt, afinal, com eles que grande parte dos badcoms, mesmo os mais pomposos, escrita; e por fim, porm no menos importante, algumas dicas para a escrita de badcoms: essas dicas voc j conhece, foram abordadas na Revista UnderHack #2.

Os Programas
Escrever badcoms simples no exige nenhum programa adicional: tudo o que precisamos j vem com o Windows, pelo menos nisso, o Tio Bill colaborou com os hackers. Os programas que precisaremos sero o bloco de notas e o prompt de comando. Voc pode abrir esses programas atravs de Iniciar > Todos os programas > Acessrios. Neste diretrio estar o prompt de comando e o bloco de notas. Se voc quiser fazer isso mais rapidamente, voc pode abrir esses programas a partir de Executar... Para abri-los da, abra o menu Iniciar e clique em Executar...

Esse executar quase como o prompt de comando: permite executar comandos, inclusive os do prprio prompt, porm, grfico e tem tambm o boto . Apostila de Criao de Badcoms XVIII

Ao clicar, uma janela como essa aberta:

no campo centrali que digitamos os comandos. Para abrir o bloco de notas, digite notepad.exe, para o prompt de comando, digite cmd.exe. Janela no bloco de notas:

Creio que o leitor se lembre de como uma janela de prompt; se no lembra, volte pgina XV. Tente executar o bloco de notas e o prompt de comando e estude-os um pouco. XIX

Dr. Elek_Meag

Primeiro O Primeiro Badcom


Na verdade, este um exemplo muito simplrio sobre como criar badcoms. Este badcom nada tem de destrutivo, ele apenas exibe uma frase e pede confirmao para continuar e fecha o programa. Aqui boto a carroa na frente dos bois, por isso, no de muita bola para os comandos: eles sero abordados e estudados, no se preocupe, dont worry... Vamos l! Com o bloco de notas aberto, digite o seguinte cdigo: @echo off

echo Meu primeiro badcom. pause exit Depois de digitado o cdigo, abra o menu Arquivo e clique em Salvar:

Aparecer uma janela de salvamento de arquivo padro do Windows. Apostila de Criao de Badcoms XX

Aqui, ela est ilustrada:

No salve nada ainda! V o campo Salvar como tipo, seguido de Documentos de texto (*.txt)? Pois bem, clique nesse campo e selecione a opo Todos os arquivos. No campo Nome do arquivo, digite o nome que deseja dar ao badcom (aconselho que o leitor crie uma pasta e l salve os seus badcoms), seguido da extenso .bat. Isso muito importante, pois s atravs da extenso que o Windows reconhecer que o arquivo deve ser executado em modo batch. Pronto, agora s executar o badcom e ter a linda frase Meu primeiro badcom. Escrita na janela do prompt, seguida da frase Pressione qualquer tecla para continuar.... Ao clicar a janela some. Lembro novamente que este um exemplo bem simplrio: mas serviu para mostrar como deve ser efetuado o salvamento dos badcoms.

Dr. Elek_Meag

XXI

Comando help
Preferi excluir este programa da lista dos comandos usados em badcoms, at pelo fato de que quase impossvel que se encontre o help em um. O help (ajuda, em ingls) utilizado para duas coisas: para listar os comandos e para obter informaes deles. Supondo que eu digite o comando help no prompt de comando, ele exibir uma janela desse tipo:

Note que quando executo o help, ele exibe os comandos do prompt. Execute-o e leia o nome dos comandos e a sua descrio, pode at executar os mais seguros, isto , os que no podem trazer danos aos seus dados. Depois de ter efetuado a leitura, execute o seguinte comando no prompt: help cls. Como voc j leu, o comando cls serve para limpar a tela. Quando voc executa o help, com mais um comando na frente, ele serve como um assistente, que mostra a utilidade do programa e as suas opes de funcionamento. Isso muito importante, j que todo o badcom bem feito exige, ao menos, um comando com opes. Imagine ter que lembrar de todos os comandos e ainda por cima, de todas as opes, de cada comando. Por isso h o comando help. Outro ponto de mrito ao Tio Bill... Apostila de Criao de Badcoms XXII

Os Comandos
Se voc executou o help e leu todas as descries dos comandos, deve ter notado que alguns podem ser potencialmente perigosos. Algum com uma real mente hacker j teria dado help nos comandos e os mais aventureiros, teriam testados, mesmo sem saber os reais danos que poderiam ser causados. Pois bem, entre os comandos do prompt de comandos, estes sero abordados no mdulo I: cd cls copy del echo exit md move pause prompt rd rem ren Estes so os comandos bsicos para se escrever um badcom. Todo badcom tem pelo menos um destes comandos. Eles servem para vrias coisas, que voc j teve ter conhecido e/ou experimentado atravs do comando help; servem para apagar e renomear arquivos; servem para mover (recortar) arquivos; servem para limpar a tela, usar comentrios, exibir uma frase, enfim, fazem bastante coisa, mesmo no sendo muitos.

Dr. Elek_Meag

XXIII

Comando ECHO: Escrevendo frases e...


Algumas vezes, necessrio enviar alguma frase ao usurio e tambm pode ser divertido enviar uma mensagem dizendo que os dados foram perdidos ao usurio. E mais: na hora H, ningum quer ver quais os comandos que o badcom est executando, pois um usurio mais experiente pode fechar a janela e interromper o andamento do badcom. Usando o comando echo podemos mostrar frases na tela, tal a sintaxe: echo FRASE

Vistes, o comando funciona! Agora, quando quiser ocultar os comandos que esto sendo executados, voc executa echo off, isso desliga o eco, isto , a exibio dos comandos: apenas o que eles retornam, uma mensagem, por exemplo, exibido. Para esconder inclusive o echo off, voc usa uma arroba atrs: @echo off. Esse o melhor jeito de fazer isso em badcoms, a inclusive o primeiro echo off fica escondido. aconselhvel que se faa uso desse recurso apenas quando o badcom estiver pronto e a melhor parte para colocar o @echo off no incio do cdigo, assim, todos os comandos executados ficam ocultos; no usando-o todos os comandos seriam vistos na execuo. Apostila de Criao de Badcoms XXIV

Comando PROMPT: Modificando o prompt


Atravs deste comando possvel modificar o prompt, isto , o que aparece antes de onde digitado o comando. O prompt padro a pasta onde o usurio est atualmente, mas isso pode ser modificado:

Note que o comando no tem opes, mas h alguns cdigos de caracteres para que eles sejam exibidos corretamente. Pode ser usado qualquer tipo de texto como prompt, embora textos curtos sejam recomendados, pela tamanha espalhafatosidade que tm. Este comando capaz de substituir o @echo off, afinal, se definir um prompt pequeno, como apenas um trao, os comandos executados so mostrados e no se ocupa muito espao em tela com um discreto prompt, assim podemos visualizar que comando est sendo executado. XXV

Dr. Elek_Meag

Comando REM: Fazendo comentrios


Quando o cdigo muito extenso ou muito difcil de compreender, comum linguagens de programao permitirem o uso de comentrios para especificar o que determinada funo ou comando faz. O mesmo se aplica ao prompt de comando. Atravs do comando rem possvel deixar comentrios, a sintaxe de uso bem simples: rem comentrios

Este comando no retorna nada: serve apenas para deixar comentrios no cdigo, apenas um indicativo de texto que ignorado inclusive na hora da execuo: no aparece nada. Porm, o comando aparece em um badcom se no haver o uso do recurso citado na ltima pgina, o da desativao do eco.

Agora, depois destes dois comandos, sero abordados comandos mais destrutivos do que estes dois: estes comandos conseguem apagar arquivos e pastas. Peo que se tenha um cuidado especial por estes comandos, pois podem causar grandes estragos dependendo do arquivo que elas atingirem: inclusive, o Windows pode no mais rodar. Apostila de Criao de Badcoms XXVI

Comando PAUSE: Pausando a execuo


Notavelmente e logicamente, quem escreve tenta tornar o badcom o mais discreto possvel, porm, um badcom d um pouco de trabalho, toma algum tempo e exige alguns testes. Para pausar a execuo do badcom podemos utilizar o comando pause, que no tem opes. Isso serve para ver as mensagens que os comandos devolveram, vendo assim, se o comando de teste foi concludo com xito ou no. possvel tambm usar o pause para parar a execuo do badcom antes de um comando nocivo, permitindo assim, o fechamento da janela. O pause utilizado quando se quer pausar a execuo.

Comando EXIT: Concluindo a execuo


Supondo que eu queira saber se determinado arquivo existe. Se ele existir, o badcom continuar com a execuo normalmente, mas se no existir, ir para a execuo. Podemos fazer isso utilizando o comando exit, que tem algumas opes:

Estas opes no so usadas, portanto, no haver explicao delas.

Dr. Elek_Meag

XXVII

Comando CLS: Limpando a tela


Pois bem, estamos quase acabando estes comandos iniciais que so teis para organizao e teste de badcoms. Em um teste de um badcom muito extenso, a tela pode ficar muito cheia e podemos utilizar o comando cls para limp-la, isto , apagar o seu contedo e mostrar um novo prompt. Este comando no oferece opes.

Acabamos, agora, estes comandos iniciais. Agora vem o grosso: comandos que apagam, renomeiam, movem e copiam pastas e arquivos. Peo cautela nesta parte, pois todos estes comandos, se mal utilizados ou utilizados maliciosamente. Eles so simples e poderosos, mesmo alguns oferecendo vrias opes, o que os torna ainda mais perigosos. Permita-me explicar melhor. Um badcom pequeno abre uma janela que no dura nem um segundo na tela; isto significa que mesmo que o comando nocivo esteja s no final do arquivo, no dar tempo de fech-la. Se o arquivo que foi excludo ou teve o nome modificado era importante e o computador for reiniciado, possvel que o Windows nem inicie mais. Por isso tome cuidado, e tome cuidado. Os avisos que dou so importantes e se forem ignorados podem levar a danos irreversveis nas informaes no computador guardadas e nos neurnios, causando uma forte dor de cabea...

Apostila de Criao de Badcoms

XXVIII

arquivos Comando DEL: Apagando arquivos


Como vocs bem sabem, alguns arquivos so inteis e preciso apaglos para que no ocupem espao no disco rgido indevidamente. Porm, quem diferencia o arquivo til do intil o usurio: o computador apaga os dois tipos sem distino. O comando del, que vem de delete, nos permite apagar ou deletar arquivos, mesmo os teis; o del tem um sinnimo, um comando que executa exatamente as mesmas coisas e tem as mesmas funes, o erase. Podemos usar tanto um quanto outro quando o objetivo apagar arquivos. O del, porm, no como os anteriores: ele tem opes que podem ser utilizadas. Aqui est a janela de opes do del:

O leitor se lembra daquele papo de que os nomes de arquivos no tinham espaos no antigo MS-DOS? Pois bem, ignore, pois quando voc tiver uma pasta ou arquivo que tem espaos no nome, coloque todo o endereo do arquivo entre aspas, assim, ocorre a excluso, por exemplo: del C:\a r q u i v o.txt Dr. Elek_Meag XXIX

As opes que o del / erase suportam so: /P pede confirmao para apagar para todos os arquivos; /F faz a excluso de arquivos somente leitura; /S apaga os arquivos das subpastas do caminho especificado; /Q no pede confirmao no apagamento; /A[:][R][H][S][A] s apaga os arquivos que tenham os atributos escolhidos, que podem ser: R arquivos somente leitura; H arquivos ocultos; S arquivos do sistema; A arquivos para arquivamento.

Geralmente, um badcom tenta causar danos discretamente, sem chamar muito a ateno do usurio, por isso, no aconselhvel o uso da opo /P em badcoms. Pode se usar del /F /S /Q arquivo, assim, ocorre a excluso mesmo se o arquivo for somente leitura, se for uma pasta, apaga todo o contedo da pasta e o mais importante, no pede confirmao para apagamento. Resumidamente, perfeito. Lembro-lhes que este comando s apaga arquivos: para apagar pastas, voc usa outro comando. Se for informada uma pasta e utilizado a opo /S, apenas o contedo dela ser perdido. Este comando no como o excluir da interface grfica; no h lixeira e se um arquivo apagado, perdido, a no ser que se use um recuperador de arquivos excludos, embora ele possa no recuperar o arquivo, ou recuperar um arquivo corrompido. Com ele tambm pode ser usado o caractere curinga *, o asterisco, para excluir vrios arquivos com a mesma extenso ou vrios arquivos de mesmo nome com extenses diferentes. Novamente, recomendo que este comando seja utilizado com bastante cautela para no causar dor de cabea a quem est escrevendo seu badcom. Apostila de Criao de Badcoms XXX

Comando RD: Excluindo pastas


Normalmente, excluir um arquivo j o bastante em um badcom e dependendo do arquivo, o Windows pode no mais ser inicializado. Porm, quando do desejo uma abrangncia de danos maior, embora no

recomendada, possvel apagar uma pasta. Apagar pastas se torna possvel atravs do comando rd, abreviao de remove directory, remover diretrio, j que pasta apenas um apelido, visto o cone de um diretrio em ambiente Windows. Esse comando, assim como o del, exige bastante cautela! Eis as opes do rd:

O rd mais simples que o del, pois tem menos opes: /S Apaga os arquivos que esto dentro da pasta. Se a pasta tiver arquivos e no for usada esta opo, a excluso no ser feita; /Q No pede nenhuma confirmao para apagar a pasta. Obviamente, quando ambas as opes esto unidas, elas tm grande poder destrutivo e no chamam ateno do usurio. Podem ser excludas pastas como a Windows, que comporta o S.O. O sinnimo de rd rmdir. Pois bem, chegamos ao fim das excluses, vamos agora aos comandos de movimentao e de cpia. Dr. Elek_Meag XXXI

Comando MOVE: Movendo arquivos


Em ambiente Windows com interface grfica, usamos o comando recortar, que aparece em um menu quando clicamos com o boto auxiliar no arquivo. Depois, ns colamos o arquivo em outra pasta. Essa operao nada mais do que mover o arquivo. No prompt, o comando que nos permite mover arquivo o move, um nome bastante intuitivo:

As opes do comando move so: /Y No pede confirmao para substituir arquivos se o arquivo de destino especificado j existir. /-Y Faz o oposto de /Y: pede confirmao para substituir arquivos se o arquivo de destino especificado j existir.

Apostila de Criao de Badcoms

XXXII

Comando COPY: Copiando arquivos


No Windows, para copiar arquivos, isto , duplic-los, necessrio executar o comando copiar e depois o comando colar, no lugar desejado, que aparecem no menu que se abre quando se clica com o boto auxiliar sobre o arquivo. No prompt, porm, a tarefa deixa de ser trabalhosa, usando-se do comando copy, que tambm serve para fundir arquivos:

O copy tem as seguintes opes: /A O arquivo referenciado se trata de ASCII; /B O arquivo referenciado binrio; /D D permisso para criar arquivos copiados sem criptografia; /V Verifica a cpia para ver se foi feita corretamente; /N D o nome ao arquivo no formato 8.3; /Y No pede confirmao para substituir arquivos, /-Y faz o oposto; /Z Copia arquivos de rede em modo reinicivel.

Dr. Elek_Meag

XXXIII

Comando REN: Renomeando arquivos


Renomear significa dar um novo nome, ou seja, nomear novamente e o comando que faz isso, no prompt de comando, se chama ren:

O sinnimo do ren, como j deve ter percebido, o rename. Este comando no possui opes, mas nem por isso to seguro assim: se um arquivo importante para o sistema operacional for renomeado, ele deixa de ser reconhecido e o Windows apresentar problemas.

Finalizamos, agora, a parte dos comandos bsicos mais perigosos. Agora, restaram apenas dois comandos daquela lista: o md e o cd, que so seguros e sero abordados.

Apostila de Criao de Badcoms

XXXIV

Comando MD: Criando pastas


Quando estamos em um ambiente grfico Windows, para criar uma pasta, necessrio, no local desejado, clicar com o boto auxiliar; um menu dali se desdobra e quando passamos o mouse por Novo, abre-se um outro menu, e ali, clicamos em Pasta. No prompt de comando, o md resolve o problema. Md vem de make directory, isto , fazer diretrio e um sinnimo o mkdir. No tem opes.

Como pode ser visto na imagem, para criar uma pasta, basta usar a sintaxe md [unidade:]pasta, lembrando que possvel criar uma pasta dentro de uma outra pasta que est para ser criada, obedecendo sempre a sintaxe de md [unidade:]pasta\pasta. Novamente, se necessrio dar um nome com espaos pasta, usa-se aspas.

Dr. Elek_Meag

XXXV

Comando CD: Mudando a pasta aberta


Acho que esta a nica tarefa que menos trabalhosa em ambiente grfico do que em prompt, afinal, basta dar um clique duplo para que a pasta se abra. No prompt, isso pode ser feito atravs do comando cd, que vem de change directory e cujo comando de mesma funo chdir. Se trata de um comando simples, sem opes que so freqentemente utilizadas. Uma tela com as opes do cd:

Nota-se que ele tanto serve para mudar a pasta atual como para exibi-la, se for executado sem complementos que definam a pasta de destino. Tambm, para pastas que tenham espao(s) no nome, usam-se as aspas.

Aqui finalizamos os comandos da lista, mas ainda h mais por estudar. Apostila de Criao de Badcoms XXXVI

Recorte
Retirado da Revista UnderHack #2, de Outubro de 2008, pgina 19:

Segurana para Badcoms


Como eu j disse, badcoms podem ser extremamente perigosos, portanto, valem algumas regras para quando estiver escrevendo um: 1. Salve inicialmente o badcom para um arquivo .txt, que no perigoso; 2. Use, antes de cada comando potencialmente danoso o comando pause para pedir confirmao de continuidade; 3. No use opes de remoo de confirmao, que em alguns comandos apresentado com o nome de prompt; 4. Quando for escrever o badcom, deixe a parte destrutiva para o final, faa primeiro o fluxo; Se forem tomadas essas quatro atitudes, criar badcoms no vai causar nenhum problema. Caso deseje uma segurana adicional, use mquinas virtuais, programas que simulam um S.O. dentro de uma janela. Assim, se algo der errado, somente o S.O. virtual danificado. Entre os principais programas de mquina virtual esto o VMware e o Virtual PC.

Dr. Elek_Meag

XXXVII

Recapitulando
Eis um pequeno resumo dos comandos abordados at agora: echo Exibe uma frase e pode ser usado para ocultar os comandos; prompt Modifica o prompt; rem Demarca um comentrio; pause Pausa a execuo do badcom; exit Interrompe a execuo do badcom; cls Limpa a tela; del Apaga um ou mais arquivos; rd Apaga uma pasta; move Move um arquivo para outro lugar e pode ser usado para renomear pasta; copy Copia um arquivo; ren Renomeia um arquivo; md Cria uma pasta; cd Modifica a pasta aberta.

Leia novamente a explicao dos comandos que no foram bem compreendidos, saber esses comandos o bsico para fazer badcoms, sem uma base no se constri um prdio, ou se constri um prdio que desaba com a primeira brisa.

Apostila de Criao de Badcoms

XXXVIII

Dr. Elek_Meag

XXXIX

Apostila de Criao de Badcoms

XL

Mdulo II

C
comandos de

reio que at agora nada de espalhafatoso ou esdrxulo seja abordado, portanto, porque no continuar?! O mdulo I foi apenas uma introduo bsica escrita dos badcoms, para se

escrever um bom badcom preciso conhecer mais comandos. por isso que existe o nvel II. Sinceramente, saber s aquele tiquinho quase que no d para fazer um badcom, e tentar s vai lev-lo concluso de que necessita de mais conhecimento nessa rea. Esse um meio da publicao muito importante, pois aqui esto os fluxo, o redirecionamento de I/O, alguns comandos

importantssimos e tambm, um pouco sobre compilao de badcoms. Manipulao de tempo e tarefas, criao de arquivos e uma explorao do registro para modificao de configuraes. Digamos que aqui est uma complementao e uma adio de malvadeza ao conhecimento... Para a maioria dos usurios que querem criar seus badcoms, o fim do interesse est na concluso deste nvel de contedo. Retornando ao assunto, existe ainda um comando especial que

transforma o badcom em um vrus, no nada do tipo virii badcom.bat, mas pode ser til, transformando essa apostila praticamente em uma odissia sobre criao de badcoms e de VRUS. Mas chega de conversa e vamos direto ao assunto. Alis, qual ele?!

Dr. Elek_Meag

XLI

O Assunto
Os comandos abordados no mdulo II so: at attrib call comp date find for format goto if label set subst time type

Alm disso, h os seguintes assuntos: Redirecionamento de I/O; Explorao do registro; Transformando badcoms em vrus; Compilao de badcoms.

Como vemos, h bastante trabalho pela frente, vamos, ento, comear com os comandos.

Apostila de Criao de Badcoms

XLII

Os Comandos
Nesse mdulo, h mais comandos do que no primeiro: a questo que os comandos desse mdulo permitem fazer coisas mais espertinhas deixando o badcom mais temperado. Pois bem, comecemos a explicao. Algumas imagens das opes dos comandos no podero ser postas na integridade: a ajuda do comando to grande assim. Porm como sempre no h muitas opes, o tamanho se deve a explicaes.

Comando FORMAT: Formatando uma unidade Formatando


Quando o objetivo de fato apagar todos os arquivos e pastas de uma unidade, uma alternativa poderosa o comando format, mas ele tem um porm, ele sempre, sem exceo, pede confirmao, a desvantagem do format. Felizmente, h um meio de contornar o problema que ser abordado posteriormente. Eis as opes do format:

Note que no esto ali todas as opes do comando. aconselhvel que o leitor cheque-as usando o help. Dr. Elek_Meag XLIII

As opes do format so as seguintes: /FS:sistema_de_arquivos Especifica o sistema de arquivos da formatao, podem ser utilizados FAT, FAT32 ou NTFS; /V:nome D um nome unidade; /Q Executa formatao rpida; /C Para NTFS: os arquivos sero compactados automaticamente; /X Fora a desmontagem do volume; /A:tamanho Especifica tamanho de alocao de dados; /F:tamanho Especifica tamanho do disquete; /T:trilhas Especifica o nmero de trilhas por lado de disco; /N:setores Especifica o nmero de setores por trilha.

A sintaxe : format volume [opes] Sobre a formatao rpida. A formatao normal primeiramente limpa o HD dos arquivos antigos e depois disponibiliza o espao na tabela de endereos de arquivos. J a formatao rpida apenas disponibiliza o espao na tabela. Sendo assim, os arquivos continuam l. Para uma maior garantia de que os arquivos no podero ser recuperados, deve ser executada a formatao normal. Para apagar

definitivamente, preciso vrias formataes. Digo isso porque existem programas especializados em recuperao de dados, softwares esses muitas vezes eficientes, conseguindo o usurio (avanado) recuperar os dados. Normalmente, no necessrio utilizar as opes /A, /F, /T e /N, pois o comando j detecta automaticamente estes dados para uma formatao correta. Para utilizar a opo /FS preciso saber um pouco sobre os sistemas de arquivos utilizados na famlia Windows. O mais antigo que pode ser usado o FAT e o mais recente o NTFS. A partir do NT, o padro o NTFS. Apostila de Criao de Badcoms XLIV

Comando LABEL: Nomeando Unidades


No necessrio formatar toda a unidade e fazer uma cpia de todos os dados para dar um nome a ela. No prompt de comando podemos utilizar o comando label para isso. Eis as opes do comando:

Como podem ver, a nica opo deste comando a /MP, que normalmente no utilizada. Para nomear um unidade, basta seguir a seguinte sintaxe: label [unidade:][rtulo] Supondo que eu tenha executado label C:NOME, a unidade ter a seguinte aparncia em Meu Computador:

um comando meio intil quando se est escrevendo um badcom, mas serve para fazer algumas brincadeirinhas com o nome das unidades, como usar palavras chulas ou bobagens como nome de unidade.

Dr. Elek_Meag

XLV

Comando SUBST: Associando pastas a unidades


Provavelmente o leitor j teve vontade de ter um acesso mais rpido a determinadas pastas, sem o uso de atalhos. Na verdade, o objetivo era transformar essa pasta em uma unidade, para que aparecesse em Meu Computador. para essa tarefa que existe o comando subst. As opes de subst:

Como visvel, a nica opo /D, que serve para apagar uma unidade virtual, isto , desfazer esse vnculo entre unidade/pasta. Esse comando tem a seguinte sintaxe: subst [unidade1: [unidade2:]caminho] Sendo que unidade1 a unidade a que ser atribuda a unidade2, e o caminho, se houver. Por exemplo, para vincular a pasta C:\Windows unidade Z:, usa-se subst Z: C:\Windows. O nome da unidade virtual o mesmo que o da real a que foi vinculada, assim sendo, o label no consegue modific-lo. Outra limitao que no possvel vincular uma pasta outra unidade j existente. possvel formatar essas unidades virtuais. Apostila de Criao de Badcoms XLVI

Modificando Comando TIME: Modificando a hora


evidente que todos os usurios, inclusive os novatos, conhecem o relgio do Windows: ele faz basicamente o que relgio de parede faz, marca as horas. :P Acontece que essas horas podem ser mudadas, ou ento, exibidas, atravs do comando time, tempo em ingls, um nome bem sugestivo... A tela... :

Notavelmente, o comando tem apenas uma funo, /T, que seve para apenas mostrar a hora, j que originalmente time serve para modificar a hora. A hora nova, que o sistema assumir depois da execuo do comando, deve obedecer ao padro horas:minutos, com o dois pontos servindo como diviso. No permitido o uso de 24:00, o correto utilizar 00:00, para indicar a meia-noite. Esse comando praticamente intil, mas pode ser usado para fazer uma brincadeirinha de mau gosto com o usurio, a de modificar a hora para que ele se atrase no trabalho, ou algo assim...

Dr. Elek_Meag

XLVII

Comando DATE: Modificando a data


O relgio do Windows, alm de marcar as horas, tambm tem um calendrio. Para ver a data atual, basta deixar o cursor em cima do calendrio.

Se quisermos fazer uma brincadeirinha, de mudar a data, possvel fazela atravs do comando date, data em ingls, outro comando bem sugestivo. A tela de opes do date:

Como pode-se notar, a nica opo, assim como no comando time, a /T que serve para apenas exibir a data atual. A nova data, se o comando for utilizada para modific-la, deve obedecer ao padro dd/mm/aaaa, isto , dois caracteres, primeiro, para o dia, uma barra, dois caracteres para o ms, segundo, um barra e por ltimo, quatro caracteres para ano, como em 11/12/2008. Datas invlidas so automaticamente recusadas, portanto, no adianta tentar mudar a data para trinta de fevereiro, nem para dia trinta e um de meses que tm apenas trinta dias. Apostila de Criao de Badcoms XLVIII

Comando AT: Agendando tarefas


Voc j pensou em executar automaticamente alguma tarefa em seu computador na quinta-feira, por exemplo? No seria interessante agendar o apagamento de um arquivo apenas um ms depois da execuo do badcom, para eliminar suspeitas? Agendar tarefas possvel atravs do comando at. O at um comando com algumas opes:

Estas opes, obviamente, servem para especificar melhor como e quando a tarefa desejada deve ser executada. Esta agenda de tarefas fica guardada e visvel ao usurio se for aberta atravs do Painel de Controle, em Tarefas agendadas, uma fraqueza, mas como a maioria dos usurios no checa, pode por f. Infelizmente, no to completo como na interface grfica, que permite executar comandos ao iniciar do computador, entre outras coisas, mas pode ser utilizado.

Dr. Elek_Meag

XLIX

As opes do at so: \\computador Especifica em que computador executar a tarefa. Se o computador em que o badcom for executado estiver em rede, este comando permite agendar tarefas em outros computadores da rede; id Especifica o nmero de identificao da tarefa; /DELETE Apaga alguma tarefa; /YES Usado com o comando para cancelar todos os trabalhos quando nenhuma confirmao adicional for necessria; /INTERACTIVE Permite que o usurio consiga interagir com a tarefa. Por exemplo, que ele consiga usar um programa que executado; /EVERY:data[,...] Especifica a freqncia de execuo. Pode conter uma data ou mais; /NEXT:data[,...] Especifica a prxima execuo da tarefa.

Estas opes j so suficientes para eliminar qualquer suspeita sobre qualquer execuo de badcom...

Apostila de Criao de Badcoms

Comando ATTRIB: Modificando atributos de arquivos


Chegamos manipulao de arquivos. Isso muito importante, pois permite fazer muitas pegadinhas. Para quem no est familiarizado, ainda, com o Windows, os arquivos podem assumir atributos especiais. um modo de classific-los e orden-los. Os arquivos podem ser classificados como: Arquivos de somente leitura; Arquivos de leitura-gravao; Arquivos de sistema; Arquivos ocultos. Os arquivos com o atributo de somente leitura permitem apenas a abertura e no permitem que haja modificao. Os arquivos com o atributo de leitura-gravao permitem a abertura e a modificao. Os arquivos de sistema so os arquivos importantes que pertencem ao Windows e normalmente no so visveis. Os arquivos ocultos, obviamente, so ocultos ao usurio. A utilidade de attrib a de que ele pode tornar todos os arquivos de uma pasta importante, como a Meu Documentos, que onde esto documentos e planilhas como somente leitura, impossibilitando a modificao. Permite tambm ocultar todos os arquivos do HD. Se for do seu desejo ver os arquivos ocultos, faa o seguinte: Abra o Meu Computador, v no menu Ferramentas e clique no boto Opes de pasta..., l, clique na guia Modos de exibio e desa a barra de rolagem de Configuraes avanadas at embaixo, l ir aparecer a opo, em Pastas e arquivos ocultos, Mostrar pastas e arquivos ocultos:

Isso tornar os arquivos ocultos visveis, que tero o cone com uma aparncia semi-transparente, ao contrrio dos outros arquivos, que tm aparncia slida. Estas so as opes do comando attrib: Dr. Elek_Meag LI

/S Aplica os atributos pasta e aos arquivos e subpastas; /D Aplica os atributos tambm a pastas.

Para ativar, usa-se + e para desativar - antes da letra relacionada ao atributo, que podem ser: R para atributo de somente leitura; A para atributo de leitura-gravao; S para atributo de arquivo de sistema; H para atributo de arquivo oculto. possvel tambm que se defina mais de um atributo de uma vez, exceto, se a combinao de letras resultante tiver R e A, pois os dois atributos so opostos, de resto, no h restries.

Apostila de Criao de Badcoms

LII

Comparando Comando COMP: Comparando arquivos


No muito til, exceto quando se est a escrever vrus, mas de qualquer modo, ser estudado. O comp serve para comparar arquivos, descobrir se dois ou mais arquivos so iguais e se no so, descobrir suas diferenas. Eis uma janela com suas opes:

As opes so: /D Mostra as diferenas em formato decimal; /A Mostra as diferenas em ASCII; /L Mostra nmeros de linha para cada diferena; /N=nmero Compara somente o nmero de linhas especificado, no incio do arquivo; /OFF[LINE] No ignora arquivos off-line.

No um comando que seja muito utilizado, nem em badcoms, nem para outros propsitos.

Dr. Elek_Meag

LIII

Comando FIND: Encontrando texto


Normalmente, quando estamos em uma pgina e queremos localizar algum termo, usamos a pesquisa do navegador, as teclas de atalho geralmente so Ctrl+F ou F3. Podemos usar esse recurso tambm no prompt de comando, atravs do comando find, encontrar em ingls. Este comando nos permite, quando estamos fazendo vrus, encontrar assinaturas de infeco, isto , saber se determinado arquivo j est infectado. Fora isso, no muito til. A janela de opes do find esta:

O comando tem algumas opes: /V Mostra as linhas que no contm o texto desejado; /C Mostra as linhas que tm o texto desejado; /N Mostra nmeros de linha; /I Ignora diferena entre maisculas e minsculas; /OFF[LINE] No ignora arquivos off-line.

um comando simples... LIV

Apostila de Criao de Badcoms

Comando TYPE: Mostrando o contedo de arquivos


Este comando bem simples e no tem opes: ele serve apenas para mostrar o contedo de arquivos. A janela de ajuda dele esta:

A sua sintaxe algo pauprrimo: type [unidade:][caminho]arquivo Mesmo assim, ele pode servir para encher o HD, se utilizado

maliciosamente, coisa j abordada na Revista UnderHack #2. Isso feito atravs de um loop infinito, o type, e redirecionamento de I/O. Tambm pode ser til para ver o contedo de um arquivo, quando no h vontade de usar o bloco de notas...

Dr. Elek_Meag

LV

Comando CALL: Executando um outro arquivo de lotes


Suponha que eu queira fazer um badcom, mas que tenha uma estrutura grande, que tenha vrios arquivos que so executados em Batch e em determinado momento, eu queira, chamar outro arquivo em lotes. Para esse tipo de tarefa, o comando call utilizado. Eis uma janela reduzida sobre o comando, j que a ajuda dele extensa:

Esse um comando sem opes, porm, bastante elaborado pelo fato de que permite enviar parmetros de execuo ao arquivo de lotes de destino. Tambm permite chamar rtulos, coisa que ser abordada mais adiante. A sintaxe do comando : call [unidade:][caminho]arquivo [parmetros] bvio que preciso, sempre ao fim do rtulo, um exit para retornar execuo inicial, e no final dos rtulos tambm. possvel tambm executar programas com interface grfica a partir desse comando. Normalmente, pouco usado, mas um badcom grande (e poderoso, geralmente) utiliza-o. Apostila de Criao de Badcoms LVI

Comando GOTO: Pulo incondicional


Toda linguagem de programao tem seus comandos de manipulao de fluxo, condicional e incondicional, isto , que preenche a um requisito ou que no preenche, mudando o fluxo sempre. Em linguagem de prompt de comando, no poderia ser diferente, o comando de pulo incondicional goto.

Como percebe, o comando goto pula para um rtulo. Um rtulo uma palavra ou conjunto de caracteres que nomeia determinada parte do cdigo. uma referncia para o pulo do goto, afinal, ningum pula de uma cadeira se no souber onde vai cair. Um rtulo sempre indicado com dois pontos que o precedem, como em :rotulo. O goto um comando sem opes, por isso, muito simples. Em alguns casos, quando se quer usar parmetros geralmente, o goto substitudo pelo call. Sua sintaxe tambm muito simples: goto rotulo Sendo que em goto no se pe dois pontos antes do rtulo, como no exemplo. Para executar um loop infinito, cria-se um rtulo (, executa algum comando) e cria-se um goto para o rtulo logo a cima, repetindo o loop at a janela ser fechada, ou ser teclado Ctrl+C. LVII

Dr. Elek_Meag

Comando IF: Pulo condicional


Ao contrrio do goto, o if um comando de pulo condicional, comum a todas as linguagens de programao, inclusive as direcionadas web. Ele permite modificar o fluxo se determinado requisito preenchido; se o requisito no preenchido, nada acontece. Aqui est uma janela sobre o if:

um comando importante, pois permite que o badcom saiba vrias coisas. Tem vrios operadores, por isso, um comando muito complexo e requer um estudo profundo, coisa que no possvel de ser feita em uma apostila sucinta. No existe uma s sintaxe, visto que h vrios operadores e tambm vrias partculas de negao, de existncia de arquivos, de checagem de retorno de comandos e programas... possvel, atravs desse comando em conjunto com o comando set, montar um jogo, um quiz que apaga algum arquivo se o usurio erra a questo. simplesmente indescritvel, pelo menos para esta apostila. Novamente, um estudo profundo recomendado, para total utilizao dos recursos que o if fornece. Apostila de Criao de Badcoms LVIII

Comando SET: Variveis em prompt de comando


Este comando muito importante e pode ser muito utilizado, tanto em badcoms como em vrus. Ele serve para criar e excluir variveis, alm de mostrar as que j esto ativas.

Apesar da simplicidade, muito til. A utilidade das variveis extensa, pois pode guardar vrias coisas. Mas o principal uso (que dou) o de guardar endereos virtuais de arquivos. Assim, no necessrio digitar todo o endereo a cada vez que quiser se referir a determinado arquivo. tambm, um comando com um help bem grande, e sua leitura aconselhada. A sintaxe para definir uma varivel atravs do set : set [varivel=[caracteres]] Para utilizar variveis, coloca-se o nome delas entre sinais de

porcentagem, como em %VAR%. Quando o SET executado sozinho, sem definio de variveis, ele exibe as que j esto ativas. O Windows j d algumas variveis prontas que se referem a pastas e unidades chave do sistema, algo muito bom para quem escreve badcoms.

Dr. Elek_Meag

LIX

Estas so as principais*: Pasta onde ficam guardados os dados dos usurios do ALLUSERSDATA computador. Geralmente fica em C:\Documents and Settings\All Users . COMPUTERNAME Nome do computador. Depende do usurio na hora da instalao do Windows. Pasta onde ficam os dados dos programas instalados. Geralmente fica em C:\Arquivos de programas . Unidade onde est instalado o Windows. Geralmente fica em C: Pasta onde est instalado o Windows Geralmente fica em C:\Windows Pasta onde ficam guardados todos os dados do usurio que est atualmente logado.

ProgramFiles

SystemDrive

SystemRoot

USERPROFILE

H ainda algumas variveis que podem ser teis. Quando se quer fazer algo que recebe um valor aleatrio, h a RANDOM, em uso, %RANDOM%. Cada vez que ela referenciada, tem um valor numrico diferente. muito til quando se quer renomear arquivos em massa ou quando se quer modificar a senha do usurio. H tambm as %TIME% e %DATE%, ilustradas j em uso, que do o valor da hora e da data, respectivamente, no mesmo formato dos comandos time e date. Por ltimo, entre outras dessas variveis padronizadas, h a %CD%: a pasta que est atualmente aberta. Se quiser saber integralmente as possibilidades que o comando SET d, execute help set, embora esse texto seja bastante esclarecedor.

A tabela foi retirada da Revista UnderHack #2 e foi aumentada.

Apostila de Criao de Badcoms

LX

Comando FOR: Executando comandos em arquivos


Esse comando, ento, nem se fala. De cara, j recomendo que seja feito um estudo profundo e aviso que este comando no ser totalmente abordado nesta apostila, at pelo fato de que isso praticamente impossvel. O for serve para deixar o programa mais compacto, sua funcionalidade a de executar o comando especificado para cada arquivo especificado. Uma tela das suas opes:

A janela no est completa, por isso, help for. Comecemos a explicao; %varivel se trata da varivel, obviamente, que vai guardar temporariamente o nome do arquivo, presumo eu. Para badcoms, devemos usar %%varivel, invs de %varivel. conjunto o arquivo ou arquivos que sero modificados, podem ser utilizados curingas. comando, obviamente, o comando a que os arquivos inclusos em conjunto sero submetidos. E parmetros so as opes do comando. Supondo que eu queira apagar os arquivos notepad.exe e calc.exe, isto , o bloco de notas e a calculador, eu executaria o for no seguinte formato: for %f in (notepad.exe, calc.exe) do del %f /F /Q Lembre que para arquivos de lotes, dobra-se o sinal de porcentagem.

Dr. Elek_Meag

LXI

Redirecionamento de I/O
I/O uma abreviao de Input/Output, em ingls, entrada/sada. Assim sendo, redirecionamento de I/O tambm pode ser chamado de redirecionamento de E/S... Imagine uma tubulao, que tem um cano central, por onde, por padro a gua entra e sai, e tem mais outras duas sadas e duas entradas, que so normalmente vedadas, por ali no passa gua. Podemos se quisermos redirecionar a entrada, fazendo a gua entrar por dos dois outros canos de entrada. Tambm podemos fazer a gua sair por um cano diferente. nisso que se baseia o redirecionamento de I/O, mudar o curso padro das informaes fazendo-as entrar por um lugar diferente, ou sair por outro gargalo no-padronizado. Esse recurso nos permite, por exemplo, fazer com que, por exemplo, um arquivo seja fundido a outro, atravs do comando type, que exibe o contedo do primeiro arquivo. Isso inutilizaria os dois... O redirecionamento de I/O funciona a partir de quatro operadores, so eles <, >, << e >>. O destino da informao depende da direo para qual a seta aponta: quando a seta aponta para a direita, segue a lgica de transferncia origem > destino, quando a seta aponta esquerda, a lgica destino < origem.

Se fosse executado o comando echo Hello World! > arquivo.txt, o arquivo arquivo.txt seria criado, se no existisse, todo seu contedo seria apagado (se existisse) e no lugar, seria posto Hello World!. J, se fosse executado o comando echo Hello World! >> arquivo.txt, com o operador duplo, o arquivo arquivo.txt seria criado se no existisse, e seria adicionado ao final do arquivo Hello World!. Perceberam a diferena? Um substitui, o outro inclui.
O leitor se lembra do comando format, em que no era possvel formatar sem pedir confirmao? Seus problemas acabaram!, possvel contornar esse bug a partir do redirecionamento de I/O. Para isso, preciso ter um arquivo com as respostas s confirmaes e envi-las ao format, como em format C: < file.txt. Apostila de Criao de Badcoms LXII

Explorando o Registro
O registro uma rea na famlia Windows que serve para guardar as informaes dos programas instalados e das configuraes estabelecidas. Portanto, ele muito importante. Atravs da modificao de valores do registro, possvel fazer diversas peripcias: trocar os botes do mouse, mudar o papel de parede, fazer o teclado ficar acelerado ou devagar, enfim, muitas coisas engraadas podem ser feitas atravs do registro. Para editar o registro atravs da interface grfica, utilizamos um programa que pode ser aberto se digitarmos regedit em Executar..., mas em prompt de comando, um programa (veja bem, no um comando) d conta dessa tarefa, o reg. Esta a sua ajuda:

Dr. Elek_Meag

LXIII

Existem cinco abreviaturas das chaves principais, so elas: HKLM para HKEY_LOCAL_MACHINE; HKCU para HKEY_CURRENT_USER; HKCR para HKEY_CLASSES_ROOT; HKU para HKEY_USERS; HKCC para HKEY_CURRENT_CONFIG.

Note que, ao contrrio dos comandos, o reg usa palavras ao invs de opes, e so essas palavras que tm opes. Estas palavras so: QUERY Retorna o valor da chave especificada:

As opes de reg query so: /v VALOR Retorna o valor especificado (VALOR o nome da chave, caso no seja informado, todos os valores da chave so exibidos); /ve Retorna o valor padro, ou valor sem nome; /s Retorna todas as sub-chaves e valores. Apostila de Criao de Badcoms LXIV

ADD Cria valor na chave especificada:

/v Nome do valor a ser criado; /ve Adicionar valor sem nome; /t Tipo de dado (ver figura), por padro REG_SZ; /s Caractere de separador para valores REG_MULTI_SZ, \0 o padro; /d Dados a serem atribudos ao valor; /f Forar substituio sem confirmao. LXV

Dr. Elek_Meag

DELETE Apaga valor na chave especificada:

As opes do comando so: /v VALOR Valor a ser excludo; /ve Excluir valor sem nome; /va Excluir todos os valores da chave; /f Fora a excluso sem confirmao.

Cautela com esse comando, pois como j se sabe, ele apaga valores, e o valor apagado pode ser crucial para o funcionamento do sistema.

Apostila de Criao de Badcoms

LXVI

COPY Copia valor(es):

As opes de reg copy so: /s Copia todas as sub-chaves e valores da chave especificada; /f Fora a cpia sem confirmao.

No chega a ser perigoso, mas pode ser utilizado para carregar o registro com informaes inteis.

Dr. Elek_Meag

LXVII

SAVE (EXPORT) Salva uma chave de registro para arquivo:

No tem opes, pode ser til para fazer backups do registro, assim como para lotar o HD com arquivos com partes do registro como contedo.

LOAD (IMPORT) Carrega um arquivo de registro (criado com SAVE):

No tem opes e no perigoso a no ser se no arquivo for inclusos valores e chaves invlidos ou maliciosos. Apostila de Criao de Badcoms LXVIII

UNLOAD Descarrega uma chave (carregada com LOAD):

No tem opes nem tem perigo.

RESTORE Grava arquivos de registro (criados com SAVE) no registro:

No tem perigos, a no ser em caso de substituio de chave/valor por algo malicioso. No tem opo alguma.

Dr. Elek_Meag

LXIX

COMPARE Compara dois valores/chaves ou mais:

As opes so: /v Define o nome do valor a ser comparado; /ve Compara o valor sem nome; /s Compara todas as sub-chaves e valores; /oa Retorna as diferenas e combinaes; /od Retorna as diferenas; /os Retorna as combinaes; /on No retorna nada. Apostila de Criao de Badcoms LXX

Chaves e valores especiais:


Existem algumas chaves e valores que podem servir para pegadinhas: CHAVE HKEY_CURRENT_USER\Control Panel\Mouse Valor DoubleClickSpeed MouseSensivity MouseSpeed MouseTrails SwapMouseButtons Descrio [900~200] Velocidade do clique duplo [1~20] Sensibilidade do mouse [0/1] Aprimora preciso do ponteiro [0~7] Exibe rastro do mouse [0/1] Troca botes do mouse

CHAVE HKEY_CURRENT_USER\Control Panel\International Valor s1159 s2359 sCountry sCurrency sLanguage Descrio Sinalizador de AM Sinalizador de PM Pas Unidade monetria Sigla da linguagem

CHAVE HKEY_CURRENT_USER\Control Panel\Appearance Valor SelectedStyle Descrio [1~21] Estilo grfico selecionado

A chave guarda a localizao dos programas que devem ser executados no boot; para executar algum programa no boot, basta adicionar um valor e por o endereo do programa como dados do valor: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

Dr. Elek_Meag

LXXI

Vrus
Estamos, aos poucos, chegando ao fim do mdulo, ainda falta abordar o assunto dos vrus e falar sobre a compilao de badcoms. A diferena entre vrus e badcoms , na verdade, muito simples: os vrus se reproduzem, os badcoms no. Um badcom pode ser transformado em vrus muito facilmente, embora esse tipo de vrus no seja muito contagioso, afinal, ele escrito em linguagem de prompt de comando, o que no permite mandar o vrus por e-mail, por exemplo. At h como enviar por e-mail, mas enviar para qual e-mail, j que difcil algum guardar e-mails em formatos que o vrus possa ler? As possibilidades extremamente limitadas de transmisso reduzem a infeco a se copiar para outros arquivos .bat, ou sobrescreve-los com seu cdigo, o que com certeza mais eficiente. A questo que ningum usa mais a extenso .bat. possvel compilar o badcom para .exe, mas no h ganho significativo, o vrus consegue apenas sobrescrever outros programas, muda a extenso, apenas. A verdade que preciso ser muito engenhoso para escrever vrus em prompt de comando. Simplesmente uma tarefa difcil. J isolei um vrus em batch que se copiava para todos os drivers, foi assim que o contrai, atravs de um pen drive. Felizmente, ele no era destrutivo e consegui det-lo. De qualquer modo, ele era muito bem feito. Mas no passa disso. Como deixei vocs curiosos e esse recurso tambm pode ser utilizado para ir corroendo as informaes pouco a pouco, ensinarei como transformar os badcoms em vrus. preciso, antes, saber um pouco mais da natureza dos vrus. Todos os vrus bons, sem exceo, tm uma incubao. Incubao o perodo em que o vrus fica inativo, para conseguir se replicar. Depois da incubao vm os danos. E o comando que transforma vrus em badcoms ... Apostila de Criao de Badcoms LXXII

FOR Transformando badcoms em vrus


At que enfim, este o comando que pode ser utilizado para transformar vrus em badcoms, o nosso for. A funo de for repetir um mesmo comando para vrios arquivos diferentes, ento podemos us-lo para infectar outros arquivos, espalhando o nosso vrus. H uma coisa importante que o leitor tem de saber. Quando estamos fazendo vrus em arquivos de lotes, para nos referir ao arquivo do prprio vrus, usamos %0.bat. Se voc compilar o seu vrus .bat para .exe, necessrio mudar a extenso, no cdigo-fonte, para .exe, seno o vrus no se replicar, no encontrando nenhum arquivo com seu nome, mas com a extenso .bat. Bom, voltemos o assunto. Esse um exemplo de rotina bem bsica de infeco de vrus: ... :INFECTA for %%f in (*.bat) do copy %0.bat %%f ... Porm, esse cdigo tem dois grandes problemas. O primeiro que mesmo um arquivo j estando infectado, o vrus se copiar novamente. O segundo que supondo que eu tenha um arquivo .bat, o vrus se copiar para o final do arquivo, e h chances de que o .bat tenha o comando exit, ou seja, a execuo ser abortada e o vrus nem ser executado. A soluo seria, para o primeiro problema, deixar uma assinatura para que possamos reconhecer depois, com o comando find, e abortar a re-infeco e para o segundo problema, podemos criar um arquivo temporrio, para o qual copiamos nosso badcom, depois, copiamos o cdigo do outro arquivo .bat e substitumos o arquivo temporrio pelo arquivo que queramos infectar. bvio que no conseguiremos resolver o segundo problema se o nosso vrus .bat for compilado para .exe, pois seria necessria uma adaptao e mesmo com ela, o executvel final no rodaria. LXXIII

Dr. Elek_Meag

Voltemos ao assunto principal. Porm, no podemos usar mais de um comando no mesmo for, ento temos que salvar os nomes dos arquivos em outra varivel para podermos utiliz-los com mais calma. Assim, este seria a rotina de infeco melhorada: @ECHO OFF REM [virii]

type %0 > filetmp for %%f in (*.bat) do set file=%%f

find "[virii]" %file% if not errorlevel 1 exit

type %file% >> filetmp echo.>> filetmp del %file% ren filetmp %file%

exit Infelizmente, essa rotina tem, tambm, dois bugs. O primeiro que ele no ir copiar o vrus para todos os arquivos .bat, mas sim apenas para o ltimo que o for achar. O segundo que, quando infectamos um hospedeiro e o vrus quiser se reproduzir, o hospedeiro que foi infectado ir junto. Mas sem problemas. As vezes, tambm funciona utilizar apenas %0, sem a extenso atrs. Eu avisei que fazer vrus em batch era algo escroto e bem bsico, mas enfim... E no se esqueam, se de fato, forem fazer vrus em batch, de que um bom vrus tem um perodo de incubao para que possa se reproduzir. E mais, lembre-se que vrus .bat compilados para .exe podem dar problemas. LXXIV

Apostila de Criao de Badcoms

Compilando Badcoms
Normalmente, em programao compilamos um cdigo-fonte para que ele possa rodar: depois da compilao ele se torna, de fato, um executvel. Embora o processo receba o mesmo nome, a compilao (que tambm pode ser chamado de converso, embora no estejamos convertendo nenhum badcom ao cristianismo) de badcoms no tem nada a ver com a compilao de cdigosfonte. A funo de compilar um badcom ou um arquivo de memria batch qualquer a de que no podemos ver o cdigo. Isso se torna muito til quando o badcom enviado para um usurio intermedirio ou avanado. Na verdade, s saber uns comandinhos do prompt j ajuda a impedir a execuo de um badcom. A questo que com a compilao, no mais possvel ver o cdigo e o usurio ficar no mnimo curioso. Para alguns, a curiosidade uma fraqueza e vrios dos muitos usurios acabariam por executar o badcom e por bater a cabea com a mesa no final da inutilizao dos dados que estavam em seu HD. Depois de compilar seu badcom, ele assumir a aparncia de um executvel: ter extenso .exe e se for especificado na hora da compilao, pode assumir um cone qualquer, bom escolher um cone de vdeo e colocar como nome amadoras... Esse assunto eu j abordei na Revista UnderHack #2, mas no custa nada (copiar e colar) tocar no tema novamente... O programa que utilizaremos para compilar os badcoms chamado de Bat to Exe Converter e atualmente est na verso 1.4.1. sendo que j foi citado anteriormente e o seu download j foi indicado. possvel encontrar o programa em http://www.f2ko.de/downloads/Bat_To_Exe_Converter.zip.

Dr. Elek_Meag

LXXV

Esta uma ilustrao da janela do programa:

Us-lo uma tarefa muito simples! Eis um passo-a-passo: 1. Coloque o endereo virtual do arquivo .bat que deseja compilar no campo Batchfile, podendo usar o boto ...; 2. Passo opcional: coloque o endereo virtual do cone, usando a extenso .ico, que deseja que o arquivo .bat compilado para .exe apresente, em Iconfile, podendo usar o boto ...; 3. Passo opcional: coloque o endereo virtual do arquivo .exe, que ser o destino do arquivo .bat j compilado, em Save as, atravs do boto ...; 4. Passo opcional: preencha as informaes adicionais que ficaro no arquivo compilado, que se tornam disponveis para modificao aps o clique em Additional informations; 5. Passo opcional: mude o modo de compilao de Console application para Ghost application, apesar de que h comentrios de que esta opo no funciona; 6. Por fim, clique no boto Compile, para compilar seu arquivo .bat. Apostila de Criao de Badcoms LXXVI

Recapitulando
Vamos relembrar os comandos: at Agenda tarefas; attrib Modifica atributos de arquivos; call Chama outro arquivo de lotes; comp Compara dois arquivos; date Modifica ou exibe a data; find Encontra um seqncia de caracteres em um arquivo; for Executa um comando em vrios arquivos; format Formata um disco; goto Pula para um rtulo; if Executa comando se requisito for preenchido; label D nome a uma unidade; set Define ou mostra variveis; subst Cria unidade virtual vinculada a uma pasta; time Exibe ou modifica a hora; type Exibe o contedo de um arquivo. Os operadores de redirecionamento de I/O so <, >, << e >>. Use reg para modifica o registro. Seus sub-comandos so: QUERY; ADD; DELETE; COPY; SAVE (EXPORT); RESTORE (IMPORT); LOAD; UNLOAD; COMPARE.

Dr. Elek_Meag

LXXVII

Apostila de Criao de Badcoms

LXXVIII

Dr. Elek_Meag

LXXIX

Concluso
Enfim, acabei essa apostila. Acho que os meus leitores gostaram da leitura: foi presento de natal. Mesmo para quem no cristo... :P Foi bom escrever... ah, vamos falar a verdade! Deu trabalho? Deu! Foi legal? Foi. Claro que foi, afinal, chego aqui ao final da odissia, uma apostila de 83 pginas. Quero dizer, isso j poderia ser praticamente um livro. Essa foi a maior publicao que j escrevi. E tive menos tempo para escrever do que normalmente meu prazo para a revista concede. Para deixar ainda mais apimentado o desafio, comecei um curso de informtica h algum tempo, tomando ainda mais o meu tempo. Foram horas bem aproveitadas aqui. bom saber, ou pelo menos imaginar, que daqui a alguns anos essa apostila ser referncia para quem est engatinhando no hacking, aprendendo sobre vrus e badcoms. Isso se a informtica nas nuvens permitir... bom saber, ou pelo menos imaginar, que os olhinhos de muitos brilharam de alegria quando leram essa apostila. Confesso! Ela deve ter ficado um pouco montona. Mas tambm, como no ser montono com uma porrada de comandos para abordar. Uma coisa o leitor no pode negar: a apostila estava muito bem ilustrada. Aos poucos ns nos vamos despedindo do ano antigo, pois est chegando o natal e o ano novo e mesmo assim eu continuo aqui, firme, escrevendo a apostila que nem um doido, me esforando ao mximo s para cumprir minha promessa: fazer o natal de uma criana feliz... Agradeo de antemo a quem quis ler. Ah, comentem l no Frum Invaders, solta o verbo que a coisa no foi fcil aqui, mas eu consegui dar um sorriso no final da apostila. Feliz Natal. Hou! Hooou! Hoooooou! Dr. Elek_Meag

Apostila de Criao de Badcoms

LXXX

Dr. Elek_Meag

LXXXI

Apostila de Criao de Badcoms

LXXXII