الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]مساعده في عمل Hook

مغلق
بدأه اشليان في 29 يوليو 2009 · 15 رد · 2,132 مشاهدة · في أرشيف قسم Windows APIs
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

أنا عملت برنامج يقوم بخطف الرسائل أو كما يسمى

subclass

لكن لأستطيع أن أعمل ذلك إلى على نافذه برنامجي حاولت أن أعمل ذلك على متصفح

انترنت اكسبلورر

لكن لم ينفع وذلك عن طريق أستخدام الدالة

FindWindow

المثال المرفقات

Hooking.rar

#2

لعمل Hook على نوافذ عمليات أخرى غير عمليات البروسس الخاص بك

يجب أن تحقن ملف dll في العملية المستهدفة (الهدف) و تقوم بالعمل وإرسال النتائج لبروسسك ( المُراقِب ).

دمت بود ,

#3

مشكور اخي على المساعده

طيب ممكن شرح هذه العملية بالتفصيل الله يجزاكم خير

او شرح المثال في هذا الموضوع

/index.ph...=80423&st=0

#4

اي نوع من الرسائل تريد عمل hook لها؟

حسب ما اذكر ممكن عمل هوك للرسائل الخاصة بالماوس و الكيبورد من دون ملف dll

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#5

اقصد رساءل الماوس والكييبورد وتحرك النافذه

#6

بالنسبة للماوس و الكيبورد ممكن السيطرة عليهم بدون ملف dll

اما بقية الانواع سوف تحتاج الى ملف dll حسب ما اعرف.

عموما ال MSDN يور شرح كامل مع مثال

استخدم هذه الدالة لعمل هوك على الماوس مثلا

SetWindowsHookEx( 
							WH_MOUSE_LL , 
							LowLevelMouseProc, 
							hInstanc, 0);

هذا النوع من الهوك WH_MOUSE_LL يتم دون الحاجة الى ملف dll

داخل الدالة LowLevelMouseProc اكتب ما تشاء

ممكن استلام الرسالة ثم تمريرها عن طريق CallNextHookEx

او ممكن ايقاف تمرير الدالة و بالتالي سيتعطل الماوس

تم تعديل هذه المشاركة بواسطة الاخير زمانه في 30 يوليو 2009 في 18:35

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#7

جزاك الله الف خير يأخي الاخير زمانه

ولكن بقي لدي سوئلين إذا لم يكن هناك مانع أو أزعاج

كيف أقوم بمنع وصول الرسالة؟؟

ماهي وظيفة الدالة

CallNextHookEx

؟؟

والدالة RegisterWindowMessage انا اعرف أنها تقوم بتحويل سلسله نصية الى رسالة long

لكن هذه السلسة النصيه هل يجب أن تكون محدده أم أكتب فيها ألى بدي إياه

وهل لها ثوابت؟؟؟

تم تعديل هذه المشاركة بواسطة اشليان في 30 يوليو 2009 في 20:11

#8
اقتباس
كيف أقوم بمنع وصول الرسالة؟؟

الدالة LowLevelMouseProc سيكون تعريفها كالأتي

LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam)

اذا اردت من الرسالة من الوصول ضع في اخر هذه الدالة

return 1;

اما اذا اردت الحصول على الرسالة والاستفادة منها لغرض ما ثم تمريرها الى البرنامج الاصلي

ضع في نهاية دالة LowLevelMouseProc

return(CallNextHookEx(NULL, nCode, wParam, lParam));

اقتباس
ماهي وظيفة الدالة

CallNextHookEx

؟؟

استخدم يا أخي ال msdn ستجد مقالة عن الموضوع توضح ال hook وكيف تتم معالجته ،،

اذا لم تقرء لن تفهم الامر

تم تعديل هذه المشاركة بواسطة الاخير زمانه في 30 يوليو 2009 في 22:33

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#9

مشكور وجزاك الله ألف خير أحس أني تعبتك معاي

سؤال أذا مافي إشكال!

ذحين لو عملت هووك على حركة الماوس

هل يكون الهووك على برنامجي فقط أو على جميع النوافذ المفتوحة؟؟

يعني الهوك يتتبع حركة الفأرة فقط إذا كانت على برنامجي أو لأ؟

LowLevelMouseProc ممكن تعريف الدالة

في vb6

#10
اقتباس
ذحين لو عملت هووك على حركة الماوس

هل يكون الهووك على برنامجي فقط أو على جميع النوافذ المفتوحة؟؟

هناك عدة انواع من الهوك ،، بالنسبة للماوس لو عملت نوع WH_MOUSE سيكون فقط على برنامجك ،

لكن لاحظ اني اخترت النوع WH_MOUSE_LL هذا سيكون على الماوس ككل

وهناك WH_KEYBOARD_LL هذا خاص ب KB يمكنك من السيطرة على الرسائل الخاصة بالكيبورد ،،

من الاخر سيكون الهوك على النظام ككل مع هذين النوعين فقط ، اما بقية الانواع (عددها يزيد عن 10 بقليل حسب ما اذكر) فستحتاج الى ملف dll

اذا اردت ان تسيطر على جميع البرامج.

اقتباس
LowLevelMouseProc ممكن تعريف الدالة

في vb6

انا الموضوع تاركوا من زمان ،، لكن حسبما اذكر ان هذا اسم دالة ،، غير مهم (تاكد من ذلك من ال msdn)،،

اهم الدوال لديك (وهي دوال api ممكن استخدامها بأي للغة)

دالة SetWindowsHookEx لعمل هوك

دالة UnhookWindowsHookEx لحذف الهوك

ودالة CallNextHookEx

العفو يا أخي ما سوينا شي

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#12
http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=55676&lngWId=1

هذا مثال لعمل Hook للماوس , بسيط , مع إستعمال للدوال مذكورة آنفاَ :P لي فترة أبغى أستعمل كلمة آنفاَ بجملة مفيدة :D

دالة SetWindowsHookEx لإضافة دالتك لسلسة الرسائل

دالة UnhookWindowsHookEx لحذف دالتك من سلسة الرسائل

ودالة CallNextHookEx لتمرير الرسائل للعنصر التالي بالسلسة

لاحظ إذا لم تقم أنت بإستدعاء CallNextHookEx , لن تصل رسائل الفارة لعناصر السلسلة الذي يلونك

يعني

إفرض أن لديك 3 برامج , explorer , EXE1 , EXE2

قام exe2 بعمل هوك للماوس , بعده قام explorer , تلاه exe1

الآن exe1 هو أول من يحصل على رسائل الفأرة , إذا لم يستدعي CallNextHookEx , لن تصل الرسائل إلى explorer و exe2

إذا إستدعاها , ستصل الرسائل إلى exeplorer , الذي بدوره قد يمررها للذي يليه أو لا ’, وهلم جرى :)

مثال , عمل برنامج يراقب Alt+Tab , إذا ضغك عليهم المستخدم , يتقوم بعرض برنامجك , وستوقف إكمال الرسائل لكي لا تصل للwinlogon ويعرض شاشة تبديل الواجهات :)

دمت بود ,,,

#13

مشكورين والله يجزاكم ألف ألف خير

يعني ذحين لو لم أضع الدالة CallNextHookEx فهل هذا يعني

أني منعت الظعت الكيبورد

تم تعديل هذه المشاركة بواسطة اشليان في 31 يوليو 2009 في 21:50

#14

أي أنك منعت وصول رسائل الكيبورد للبروسس التالي لك في سلسلة الرسائل :) وإذا كان برنامجك = الأول , إذا لن تصل رسائل الكيبورد لأي برنامج ,

#15
Syntax_err كتب:
أي أنك منعت وصول رسائل الكيبورد للبروسس التالي لك في سلسلة الرسائل :) وإذا كان برنامجك = الأول , إذا لن تصل رسائل الكيبورد لأي برنامج ,

طيب كيف اعرف هل برنامجي هو الاؤل أو لأ

لاني جربت أن لأكتب الدالة لكن الرسالة وصلت

#16

UP

هذا الموضوع مغلق.

مواضيع مشابهة