IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - Jednoduchý KeyLogger v C# - Příprava formuláře

Vítejte v mém prvním tutoriálu na www.itnetwork.cz. V tomto tutoriálu se budeme věnovat jednoduchému KeyLoggeru, který vám jistě otevře nové možnosti v programování. Určitě každého z vás někdy napadlo, že by si mohl vytvořit svůj vlastní KeyLogger, ale po nějakém tom googlování vás myšlenka opustila, protože jste nenarazili na nic, kde by to bylo dobře vysvětlené. Sám jsem nedávno strávil několik desítek hodin nad tvorbou KeyLoggeru. Potýkal jsme se s mnohými a často hloupými chybami, které jsem řešil zde na fóru. Forum. Netvrdím, že to byla cesta snadná, ale došel jsem až na nejí konec. Tedy na konec současných požadavků.

Je čas tedy začít.

Tvorba formuláře

Vytvořme tedy nový projekt typu: "Windows Forms Application" a pojmenujte jej třeba "KeyLogger". Vlastnost formuláře FormBorderStyle nastavíme na FixedToolWindow, to kvůli znemožnění změnit velikost okna. A vlastnost MaximizeBox na false, aby nešlo okno maximalizovat. Nadepišme formulář nějakým srozumitelným názvem např. "KeyLogger 1.0 - Vypnut".

Na formulář umístěte 3x timer, 1x checkBox, 2x button, 1x textBox

  1. Timer1 přejmenujte na tCheckKey - tento timer nám bude obstarávat, zda byla stisknutá klávesa. Zároveň tento timer nastavte na Interval na 1, tímto zajístíme snímání každou milisekundu.
  2. Timer2 přejmenujte na tClearField - tento timer nám bude čistit textBox a pokaždé nám uloží jeho obsah do nějaké proměnné pro pozdější využití. Rovnou také nastavíme tento timer na 1000, to znamená, že vykoná kód každou sekundu.
  3. Timer3 přejmenujte na tCheckHide - tento timer se bude starat o skrývání a odkrývání KeyLoggeru. U tohoto timeru nemusíme nastavovat interval, ponecháme jej 100.
  4. CheckBox1 přejmenujeme na chbCheckRules a upravíme jeho text na něco takovéhoto: "Souhlasím, že nebudu tento KeyLogger používat protizákoně. Autor nenese žádnou zodpovědnost za zneužití programu."
  5. Button1 přejmenujte na "btnStart" a nadepište ho třeba "Start". Toto tlačítko zakažte, tedy nastavte jeho vlastnost Enable na false, chceme totiž aby uživatel nejdříve souhlasil s pravidly používání, než bude možné KeyLogger spustit. Nastavete vlastnost Enabled na false
  6. Button2 přejmenujste na "btnStop" a nadepište ho třeba "Stop". Toto tlačítko rovněž také zakažte. Nastavete vlastnost Enabled na false
  7. TextBox1 přejmenujte na "tbLog" a jeho vlastnost ReadOnly nastavte na true

Kód

Nyní přistoupíme k samotnému psaní kódu.

Začněme nečím jednoduchým a to kontrolou, zda je zaháčkován chbCheckRules Co tedy vyžadujeme? Chceme, že pokud je zaháčkovaný tento checkBox, tak se nám povolí tlačítko tbnStart, pakliže jej odháčkujeme, potřebujeme vypnout keylogger a znemožnist zapnutí do doby, dokud nebude znovu zaháčkován tento checkBox. Celou tuto kontrolu budeme provádět v události tohoto checkBoxu zvané "CheckedChanged". Tato událost nám hlídá, zda nastane změna v zaháčkování a je jedno jaká. Tedy buď zaháčkování, nebo odháčkování. Zkrátka změna stavu.

Pokud je tedy checkBox zaháčkovaný, povolíme tlačítko btnStart, jinak vypneme KeyLogger.

private void chbCheckRules_CheckedChanged(object sender, EventArgs e)
{
    if (chbCheckRules.Checked == true) // pokud je zaháčkovaný souhlas s pravidly,
    {
        btnStart.Enabled = true; // povolím tlačítko pro spuštění KeyLoggeru
    }
    else // pokud není
    {
        // pokud je zaháčkovaný souhlas s pravidly užívání, tak
        if (chbCheckRules.Checked == true)
        {
            btnStart.Enabled = true; // povolím tlačítko na spuštění KeyLoggeru
        }
        else
        {
            btnStart.Enabled = false; // jinak ho zakážu
        }
        btnStop.Enabled = false; // vypnu tlačítko pro vypnutí KeyLoggeru
        tCheckKey.Enabled = false; // vypnu timer pro záznam kláves
        tClearField.Enabled = false; // vypnu timer pro vymazávání okna
        tCheckHide.Enabled = false; // vypnu timer umožňující skrývání
        this.Text = "KeyLogger 1.5 - Vypnut"; // nadepíšu okno
    }
}

Vzhledem k tomu, že velmi podobný kód jako je při odháčkování budeme potřebovat i u tlačítka btnStop, tak si vytvoříme metodu a nazveme ji: "KeyLoggerOFF". Tato metoda nebude mít žádné vstupní parametry. Metodu vytvoříme z části předchozího kódu. Tu část, kterou vložíme do metody z kódu smažeme a nahradíme ji voláním metody. Metoda bude vypadat takto:

// Metoda pro vypnutí KeyLoggeru
private void KeyLoggerOFF()
{
    // pokud je zaháčkovaný souhlas s pravidly užívání, tak
    if (chbCheckRules.Checked == true)
    {
        btnStart.Enabled = true; // povolím tlačítko na spuštění KeyLoggeru
    }
    else
    {
        btnStart.Enabled = false; // jinak ho zakážu
    }
    btnStop.Enabled = false; // vypnu tlačítko pro vypnutí KeyLoggeru
    tKey.Enabled = false; // vypnu timer pro záznam kláves
    tClear.Enabled = false; // vypnu timer pro vymazávání okna
    tHide.Enabled = false; // vypnu timer umožňující skrývání
    this.Text = "KeyLogger 1.5 - Vypnut"; // nadepíšu okno
}

Tedy událost "CheckedChanged" bude nyní vypadat takto:

private void chbCheckRules_CheckedChanged(object sender, EventArgs e)
{
    if (chbCheckRules.Checked == true) // pokud je zaháčkovaný souhlas s pravidly,
    {
        btnStart.Enabled = true; // povolím tlačítko pro spuštění KeyLoggeru
    }
    else // pokud není
    {
        KeyLoggerOFF(); // zavoláme metodu pro vypnutí KeyLoggeru
    }
}

Na tlačítku btnStop do události zvané Click vložíme volání naší již vytvořené metody pro vypnutí KeyLoggeru. Takto bude vypadat tato medota:

private void btnStop_Click(object sender, EventArgs e)
{
    KeyLoggerOFF();
}

Stejně jako jsme začali, tak budeme i pokračovat. Trošku všímavý človek si uvědomuje, že velmi podobný kód, který je v metodě KeyLoggerOFF budeme i u tlačítka btnStart. Jen znegovaný.

private void btnStart_Click(object sender, EventArgs e)
{
    this.Text = "KeyLogger 1.5 - Zapnut"; // nadepíšu toto hlavní okno
    btnStop.Enabled = true; // povolím tlačítko pro vypnutí KeyLoggeru
    btnStart.Enabled = false; // zakážu tlačítko pro spuštění KeyLoggeru
    tCheckKey.Enabled = true; // zapnu timer pro snímání kláves
    tCheckHide.Enabled = true; // zapnut timer umožňující skrývání
    tClearField.Enabled = true; // zapnu timer pro mazání okna
}

Příště již začne skutečné programování. Vytvoříme si třídu pro zachytávání kláves.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 660x (60.29 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

Všechny články v sekci
Jednoduchý KeyLogger v C# .NET
Přeskočit článek
(nedoporučujeme)
Jednoduchý KeyLogger v C# - Zachytávání kláves
Článek pro vás napsal Mediel
Avatar
Uživatelské hodnocení:
4 hlasů
Autor se věnuje programování v C#, ThaiBoxu, ženám a posilování :) „Jestliže si vsugerujete neúspěch, pak vás čeká neúspěch. Někdo říká, že je nesmělý, hloupý. Zopakujte si to desetkrát za sebou a vaše nesmělost a hloupost se tím jen prohloubí.“ MUHAMMAD
Aktivity