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

[ تمت الإجابة ]بارامترات الدوال داخل الـ Dll

مغلق
بدأه backar-net في 8 يوليو 2007 · 7 رد · 3,248 مشاهدة · في أرشيف قسم Windows APIs
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لدي طريقة لمعرفة التوابع والإجراءات الموجودة في مكتبة DLL أو OCX فهل يوجد طريقة لمعرفة وسطاء (باراميترات) هذه الإجراءات وتلك التوابع وإذا سمحتم أرجو أن تكون الإجابة متعلقة بدلفي حصرياً.

#2

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

اما Parameter فتعرفها بتنقيح البرنامج الذي يستعمل تلك DLL

حسب ما اعرف والله اعلم

d4baa0.gif
#3

يمكن معرفة نوع البارامتر الخاص بالدالة بتنقيح الـ DLL

لكن لنفرض انك تملك DLL خارجي ليس مرتبط باي برنامج تريد معرفه البارامترات الخاصة به (كما سؤل أحدهم مرة ولم يجب عن السؤال حتى الآن :rolleyes:)

اتصور ان عليك كتابة تطبيق صغير يستدعي هذه الدالة وتمرير بارامترات بحجم بايت, ثم بواسطة debugger تنظر كيف يتم التعامل مع هذا البايت وما الحجم المخصص للبارامتر لتحديد حجم ونوع المتغير.

أتمنى أن يكون هذا الجواب كاف عما لم أجب عنه أحدهم من قبل :rolleyes:

السلام عليكم

« Everything looks different from another cracker point of view »

« There are 11 types of people, those who understand binary, those who don't, well I'm the rest »

« ?Do you speak Binary »

me W4R3ZD00D/

#5

اكتب برنامج, باي لغة شئت

ضمن برنامجك تستخدم LoadLibrary + GetProcAddress لتستدعي دوال الملف (يمكن الحصول على اسماء الدوال المصدرة منه من خلال LordPE)

الدالة قم تملك اكثر من بارامتر (يمكن الاستعانة بـ IDA لتحديد هذا)

مرر بايت لكل بارامتر لكي لا تتجاوز الحجم المخصص للبارامتر

نقح التطبيق بـ olly ليس بالضرورة ان يعمل بشكل صحيح, باي حال انت تمرر بايتات عشوائية لبارامترات ذات وظيفة معينة.

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

انظر كل بارامتر ما الحجم المخصص له (بايت, كلمة, كلمة مضاعفة, كلمة رباعية, عشارية.. سلسلة بطول معين)

حددت اسم الدالة, البارامترات باسماء غير مهمة تستطيع ان تكتب اي اسم تريد في شفرتك, حجم كل بارامتر.

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

السلام عليكم

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#6

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

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

#7

حسنا بصورة أخرى مع صور لمزيد من التوضيح ومزيد من التبسيط باستخدام IDA

عليك الحصول على IDA أولاً

قم بتشغيله بعد التنصيب (للإصدار 5) واختر new > windows > PE Dynamic Library

70417775oo2.th.gif

ثم اختر ملف المكتبة المطلوبة (ساقوم باختبار ملف WZ32.DLL التابع لبرنامج WinZip)

ثم next > next > finish > yes :P معلومات لا يهمني التدقيق بها في هذه الحالة

الان اختر exports ثم الدالة zip من تلك المكتبة

98107130yt8.th.gif

34473033ha2.th.gif

هل ترى var_4, هذا بارامتر واحد لهذه الدالة, طبعا لا علاقة للاسم باسم الدالة الفعلي, هو مجرد اسم عشوائي, arg_0 يدل على نهاية البارامترات وهو ليس بارامتر تابع لها.

99285338bh1.th.gif

انقر على var_4 ثم انقر Enter وسترى هذا

83263570ua8.th.gif

البارامتر بطول 4 بايتات (LONG) (هل ترى dd = declare/define dword)

s و r محجوزة لا تهمك

و arg_0 لا تهمك أيضا

جرب نفس الأمر على دالة اخرى unzip مثلا لتثبت ما قرأت.

السلام عليكم

تم تعديل هذه المشاركة بواسطة Xacker في 7 أغسطس 2007 في 19:14

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#8

مشكور

ورحم الله و الديك

post-157080-12622582839684.jpg

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

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