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
- 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.
- 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.
- 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.
- 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."
- 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
- Button2 přejmenujste na "btnStop" a nadepište ho třeba "Stop". Toto tlačítko rovněž také zakažte. Nastavete vlastnost Enabled na false
- 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#