Главная страница
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.47 MB
Время: 0.067 c
8-1083744484
rand0m
2004-05-05 12:08
2004.08.01
Морфинг


10-1025241119
Nikols
2002-06-28 09:11
2004.08.01
Работает только на разных машинах...


1-1089898891
DSKalugin
2004-07-15 17:41
2004.08.01
закраска в StringGrid


14-1089890356
ruslan
2004-07-15 15:19
2004.08.01
krasiviy tekst


14-1089302163
OSokin
2004-07-08 19:56
2004.08.01
Мастера Дельфи