Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

HOOK çalışan programlar #KAYNAK#

Konu, 'Pascal / Delphi / Delphi.NET' kısmında hmustak tarafından paylaşıldı.

  1. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    Program systemtray'e yerleşiyor. Ve arka planda çalışıyor. Yani HOOK dediğimiz olayı yapıyor. Çok farklı (?!), faydalı amaçlar için kullanılabilir...




    //***************************
    // Unit1.dfm; dosyasının içeriği
    //***************************

    unit Unit1;

    interface

    uses
    SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
    Forms, Dialogs, ExtCtrls, ShellAPI, Menus;

    const WM_MINIMALIZE = WM_USER + 1
    type
    TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    Show1: TMenuItem;
    Hide1: TMenuItem;
    Quit1: TMenuItem;

    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Show1Click(Sender: TObject);
    procedure Hide1Click(Sender: TObject);
    procedure Quit1Click(Sender: TObject);
    private
    FIconData : TNotifyIconData;
    public
    procedure WMMinimalize(var Message : TMessage); message WM_MINIMALIZE;
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.FormCreate(Sender: TObject);
    var i : Integer;
    begin
    with FIconData do
    begin
    cbSize := SizeOf(FIconData);
    Wnd := Self.Handle;
    uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
    hIcon := Application.Icon.Handle;
    uCallbackMessage := WM_MINIMALIZE; szTip := 'Hakan MÜŞTAK';
    end;
    Shell_NotifyIcon(NIM_ADD, @FIconData);
    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    Shell_NotifyIcon(NIM_DELETE, @FIconData);
    end;

    procedure TForm1.WMMinimalize(var Message : TMessage);
    var p : TPoint;
    begin
    case Message.LParam of
    WM_RBUTTONUP: begin
    GetCursorPos(p);
    PopupMenu1.Popup(p.x, p.y);
    end;
    end;
    end;

    procedure TForm1.Show1Click(Sender: TObject);
    begin
    Form1.Visible := TRUE;
    ShowWindow(Application.Handle, SW_HIDE);
    end;

    procedure TForm1.Hide1Click(Sender: TObject);
    begin
    Self.Visible := FALSE;
    end;

    procedure TForm1.Quit1Click(Sender: TObject);
    begin
    Application.Terminate;
    end;

    end.


    //***************************
    // Project1.dpr; dosyasının içeriği
    //***************************

    program Project1;

    uses
    Forms,
    Unit1 in 'Unit1.pas' {Form1};

    {$R *.RES}

    begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.ShowMainForm := FALSE;
    Application.Run;
    end.
     
  2. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    Kodlar sadece HOOK örneğidir. İllegal olabilecek herhangi kod yokdur. Sadece Geri planda çalışması söz konusudur.

    Kolay gelsin...
     
  3. Volkan Uzun

    Volkan Uzun Daimi Üye

    Kayıt:
    14 Kasım 2002
    Mesajlar:
    3,312
    Beğenilen Mesajlar:
    0
    Meslek:
    Software Developer @ DELL
    Şehir:
    Skype
    hook ?

    hook ne demektir ? ve bu kodlarin hook ile alakasini anlamama yardimci olabilirmisiniz ?
    eger windows platformundaki hooklardan bahsediyorsak , bu kodların tam olarak neye hook attigini aciklayabilirmisiniz ?
    bence hooktan ziyade arka planda calisan bir uygulama gibi geldi
    :uff:
     
  4. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    ewet ewet, bende onu kastederek yazdım. Geri planda (bi çeşit spyware) olarak çalışma tekniği. Yanlış yazdıysam açıklama biliyorsam düzeltin lütfen, ama mantığı dediğiniz gibi...
     
  5. Volkan Uzun

    Volkan Uzun Daimi Üye

    Kayıt:
    14 Kasım 2002
    Mesajlar:
    3,312
    Beğenilen Mesajlar:
    0
    Meslek:
    Software Developer @ DELL
    Şehir:
    Skype
    bu bence spy programda pek değil :)
    alt yapisi olabilir, hook hiç değil çünkü hiçbir sistem kaynağına hook atmıyor.
    hookda mantık : bir sistem kaynağına seri veya paralel hook atip engellemek veya monitor etmektir.
    en cok hook atılan kaynaklar, klavye ( bunu genelde klavyede hangi tusa basildigini anlamak icin keylogger programlari kullanır), veya winsock.dll dir. buda port sniff etmek için kullanılır.
    senin yazdigin programda hook yok, sadece arka planda gizli calismak var hiçbirşeyi monitor etmiyor sanırım
     
  6. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    sitede legal olarak bukadar yazabiliyorum, ama

    SetWindowsHookEx(int,HOOKPROC,HINSTANCE,DWORD);

    apisini düzenleyerek, ciddi hook yazılımları yapılabilir. Hatta email at, bende Thread destekSİZ bir örnek kod mevcut, göndereyim. Fikir alışverişinde bulunuruz. Yazdığım bir CacheCapture var. Bazı sistemlerde çalıştıramıyorum. Kodlarınıda gönderebilirim :)

    arrrtı,
    madem iyisin, neden sende eklemiyosun bişiler :) Hadi bekliyoruz...
     
  7. Volkan Uzun

    Volkan Uzun Daimi Üye

    Kayıt:
    14 Kasım 2002
    Mesajlar:
    3,312
    Beğenilen Mesajlar:
    0
    Meslek:
    Software Developer @ DELL
    Şehir:
    Skype
    burada sansüre uğramayacaksa,
    bir zamanlar bir yerlerden cektiğim biraz modify ettiğim, klavyeden basilan tuslari bir dosyaya yazan program, bilincli olarak bırakilmis bazı hatalarsa, gönderiyim.
    kod visual c++ ile yazılmıs. ve her tusa basimi dosyaya yaqziyor ama hata kontrolleri zayıf.
     
  8. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    yok yok, foruma yazmamız kanuni olarakda bizi sorumluluk altına sokar. Bende de bu mantıkla çalışan, hatta üzerinde uğraşılırsa screenshotda alabilen bi kaynak mevcut. İsteyenlere mail ile ulaştırabilirim.Tabi isteyen derken bunu LAME amaçları için kullanmayı düşünen değil, kodunu ve kendini geliştirmeyi düşünen arkadaşlara...

    @sanal_programcı
    Dostum sende bu kriterlerde kodunu paylaş. Hatta başka kodlarla da sitede bulunmanı isterim (şahsen)

    email : hmustak@ceviz.net
     
  9. Volkan Uzun

    Volkan Uzun Daimi Üye

    Kayıt:
    14 Kasım 2002
    Mesajlar:
    3,312
    Beğenilen Mesajlar:
    0
    Meslek:
    Software Developer @ DELL
    Şehir:
    Skype
    ok bende pseudo code ile bir klavye hook u yaziyim. sakincasi olursa sansurlersiniz.
    ----
    oncelikle focus bizim üstümüzde değilkende klavye tuslarini yakalamak istediğimiz için, global bir hook yaratmaliyiz. bunun için bir hook server dll yaratilmasi gerekiyor.
    . bu dll de bir adet callback fonksiyonun olmasi gerekir.
    ara not : callback : windows isletim sisteminin, bir event olustugunda otomatik cağırdığı fonksiyon. yani programinizin parcas oldugu halde biz değil windows cagirir bu fonksiyonu.
    geri dönelim, dlldeki bu callback fonksiyonunun prototipi soyle olmali : LRESULT CALLBACK myCallBack(int nCode, WPARAM wParam, LPARAM lParam ). win32 programlama yapanlara cok yakın gelecek bir fonksiyon :O)
    1- bu callback in icinde, aslinda bize parametreler WM_KEYDOWN gibi gelir. bunu arastirabilirsiniz
    2- fonsiyon icindeki, wParam parametresini kullanarak, tusu alip bir dosyaya yazmaliyiz. return ederkende cok onemli : diger hookların calismasi icin bir api cagirmaliyiz
    3- dll'imizde bir ader, hookumuzu install eden fonksiyon olmali.
    bu fonksiyon sadece SetWindowsHookEx apisini cagirmali
    4- tabii birde hookmuzu uninstall eden fonksiyon olmali :)

    aslinda mantık olarak bu kadar basit.
    hookda dikkat edilmesi gerek noktalarda:
    mutlaka sonraki hooklara kontrolün gecmesini sağlamaliyiz.
    2 kez üst üste hookumuz install edilmek istenirse önlem almaliyiz

    -------
    eehh bu kadar. sansür yersede no problem
     
  10. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    ellerine sağlık... :)
    Mantık güzel, geliştirilmesi lazım...

    -------
    Mailleşelim...
     
  11. sadettinpolat

    sadettinpolat Üye

    Kayıt:
    18 Haziran 2004
    Mesajlar:
    69
    Beğenilen Mesajlar:
    0
    bu mesajı Sıkça Sorulan Sorulara Cevaplar bölümünde gördüm.

    benim bu sansür meselesine kafam takıldı. klavyeye hook atan bi programın kaynak kodları neden sansüre uğrasın ki ? bu tamamen kullanıcının kodu nasıl kullanacağı ile ilgili. her kod kötü amaçlar için kullanılabilir. o zaman tüm programlama bölümlerini kaldıralım di mi ? :garip:
     
  12. Euclides

    Euclides Daimi Üye

    Kayıt:
    18 Nisan 2004
    Mesajlar:
    1,090
    Beğenilen Mesajlar:
    0
    Şehir:
    M86
    Burada yazılanlar sansüre girebilecek şeyler değill
    Sizin söylediğiniz hook yöntemleri Win32SDK'de MSDN'de uzun uzun anlatılıyor zaten...
    undocumented olsa bi derece...
     
  13. Volkan Uzun

    Volkan Uzun Daimi Üye

    Kayıt:
    14 Kasım 2002
    Mesajlar:
    3,312
    Beğenilen Mesajlar:
    0
    Meslek:
    Software Developer @ DELL
    Şehir:
    Skype
    o yazdiklarimi daha sonra sansurden gecirmistim, ilk basta yazdigim zamaninda yaptigim birisi hotmail yazana dek bekleyip hotmail yazdiktan sonra herseyi loglayan koddu.
    daha sonra yazdigim seyi duzeltip oyle kopyalamistim
    bunada aciklama getirttiniz ya helal olsun
     
  14. sadettinpolat

    sadettinpolat Üye

    Kayıt:
    18 Haziran 2004
    Mesajlar:
    69
    Beğenilen Mesajlar:
    0
    ben bu cümlelere takılarak sormuştum.

    burda bahsi geçen bi klavye hooku. bunu kim neden sansürlesin?
     
  15. sherlockholmes

    sherlockholmes Üye

    Kayıt:
    9 Şubat 2005
    Mesajlar:
    42
    Beğenilen Mesajlar:
    0
    arkadaşlar selam ,

    klavye hook işlemine dair örnekler arıyorum , sizdeki örnekleri sherlockholmes_1980@hotmail.com adresine gönderbilir misiniz?

    kolay gelsin.

    hmustak , size mail gönderdim ama ulaştırılamadı.
     
  16. burhanmt

    burhanmt Aktif Üye

    Kayıt:
    5 Ekim 2004
    Mesajlar:
    268
    Beğenilen Mesajlar:
    0
    Meslek:
    Teacher, IT Consultant
    Şehir:
    Philippines