Форум: "Потрепаться";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c