محمد علاء الدين

PE32 Function Viewer

4 ردود في هذا الموضوع

من ضمن الأشياء التى اذاكرها هذه الأيام السورس كود الخاص بويندوز و حقيقة وجدت به دوال جيده جدا توفر الوقت و المجهود و لكن اغلبها هو Private لذا لحل تلك المشكله اقوم بعمل Disassemble للمكتبه التى تحتوى على هذه الداله ثم اعرف عنوانها ثم اقوم بإستدعائها بإستخدام عنوانها، لن المشكله تكمن لدى فى البحث عن موقع هذه الداله حيث تكون هذه العمليه مرهقه لذا فقد صنعت اداه بسيطه استطيع بها الحصول على عنوان الداله التى اريدها، بعد ذلك فكرت لماذا لا اقوم بعمل اداه تقوم بتحليل الملفات التنفيذيه و تقوم بإستخلاص جميع الدوال الموجوده بالملفات التنفيذيه و ايضا تقوم بمعرفة اماكن استدعاء تلك الدوال، و هاهى الأاه امامكم.

البرنامج اسمه PE32 Function Viewer و هذه هى صوره له اثناء تحليل win32k.sys

post-135620-12621385419724_thumb.jpg

يقوم البرنامج بتقسيم الدوال إلى 3 اقسام دوال تم تم تصديرها بالإسم و دوال تم تصديرها برقم (Ordinal) و دوال Private.

قمت بإضافة امكانيه اعتقدت انى ساكون بحاجه إليها دائما و هى اعادة تسمية الدوال طبعا لن احتاج لإعادة تسمية الدوال التى تم تصديرها بالإسم (و لكنها متاحه) و لكن الدوال الأخرى هى التى سأقوم بإعادة تسميتها و ذلك حتى إن احتجت للوصول لعنوانها استطيع الوصول إليه بسهوله.

لإعادة تسمية داله او لرؤية اماكن استدعائها فقط قم بـ Double Click عليها.

التالى هى صوره لمعلومات عن داله Private موجوده داخل win32k.sys

post-135620-12621373066068_thumb.jpg

بعد اعادة تسمية الدوال يمكنك حفظها داخل ملف اسميته Local File هذا الملف يأخذ الإمتداد .local و يخزن داخله بيانات عن المكتبه التى تحتوى على الدوال المعاد تسميتها و كذلك بيانات الدوال التى تم اعادة تسميتها.

لفتح ملف local قم بفتح ملف تنفيذى ثم من قائمة local اختر Load، لاحظ انه يمكنك تحميل ملف local لمكتبه غير التى تم تحميلها و سيقوم البرنامج بمحاولة احداث تطابق بين بيانات الدوال الموجوده بالملف و الدوال المحمله من داخل الملف التنفيذى.

قد تحتاج لإعادة اسمء الدوال لوضعها الطبيعى كما كانت عليه حينها استخدم الأمر Reset الموجود بالقائمه Local

لنسخ بيانات داله او مجموعه من الدوال قم بتحديدهم ثم اختر Copy Selected من Tools.

بعد انتهائك من التعامل مع الملف التنفيذى قم بغلقه بإستخدام Close.

البرنامج مازال فى قيد التطوير و النسخه المرفقه هى BETA و إصدارها 0.8، الأمر الوحيد الذى لم اقم بتضمينه حتى الأن هو Find الموجود بالقائمه Tools.

FunctionAnalyser.rar

و الله ولى التوفيق

تم تعديل بواسطه Muhammad alaa
4

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

amazing work...

سوف اقوم بتجربته انتظارا لاراء الاخوة الاخرين

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مجهود جميل اعجبني صغر حجمه وتحديد عدد مرات استدعاء دالة معينة

لكن ما الذي يميز هذا البرنامج عن البرامج الاخرى؟!

أيضا على أي أساس قمت باستخراج دوال private على رأيك !

هل التعليمة التي بعد تعليمة ret وغير موجودة في ال export ؟

هناك الكثير من الاكواد على هذا الشكل ولكن لا تمثل دالة حقيقية تقوم بانجاز مهمة معينة .

ثم اعرف عنوانها ثم اقوم بإستدعائها بإستخدام عنوانها

لماذا لا تستخدم التوقيع المميز للدالة على أكثر من نسخة للويندوز بدل العنوان وتضمن العمل على كافة النسخ المحددة ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
أيضا على أي أساس قمت باستخراج دوال private على رأيك !

هل التعليمة التي بعد تعليمة ret وغير موجودة في ال export ؟

هناك الكثير من الاكواد على هذا الشكل ولكن لا تمثل دالة حقيقية تقوم بانجاز مهمة معينة .

التعليمه call التى يأتى يعدها relative address حيث ان الـ opCode لها هو E8 و الذى يليه مباشرة هو موقع الإستدعاء بما يتناسب موقع التعليمه نفسه فإن كان سالب يتم التحرك لأعلى و إن كان موجب يتم التحرك لأسفل و ذلك للحصول على الموقع الذى يتم استدعائه و هو بالتأكيد موقع داله ايا كان نوعها.

سبب استخدامى لهذه التعليمه مع r16/t32 هو ان الذى يأتى بعدها مباشره دائما ما يكون موقع داله موجوده داخل نفس الملف التنفيذى و بالتالى ان كان الـ offset لهذه الداله يتساوى مع اى من الموجودين داخل الـ export table فهى داله تم تصديرها و غير ذلك فهى داله private.

لماذا لا تستخدم التوقيع المميز للدالة على أكثر من نسخة للويندوز بدل العنوان وتضمن العمل على كافة النسخ المحددة ؟

التوقيع المميز للدوال يكون دائما للدوال التى تم تصديرها و هى يسهل الحصول عليها و لكن ما اثار اهتمامى هو الدوال الـ private و السبب فى ذلك انه يوجد دوال تم تصديرها بـ windows 7 و هى غير متاحه بأى من الإصدارات السابقه له و مع ذلك فهى موجوده بدءا من اصدار ويندوز 2000 و الغريب فى الأمر ان الـ offset لها (فى الأغلب) لا يتغير.

ثانيا توجد بعض واجهات المستخدمه داخل نظام التشغيل و التى لم يتم اتاحة الفرصه للتعامل به إلا من خلال ويندوز 7 و ايضا هى متاحه داخل ويندوز 2000. لذا كما ترى عملية التحليل التى يقوم بها البرنامج من استخراج الدوال المحليه بالإضافة لكود الويندوز سيتيح لى معرفة الكثير عن خبايا نظام التشغيل.

نقطه اخيره ليس دائما ما يتغير الـ offset الخاص بالدوال من نسخه لأخرى و حتى و ان تم فإنه يسهل تجميع جدول بأرقامهم لكل اصدار و استدعاء الداله بالرقم بناءا على اصدارة نظام التشغيل، قهذه العمليه لن تستغرق وقت على الإطلاق.

لكن ما الذي يميز هذا البرنامج عن البرامج الاخرى؟!

كل البرامج الموجوده تقوم بإستخراج الدوال التى تم تصديرها فقط و لكنك لن تجد برنامج يقوم بإظهار لك بيانات عن عمليات استدعاء تلك الدوال او مواقع الإستدعاء الخاص بهم و هذا ما يميز هذا البرنامج لإنه سيوفر على الكثير من الوقت اثناء عمل RE لداله معينه.

و الله ولى التوفيق

تم تعديل بواسطه Muhammad alaa
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .