Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.07.25;
Скачать: [xml.tar.bz2];

Вниз

Without dll :)   Найти похожие ветки 

 
SpyBoy ©   (2005-06-29 22:26) [0]

Некто сказал, что около года назад один умелец выложил на сайт
delphimaster.ru исходник проги(клавиатурного шпиона),  умеющей превосходно обходиться без длл.Не могли бы выложить его ещё раз или отправить мне по @.

P.S. Ну хотя бы автора подскажите.


 
Eraser ©   (2005-06-29 22:39) [1]

SpyBoy ©   (29.06.05 22:26)

Статья не знаю где.
Такую штуку можно сделать только под 2K/XP/2003 испльзуя Low Level Hooks.


 
NikotiN ©   (2005-06-29 23:14) [2]

а из exe нельзя экспортировать функции?


 
kami ©   (2005-06-30 00:01) [3]

Хммм... Сильно не бейте, в английском не силен :), но что-то с переводом первоисточника (MSDN) не ладится:
В ремарках SetWindowsHookEx Function:
WH_KEYBOARD_LL- Global only
-------
All global hook functions must be in libraries

В то же время:
The LowLevelKeyboardProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function.

Вроде, последнее предложение переводится как LowLevelKeyboardProc это процедура-перехватчик, определенная в приложении или библиотеке, которая используется совместно с функцией SetWindowsHookEx

Так что я неправильно понимаю или перевожу? Можно или нет "запуздыривать" WH_XXXXX_LL- callback функции в приложение?


 
P.N.P. ©   (2005-06-30 00:03) [4]

>kami ©   (30.06.05 00:01) [3]
>Можно или нет
Можно, уже проверено.


 
Eraser ©   (2005-06-30 00:08) [5]

kami ©   (30.06.05 00:01) [3]

or - это "или". Можно.


 
kami ©   (2005-06-30 00:09) [6]

2 [4] P.N.P. ©
ну, тогда проблема с написанием клавиатурного шпиона без dll - небольшая.


 
P.N.P. ©   (2005-06-30 00:13) [7]

У меня для мышки так сделано:

const
 WH_MOUSE_LL=14; { Low-level mouse hook (work on XP/2000 only) }
 
{------------------------   HOOK  DECLARATION ----------------------------------}
var
 HookedAlready: Boolean = False;

function SetHook: Boolean;
function RemoveHook: Boolean;
function HookProc(Code: integer; wParam: integer;lParam: Longint): Longint; stdcall;
{-------------------------------------------------------------------------------}

implementation

var
 MiseHook: HHook;
{------------------------   HOOK  CODE  ----------------------------------------}
function HookProc(Code: integer; wParam: integer;lParam: Longint): Longint;
begin
 if (wParam = WM_LBUTTONDOWN) then
{ do something }
 result := CallNextHookEx(MiseHook, Code, wParam, lParam);
end;

function SetHook: Boolean;
begin
 Result:=False;
 if HookedAlready then
   exit;
 MiseHook := SetWindowsHookEx(WH_MOUSE_LL, HookProc, HInstance, 0);
 HookedAlready := True;
end;

function RemoveHook: Boolean;
begin
 Result:=False;
 UnHookWindowsHookEx(MiseHook);
 HookedAlready := False;
end;
{-------------------------------------------------------------------------------}


 
kami ©   (2005-06-30 00:15) [8]

2 [5] Eraser ©
Оно, конечно, понятно. Но сбивает фраза из описания  SetWindowsHookEx Function:
WH_KEYBOARD_LL- Global only
-------
All global hook functions must be in libraries


 
Piter ©   (2005-06-30 01:13) [9]

kami ©   (30.06.05 0:15) [8]
All global hook functions must be in libraries


это очевидно, если понимать как работает хук.

Хотя из EXE"щника тоже можно функции экспортировать и использовать EXE как DLL. Правда, придется столкнуться со многими проблемами, в том числе в зависимости от компилятора...


 
Kerk ©   (2005-06-30 01:15) [10]

Надо IMAGE_BASE изменить у ехе, чтоб по адресам он с другими прогами не пересекался..  я так mouse hook без DLL делал в свое время.


 
kami ©   (2005-06-30 01:37) [11]

2 [9] Piter ©
Мда... Тогда я не понимаю, как работает хук(хотя раньше думал, что хотя бы общее представление имею - приходилось использовать), т.к. для меня это неочевидно.
В принципе, это уже пошло буквоедство, ответ был дан в [4] P.N.P. Остальное непринципиально, но все же интересно, почему на одной странице пишут, что для WH_KEYBOARD_LL нужно использовать только dll, а на другой - "где хотите, там и хукайте" ("извращения" над .exe в расчет не беру :) )


 
Piter ©   (2005-06-30 12:37) [12]

Kerk ©   (30.06.05 1:15) [10]
Надо IMAGE_BASE изменить у ехе


Ну это может спасти, но где гарантия, что выберешь абсолютно уникальный адрес? А если не дай бог пойдут релоки - вся твоя программа накроется медным тазом.

Мда... Тогда я не понимаю, как работает хук

ну так почитай

но все же интересно, почему на одной странице пишут, что для WH_KEYBOARD_LL нужно использовать только dll, а на другой - "где хотите, там и хукайте"

ну во-первых, где хотите - о таком не говорится.

Во-вторых, ты понимаешь отличие между локальным и глобальным хуком? Локальный можешь ставить откуда угодно - это тоже очевидно, зная принцип работы хуков. А вот глобальный - ОЧЕНЬ ЖЕЛАТЕЛЬНО (фактически обязательно) ставить из библиотеки, если не извращаться с экспортом функций из EXE"шника

All global hook functions must be in libraries

правильно, здесь говорится о глобальных хуках - они ставятся из библиотек.

The LowLevelKeyboardProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function

тоже все верно. Что из приложения, что из библиотек хуки ставятся функцией SetWindowsHookEx. Что не так?

Тут же не написано - "глобальные хуки можно ставить как в приложении, так и в библиотеке с помощью функции  SetWindowsHookEx"


 
Игорь Шевченко ©   (2005-06-30 12:42) [13]

Здесь шпионам не место


 
Некто ©   (2005-06-30 13:04) [14]

2SpyBoy
>>Некто сказал
типун тебе на язык, ничего такого я не говорил :о)


 
WondeRu ©   (2005-06-30 14:19) [15]

можно просто использовать DirectInput... и никаких хуков вам...


 
3DxFantastika ©   (2005-06-30 17:33) [16]

а что такое WH_KEYBOARD_LL ?


 
Digitman ©   (2005-06-30 18:01) [17]


> 3DxFantastika ©   (30.06.05 17:33) [16]


низкоуровневый клав.хук, реализованный в ОС на НТ-платформе

в справке Борланда ты его не найдешь - справка та писалась еще во времена безраздельного царствования Win9x и плавно переползала из версии в версию Делфи

описание ищи в msdn



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.07.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.013 c
14-1120338791
АНТИСПАММЕР
2005-07-03 01:13
2005.07.25
- На самом деле самого дела нет.


14-1120131748
Иксик
2005-06-30 15:42
2005.07.25
Можно ли переоформлять билеты на поезд на Украине?


14-1120125202
andrey111111
2005-06-30 13:53
2005.07.25
Nsis


8-1111831947
Quattro
2005-03-26 13:12
2005.07.25
выезжающая картинка


1-1120651308
chili
2005-07-06 16:01
2005.07.25
Помоги разобраться как Outlook Express создает POP3 Password2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский