من الماضي

21 يونيو 2007

كنت اقوم بجولة تفقدية على الملفات داخل الجهاز لنسخ ماهو ضروري منها ، استعداداً للأنتقال القادم

بالصدفه وقعت على مجموعة من البرامج كنت اعمل على تطويرها منذ مايقارب 4 الى 5 سنوات مضت

لاكن البعض منها لم يكتمل بعد والبعض الآخر اكتمل وضل حبيس مجلده :D

احببت ان انشرها هنا لكي يستفيد منها الآخرون ، ووقع اختياري على برنامجين اعتقد انهما هما الافضل للنشر

Windows Handles :

يقوم هذا البرنامج باستعرض كيفية التعامل مع المقابض ( Handle ) ضمن نظام التشغيل Windows

Windows Handles

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

wh.zip

FileManager For Server :

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

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

FileManager For Server

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

fmfs.zip

مصنف في: Delphi | | التعليقات: 3 »

Paldo عشق من أول نظرة

15 يونيو 2007

كعادتي احب ان افكر بالمسقبل كثيراً ، فهذه المرة كنت افكر بالانتقال القادم لنظام التشغيل

فبعد اصدار Microsoft لـ Windows Vista اصبح هناك مفرق للطرق

فجميع اعمالي متوافقه او مبنية على انظمة Windows السابقة ، ولاكن المستقبل سيحتم علي الانتقال الى ماهو جديد لامحالة

خلال الفترة السابقة كنت قد حصلت على توزيعات Linux المختلفة كـ Suse ، Ubuntu , Mandriva ..
ولاكن لم يكن هناك آلفه كما هو الحال مع XP :)

ولاكن !!

اليوم استطعت الحصول على احدى توزيعات Linux الجديدة والتي تدعى Paldo

بعد تجربة امتدت لـ 5 دقائق فقط حصلت هناك الفه غير مسبوقة سواء لي انا او لجهازي المحمول :D

فكانت متناغمه تناغم تام مع Hardware ، وكذلك ايضاً فهي نسخة موجهه للمبرمجين حيث تحتوي بشكل اساسي على اغلب بيئات التطوير لـ Linux

حتى اني أصبحت اشك بأن هذه التوزيعة صنعت لي انا خصيصاً ولجهازي انا بالتحديد ;)
سنتحدث عنها بمزيد من التفاصيل في تدوينات قادمه
( والله يديم المحبه )

مصنف في: عام | | التعليقات: 4 »

خارطة PE

14 يونيو 2007

بعد جولة تفقدية لمستنداتي ، وجدت بالصدفة كتاب او مرجع ( pdf ) على شكل رسم بياني

يبين تركيبه PE بشكل دقيق ، موضحاً اقسامها وفروعها بالتفصيل
فهي بالفعل خارطة لاغنى عنها لكل من يريد ان يكتشف هذا العالم الرائع

يمكن الحصول عليها من هنا

pe-format.pdf

مصنف في: عام | | لا تعليقات »

Export Table

6 يونيو 2007

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

يوجد عنوان الجدول عند الازاحة 178 من بداية الملف ( RVA )

1.gif

عند الذهاب الى عنوان الجدول سنجد التالي

2.gif

هذي هي تركيبة الجدول من بداية عنوانه

struct _IMAGE_EXPORT_DIRECTORY {
0x00 DWORD Characteristics;
0x04 DWORD TimeDateStamp;
0x08 WORD MajorVersion;
0x0a WORD MinorVersion;
0x0c DWORD Name;
0x10 DWORD Base;
0x14 DWORD NumberOfFunctions;
0x18 DWORD NumberOfNames;
0x1c DWORD AddressOfFunctions;
0x20 DWORD AddressOfNames;
0x24 DWORD AddressOfNameOrdinals;
};

مايهمنا هو شيئين NumberOfNames و AddressOfNames
في الصورة السابقة قمت بتلوين مكان وجود الحقل NumberOfNames باللون الاصفر
وكذلك AddressOfNames باللون الاخضر

من الصورة السابقة
NumberOfNames = 10 وهي عدد الدوال
AddressOfNames = 040068 وهي بداية عنوان جدول الاسماء

لننتقل الى AddressOfNames

3.gif

ما هو مظلل باللون الرصاصي يشير الى بداية الجزء ويمثل عنوان اسم اول دالة ( حجم العنونة DWord )
للنتقل الى هذا العنوان

4.gif

كما تشاهد في الصورة اسم الدالة التي يشير اليها العنوان السابق ، وهكذا يتم الوصول الى بقية الدوال
ونتوقف عن قراءة الدوال عند الوصول الى العدد المسجل في NumberOfNames والتي يمثل العدد الكلي للدوال

هذا كل مافي الأمر،
وقد قمت بعمل برنامج بـ C++ Builder يقوم بإستخراج اسماء الدوال من جدول Export Table تلقائياً
يمكنك الاطلاع عليه فهو مرفق مع السورس كود

5.gif

exporttable.zip

مصنف في: C & C++, عام | | لا تعليقات »

Import Table

27 مايو 2007

Import Table هو جدول الملفات المستورده المستخدمه دولها ضمن البرنامج ( sub routine )

سنستعرض هنا كيفية الوصول الى هذا الجدول ومعرفة اسماء الملفات المستخدمه ودوالها ضمن بنية PE
( يفضل وجود معرفة مسبقة عن هذه البنية او مراجعة PECOFF في احدى التدوينات السابقة )

تبدأ بنية ملفات PE بـالرأس DOS Header وهي من بقايا البنية MZ ، فالـ PE اتت كتطوير للبنية MZ

1.gif

مايهمنا هنا ماهو موجود في العنوان 3c وهو بداية الجزء PE بالرأس NT Header مسجل كقيمة RVA اي مقدار الازاحة من بداية الملف
كما هو موضح في الصورة السابقة فالقيمة الموجودة في العنوان 3c هي 100 ( جميع القيم بـ Hex ) لننتقل الى هذا العنوان

2.gif
هنا يبدا الراس الحقيقي للـ PE والذي يميزه المعرف PE في اول 4 بايت من هذا الجزء
عند العنوان 180 نجد عنوان الجدول ( Import Table ) مسجل كقيمة RVA
ننتقل الى هذا العنوان

5.gif

في هذه الصورة قسمت هذه المنطقة الى عدة الوان
مايهمنا هو كل من اللونين الرمادي والاصفر ، وبقية الالوان تمثل حجم كل حزء
القيمة الموجودة في اللون الرمادي بالجزء الاول تشير الى العنوان الذي يحوي اسم الملف المستورد القيمة مسجله كـ RVA
والقيمة الاخرى الموجودة في اللون الرمادي في الجزء التالي ( باللون الازرق ) تشير الى الملف التالي وهكذا
للايضاح لو انتقلنا الى العنوان المسجل في المربع الرمادي الاول وهو 05B714 سنجد التالي :

3.gif
كما تلاحظ اسم الملف هو kernel.dll

اما بالنسبة للون الاصفر فهو يمثل بداية الجدول للدوال المستخدمة لهذا الملف
فلو انتقلنا الى العنوان المسجل في المربع الاصفر الاول وهو 5B12C
4.gif

كما تلاحظ فهو عبارة عن جدول يحتوي جميع الدوال المستورده من الملف وكل خانة عبارة عن DWord تشير الى العنوان الموجود فيه اسم الدالة
وينفصل جدول الدوال لكل ملف عن الآخر بالصفر ( 0 )

وهكذا نحصل على Import Table
هذه الطريقة يدوية ، استخدمتها لتبيين الامر
نفس العمل يتم برمجياً ، ولاكن هناك البنيات التركيبية للـ PE معرفة ضمن مكتبة windows
مما يسهل الوصول الى البيانات

قمت بعمل برنامج يقوم باستخراج البيانات برمجياً
يمكنك الاطلاع عليه ( فهو مرفق مع السورس كود )

prog.gif

النسخة الاولى لـ Delphi

itdelphi.zip
النسخة الثانية لـ C++ Builder

itc.zip

مصنف في: Delphi, C & C++, عام | | لا تعليقات »

المواضيع السابقة المواضيع اللاحقة