Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
3-1089360624
Pioneer
2004-07-09 12:10
2004.08.01
Пустая дата


8-1084527277
elnur
2004-05-14 13:34
2004.08.01
BitmapFile-TextFile


1-1090406223
Dm_S
2004-07-21 14:37
2004.08.01
xl_1:=CreateOLEObject( Excel.Application в консольном приложении


14-1089972728
__none__
2004-07-16 14:12
2004.08.01
а меня вот забанили по ошибке...


1-1090401718
AndreyKi
2004-07-21 13:21
2004.08.01
Интеграция в Office





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