Главная страница
    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.035 c
4-1087814076
Users
2004-06-21 14:34
2004.08.01
CreateFile для привода CD


1-1090246027
DmitryNekl
2004-07-19 18:07
2004.08.01
Сохранение компонентов в файл и чтение из него


3-1089017351
Sch
2004-07-05 12:49
2004.08.01
IB6.0.0.627 под Windows 2003 Server - медленное соединение


14-1089823715
VID
2004-07-14 20:48
2004.08.01
Совместное использование ресурсов компьютера в сети. Как ?


1-1090083860
diablo_m
2004-07-17 21:04
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский