Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

DLL with ASM + Delphi   Найти похожие ветки 

 
GeX ©   (2004-07-14 22:39) [0]

В чем моя ошибка ?

Hook.asm
-------------------------------------
.386
.model flat, stdcall
option casemap :none

; =================================================
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib

.data
AppName db "TestApp",0
WM_KEYBHOOK equ WM_USER + 13

.data?
hHook dd ?
hInstance dd ?
bIsInstalled dd ?

; =================================================
.code

MyHookProc proc uses ebx esi edi nCode:DWORD, wParam:WPARAM, lParam:LPARAM
 .if (nCode == HC_ACTION)
   invoke FindWindow, NULL, addr AppName
   .if (eax != 0)  
     invoke SendMessage, eax, WM_KEYBHOOK, wParam, 0
     invoke CallNextHookEx, hHook, nCode, wParam, lParam
   .endif
 .endif
MyHookProc endp

SetKeyboardHook proc
LOCAL DLLInst : DWORD
LOCAL Dummy[1024] : BYTE
 mov hHook, 0
 invoke GetModuleHandle, ADDR Dummy
 mov DLLInst, eax
 invoke SetWindowsHookEx, WH_KEYBOARD, addr MyHookProc, DLLInst, 0
 mov hHook, eax
 mov bIsInstalled, 1
 ret
SetKeyboardHook endp

RemoveKeyboardHook proc
 mov bIsInstalled, 0
 invoke UnhookWindowsHookEx, hHook
 ret
RemoveKeyboardHook endp

LibMain proc hInst:DWORD, reason:DWORD, unused:DWORD
 .if reason == DLL_PROCESS_DETACH
   .if bIsInstalled == 1
    invoke RemoveKeyboardHook
 .endif
 .elseif reason == DLL_PROCESS_ATTACH
   mov eax, hInst
   mov hInstance, eax
 .endif
 mov eax, TRUE
 ret
LibMain Endp

End LibMain

Hook.def
--------------------------------------
LIBRARY HOOK
EXPORTS SetKeyboardHook
EXPORTS RemoveKeyboardHook

Это все что касаеться библиотеки.
Теперь сама прога...

Hook.pas
--------------------------------------
unit Hook;

interface

procedure SetKeyboardHook; stdcall;
procedure RemoveKeyboardHook; stdcall;

implementation

procedure SetKeyboardHook; external "Hook.dll";
procedure RemoveKeyboardHook; external "Hook.dll";

end.

И при вызове функции SetKeyboardHook вылетакет просто ВСЕ включая
Delphi.

Где я ошибся ?


 
Opilki_Inside   (2004-07-15 12:48) [1]

а зачем так усложнять себе задачу?
Клавиатурные перехватчики легко пишутся и без использования ассемблера.


 
GeX ©   (2004-07-15 20:43) [2]

Я это знаю..... Но мне нужен маленький размер..... (не для трояна).

Ладно вроде то что спрашивал исправил.... но нашел еще один баг -
если трэйсит в дельфи программу. То Дельфи вылетает. И еще один заключаеться в том что сообщение программе отправляеться ДВА раза :(



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

Текущий архив: 2004.08.01;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.033 c
3-1089005628
Bacuc
2004-07-05 09:33
2004.08.01
DBDate


14-1089654853
SammIk
2004-07-12 21:54
2004.08.01
Мерзкии админ


14-1089408881
deep
2004-07-10 01:34
2004.08.01
Ко дню рождения Кэтмара


3-1089036684
Vova
2004-07-05 18:11
2004.08.01
немогу достучатса до базы из сервиса!!!!!!!!????


4-1087572404
Алексей Петухов
2004-06-18 19:26
2004.08.01
установить: разделитель разрядов, дробной части, даты и т.д.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский