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

[ تمت الإجابة ]اعطاء المستخدم حق اختيار ملف ال DLL

مغلق
بدأه Yousof في 10 أبريل 2006 · 4 رد · 2,115 مشاهدة · في أرشيف قسم Windows APIs
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم،

لقد قمت بتنزيل هذه الملفات من الموقع:

http://www.codeproject.com/system/Paladin.asp

http://www.google.co.uk/search?hl=en&q=hoo...ry+socket&meta=

أولا قمت بعمل DLL فايل لملف ال HOOKSOCKET و هو (mydll.dll)

أيضا قمت بعمل DLL فايل لملف ال DLL و هو (HOOKAPINT.dll)

أخير بعد ربط ملفات ال DLL مع ملف ال EXE شغلت البرنامج و الحمد لله اشتغل لكن عندي بعض الأسئله و أرجو الاجابة عليها

لو شغلت ال Internet Explorer فان البرنامج يقوم باظهار ال Log File و هو (iexplore.exe.log) و يحتوي على:

(send,len=47) ip:127.0.0.1,(20)local_port:1180,(20)remote_port:1180
(send,len=1) !
(recv,len=47) ip:127.0.0.1,(20)local_port:1180,(20)remote_port:1180
(recv,len=1) !
(connect,len=27) ip=68.142.226.45,(20)port=80(0d)(0a)
(send,len=47) ip:127.0.0.1,(20)local_port:1180,(20)remote_port:1180
(send,len=1) !
(recv,len=47) ip:127.0.0.1,(20)local_port:1180,(20)remote_port:1180
(recv,len=1) !
(send,len=48) ip:66.249.93.99,(20)local_port:1872,(20)remote_port:80
(send,len=472) GET(20)/(20)HTTP/1.1(0d)(0a)Accept:(20)image/gif,(20)image/x-xbitmap,(20)image/jpeg,(20)

أولا لماذا يعطيني في ال Log file هذه الرموز لل Hex و هي (20) (0a) (0d)?

ثانيا ماذا أفعل في الفايل لكي أتخلص منها؟

هذا كان الجزء الأول من السؤال، أما الجزء الثاني فهو:

البرنامج يستخدم ملف واحد فقط لل DLL و هو mydll.dll عن طريق استخدامه في ملف HOOKAPINT

بمعنى أنك اذا أردت أن تعمل Hook لل Socket فستستخدم ملف mydll.dll الناتج عن ملف ال HOOKSOCKET

و اذا أردت أن تعمل Hook لل Registry فسوف تستخدم أيضا ملف mydll.dll الناتج عن ملف ال HOOKREG

ما أريده هو اعطاء المستخدم أحقية الاختيار، يعني يختار عمل HOOK للسوكت أو للرجستري دون أن أحذف ملف mydll.dll للسوكت و أضع بدلا عنه ملف mydll.dll للرجستري كما هو الحال الآن.

أرجو المساعده و جزاكم الله خير الجزاء :^)

تم تعديل هذه المشاركة بواسطة Yousof في 10 أبريل 2006 في 00:47

#2
اقتباس
لقد قمت بتنزيل هذه الملفات من الموقع:

http://www.codeproject.com/system/Paladin.asp

http://www.google.co.uk/search?hl=en&q=hoo...ry+socket&meta=

أولا قمت بعمل DLL فايل لملف ال HOOKSOCKET و هو (mydll.dll)

أيضا قمت بعمل DLL فايل لملف ال DLL و هو (HOOKAPINT.dll)

أخير بعد ربط ملفات ال DLL مع ملف ال EXE شغلت البرنامج و الحمد لله اشتغل

الى هنا كل شئ تمام ...

هل إطلعت على الكود قبل أن تضع الأسئلة ...

مثل هذه المواضيع يفضل عدم وضع أي سؤال قبل قراءة الكود وتتبع عمل الدوال ...

مثلا :

اقتباس
أولا لماذا يعطيني في ال Log file هذه الرموز لل Hex و هي (20) (0a) (0d)?

هذا السؤال يتعلق بجزء الإخراج الى ملفات الـ log ... كان ينبغي تتبع الكود لمعرفة أين يوجد هذا الجزء وعند العثور عليه يتم التأني في قراءة الكود لمعرفة السبب ...

لنقل أن الكود طويل ولا يمكننا تتبعه سطر بسطر ...

أسهل طريقة : نبحث عن كلمات في الاسطر التي تم إخراجها مثلاً :

اقتباس
(send,len=47) ip:127.0.0.1,(20)local_port:1180,(20)remote_port:1180

نبحث عن send , local_port,remote_port ...

سنصل حينها الى جزء من الكود كالتالي :

(لا تسألني كيف وصلت لهذا ..)

  if(isgraph(buf&0x00FF))
 	 wsprintf(temp, "%c", buf&0x00FF);
  else
      wsprintf(temp, "(%02x)", buf&0x00FF);
  WriteFile(hFile, temp, strlen(temp), &dw, NULL);

ما الذي يقوم به الكود السابق ... هذا الشئ عليك معرفته بنفسك ...

هنا ستعلم لماذا تم اخراج (20) (0a) (0d) ... وما هي القيم المقابله لها ..

اقتباس
ثانيا ماذا أفعل في الفايل لكي أتخلص منها؟

ان كنت تقصد التخلص من تلك القيم فعليك التغيير في الكود . كيف؟ حيث انك تطلع على مواضيع قوية كهذه فأظن انك قادر على التعديل في الكود بعد قراءة جيده له ...

اقتباس
البرنامج يستخدم ملف واحد فقط لل DLL و هو mydll.dll عن طريق استخدامه في ملف HOOKAPINT

بمعنى أنك اذا أردت أن تعمل Hook لل Socket فستستخدم ملف mydll.dll الناتج عن ملف ال HOOKSOCKET

و اذا أردت أن تعمل Hook لل Registry فسوف تستخدم أيضا ملف mydll.dll الناتج عن ملف ال HOOKREG

ما أريده هو اعطاء المستخدم أحقية الاختيار، يعني يختار عمل HOOK للسوكت أو للرجستري دون أن أحذف ملف mydll.dll للسوكت و أضع بدلا عنه ملف mydll.dll للرجستري كما هو الحال الآن.

إن لم تكن فاهماً للكود فلن تستطيع التغيير فيه ...

هناك عدة طرق منها :

دمج الاكواد بوضع جميع الدوال المراد عمل hook لها في مكتبة واحدة ...

التغيير في LoadMyDll بحيث يتم عمل Load لاكثر من مكتبة وسيترتب على ذلك عمل تغييرات أخرى في دوال اخرى ...

أعود وأكرر لا بد من معرفة مسبقة بألية الكود وبما يقوم به كما ان قراءة الكود ضرورية جداً مع كتابة ملاحظات في الأجزاء المهمة منه ...

إن لم ترد عمل ذلك بنفسك فربما أحد الشباب يضع لك الحل مباشرة ...

حظ موفق

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#3

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

ثانيا نعم اطلعت على الكود و لكن لم اتوصل الى الحل حيث انني مبتدئ في برمجة الويندوز و ايضا لم اكن اعرف كيفية عمل ال DLL و ما هي وظائفها و فوئدها

و الحمد لله استطعت فهمها و عملها.

هذا الجزء بالذات لم افهم معناه

if(isgraph(buf&0x00FF))
  wsprintf(temp, "%c", buf&0x00FF);
 else
     wsprintf(temp, "(%02x)", buf&0x00FF);
 WriteFile(hFile, temp, strlen(temp), &dw, NULL);

ايضا اعرف ان القيم المقابله لل 20 هي المسافه و (CR= 0d) (0a =LF)

لكن لا اعرف لم يتم اظهارهم في ال Log file ان شاء الله ساجد لها حلا ادعو لي :)

اما بالنسبة لسؤالي الثاني فانا اريد الطريقة الثانيه و قد بحثت في القوقل لاجد مثال بسيط عليها و لكن للاسف لم اجد و لا اعرف ماذا تسمى هذه الطريقه ان كان احدكم يعرف فارجو ان يخبرني و ان ساقوم بالبحث و التقصي

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

شكرا

#4

اخي العزيز

اعذرني ان قلت لك بصراحة إنك دخلت في موضوع جامد وما زال ينقصك جزء من الأساسيات ...

شئ جيد أن نبحث في أشياء متقدمة نوعاً ما لكن لا يجب أن نغفل عن الأساسيات ...

إعذرني مرة أخرى فانا لا احبذ وضع الجواب مباشرة ...

الدالة isgraph هل تعلم ما الفائدة منها ؟ اسمها قد يعطيك الفائدة ولو بشكل مبسط

اقتباس
ايضا اعرف ان القيم المقابله لل 20 هي المسافه و (CR= 0d) (0a =LF)

جرب استدعاء الدالة isgraph مع هذه الثلاث القيم ولاحظ ما النتيجة ...

إن كنت لا تعلم راجع الـ help او google it ...

طبعاً ذلك الجزء من الكود يعتبر خطأ وقع فيه صديقنا الصيني صاحب الكود ...

بالنسبة لعمل load لأكثر من مكتبة فستحتاج لاستدعاء LoadMyDll اكثر من مرة وعلى إثر ذلك سيتطلب استدعاء دوال أخرى والتعديل في اجزاء اخرى من الكود ...

إن استطعت فهم ألية الكود بامكانك اضافة الدوال المراد عمل hook لها في مكتبة واحدة ...

إن كنت فاهم -فعلاً- الألية حين تكون لديك مكتبة واحدة فضع الخطوات هنا وحينها سيكون لنا نقاش اخر ...

كما قلت مسبقاً بامكانك انتظار اجابات وحلول مباشرة من الشباب ...

تحياتي

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#5

شكرا cipher

اعتقد اني حللت المشكله بعد البحث في القوقل و معرفة عمل isgraph و اخواتها و الفضل لله اولا ثم لك ثانيا

بقي الجزء الثاني من السؤال و ساحاول معرفة الاجابه

لا ابحث عن حلول جاهزه و لكن المناقشه فقط. ساحاول ان اضع حلي للمشكلة الثانيه

if(isgraph(buf&0x00FF))
 	 wsprintf(temp, "%c", buf&0x00FF);
  else if(isspace(buf&0x00FF))
 	 wsprintf(temp, " ", buf&0x00FF);
  else
      wsprintf(temp, "(%02x)", buf&0x00FF);

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…