ورود

View Full Version : کار با hook,انجام دوباره یه ورودی در ویندوز xp با اسمبلی



friendchp
یک شنبه 15 خرداد 1390, 03:03 صبح
سلام دوستان عزیز...
من یه برنامه دارم مینویسم که یه ورودی دریافت کنه از کیبرد..سپس اونو دوباره انجام بده..یعنی یه ورودی دوباره انجام داده بشه.یا به عبارتی انگار دوبار فشار دادع شدع کلید ورودی
یه چیزایی از اینور و انور خوندم...تا اینجا که متوجه شدم باید از شیوه ی هوک کردن تمامی ورودی ها زمانی که فوکس حتی روی برنامه ما نیست ..استفاده کنم..و برای اینکه برنامه من چیزی رو نشون نده ..یعنی به صورت یه dllکه از خود استارت آپ اجرا بشه....
فعلا یه dllنوشتم..که اینجا قرار میدم ...دوستان لطف کنید راهنمایی کنید که کدم برای dllچی کم داره یا کجاش دارای مشکل هست...و راهنمایی کنید که چطوری پیش برم...ممنون پیشاپیش:
.486
option casemap :none
include \masm32\include\masm32rt.inc
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
.DATA?
HookHandle DWORD ?
FHandle DWORD ?
BytesWritten DWORD ?
Inst DWORD ?

szCurApp BYTE 300 dup (?)
szCurAppNm BYTE 300 dup (?)
szFBuf BYTE 350 dup (?)

.CODE


KeyboardHookProc PROC nCode:DWORD, wParam:WPARAM, lParam:LPARAM
;..........

.IF (nCode == HC_ACTION) && (wParam != 0)
mov eax, lParam
shr eax, 16

mov FHandle, eax

invoke GetModuleHandle, NULL


cmp eax, 0


invoke CloseHandle, FHandle
.ENDIF
.ENDIF
;..........
invoke CallNextHookEx, HookHandle, nCode, wParam, lParam
ret
KeyboardHookProc ENDP
;......nasbe.hook....
Hookingproc proc
invoke SetWindowsHookEx, WH_KEYBOARD, addr KeyboardHookProc, Inst, NULL
mov HookHandle, eax
ret
Hookingproc Endp
;....hooklib.dll....
hooklib PROC hInstance:HINSTANCE, Reason:DWORD, Reserve:DWORD
mov eax, hInstance
mov Inst, eax
mov eax, TRUE
ret
hooklib ENDP

END hooklib

r00tkit
یک شنبه 15 خرداد 1390, 09:07 صبح
سلام بعد اینکه نوع کلید رو توی هوک متوجه شدی از http://msdn.microsoft.com/en-us/library/ms646267%28v=vs.85%29.aspx استفاده کن

http://www.codeproject.com/KB/cpp/sendkeys_cpp_Article.aspx بخون

MSDN رو هم کامل بخشش HOOKش رو بخون

----------------
سوالت کلی بود کلی جواب دادم

friendchp
چهارشنبه 18 خرداد 1390, 09:48 صبح
من برای برنامه ای که میخوام باید یک د ال ال داشته باشم که هر کلیدی که در ویندوز فشار داده میشه رو دوباره تکرار کنه یعنی با هر بار فشرده شدن کلید اون کلید 2بار انجام بشه به جای 1بار
دوستان همچین دی ال ال ی رو دارین؟
اگه ندارین
میتونین کمکم کنید که این دی ال ال رو بنویسم؟من تازه کتاب iczelion رو شروع کردم و برنامه خودمو باید تا پس فردا بنویسم و تحویل بدم...ممنون میشم کمک کنید..