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

كيف أقرأ الMaster Boot Record و بعض الأسئلة...

مغلق
بدأه TheVolcano في 30 سبتمبر 2004 · 3 رد · 1,090 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخواني أنا بحاجة إلى بعض الأمثلة حول :-

1- كيف أقرأ الـ Master Boot Record أو ما يسمى MBR للهارد أو الفلوبي...

2- كيف يمكنني أن أعرف إذا كان الـMBR يحوي بايت معدل (فايروس) لجعل نظام التشغيل معطلا و يقلع الفيروس قبل إقلاع أنظمة التشغيل؟

3- كيف أقرأ الـ Boot Sectors و إذا قرأتها.. ماذا سأجد؟؟ يعني هل سأجد بايتات الملفات العادية؟ برنامجي يعمل ضمن بيئة Windows فهل هناك حاجة لقراءة الـBoot Sector ؟ أم أستخدم الـAPI يلي اسمه CreateFile؟؟

4- يا ريت مثال حول استخدام CreateFile و خاصة في هذا المجال.. يا ريت ما تدلوني على الـMSDN أريد شي آخر بدون وجع الراس..

5- هل لديكم أي فكرة حول "كيفية إيقاف الملفات المنفذة و تنفيذ بعض العمليات عليها"؟

يعني مثلا: إذا نفذت ملف في ويندوز أو MS-DOS Prompt أريد أن أوقف هذا الملف قبل دخول الـRAM و من ثم أتأكد مثلا من حجمه.. و من ثم إذا كان أكبر من كذا لا يعمل (مثلا).. أما إذا كان أقل من كذا فيعمل..

6- كيف يمكنني عمل CPU Emulator؟ هل هناك أي OpenSource أو أية أمثلة فعالة؟

ما أريده من الـCPU Emulator هو تنفيذ الملفات (و خاصة المشفرة) و من ثم استنتاج نتائج معينة مثل : ماذا يفعل هذا الملف؟ هل هناك يقوم بإنشاء ملفات؟ هل يحوي أوامر حذف ملفات؟ هل يقوم بعمل Hook لبعض الـAPIs.. يعني تنفيذ للملف و لكن افتراضي..

يا ريت أي واحد عنده بخبرة بأي مجال أن يساعدني..

يا ريت الأمثلة ++C أو Assembly..

هذا الماسنجر : hadialaddin@hotmail.com

و أنا بانتظار ردودكم الفعالة :)

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

#2

وينكم يا خبراء الفريق العربي للبرمجة!!!!

#3

السلام عليكم,

مهلك يا أخوي TheVolcano .

لقد طرحت عدة أسئلة , وحقيقة للجواب عنها كلها يتطلب وقتا إدا أردنا كل التوضيحات الأساسية

اقتباس
1- كيف أقرأ الـ Master Boot Record أو ما يسمى MBR للهارد أو الفلوبي...

نقرأ MBR كما نقرأ باقي السكتورات. وهنا أنصح أن نبدأ تعليمها في نضام الدوس لأنها ربما تكون أسهل. ولنعلم أن هدا مبدئيا غير ممكن في نضام وندوز 98 لكن يمكن أن نتحايل حتى نعمل هدا وفي نضام NT وأخواتها يمكن دلك لمن أنا شخصيا لم أجرب هدا في مثل هده الأنضمة. ولدا أريد أن أعرف مدى معرفتك في هدا الميدان حتى نتناقش أكثر.

اقتباس
- كيف يمكنني أن أعرف إذا كان الـMBR يحوي بايت معدل (فايروس) لجعل نظام التشغيل معطلا و يقلع الفيروس قبل إقلاع أنظمة التشغيل؟

أضن أن أسهل طريقة لمعرفة هدا هو عمل نسخة لهدا السكتور حين يكون سليما ونحتفض به في قرص مثلا . وبعد مرور الوقت ما علينا سوى أن نقارن السكتور الحالي مع المحفوض ونرى إن كان هناك تغيير وما هو هدا التغيير.

اقتباس
- كيف أقرأ الـ Boot Sectors و إذا قرأتها.. ماذا سأجد؟؟ يعني هل سأجد بايتات الملفات العادية؟ برنامجي يعمل ضمن بيئة Windows فهل هناك حاجة لقراءة الـBoot Sector ؟ أم أستخدم الـAPI يلي اسمه CreateFile؟؟

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

اقتباس
يا ريت مثال حول استخدام CreateFile و خاصة في هذا المجال.. يا ريت ما تدلوني على الـMSDN أريد شي آخر بدون وجع الراس..

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

وهنا جاءتني فكرة إدا كنت لا تريد البرمجة وتريد قراءة أو كتابة في قرص ما وهنا ما عليك سوى استعما برنامج Debug في نافدة دوس وهو يمكنك من هده العمليات.

اقتباس
هل لديكم أي فكرة حول "كيفية إيقاف الملفات المنفذة و تنفيذ بعض العمليات عليها"؟

يعني مثلا: إذا نفذت ملف في ويندوز أو MS-DOS Prompt أريد أن أوقف هذا الملف قبل دخول الـRAM و من ثم أتأكد مثلا من حجمه.. و من ثم إذا كان أكبر من كذا لا يعمل (مثلا).. أما إذا كان أقل من كذا فيعمل..

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

اقتباس
كيف يمكنني عمل CPU Emulator؟ هل هناك أي OpenSource أو أية أمثلة فعالة؟

ما أريده من الـCPU Emulator هو تنفيذ الملفات (و خاصة المشفرة) و من ثم استنتاج نتائج معينة مثل : ماذا يفعل هذا الملف؟ هل هناك يقوم بإنشاء ملفات؟ هل يحوي أوامر حذف ملفات؟ هل يقوم بعمل Hook لبعض الـAPIs.. يعني تنفيذ للملف و لكن افتراضي..

هنا لم أفهم مقصودك. وإدا كنت فقط تريد أن ترى ما يفعله برنامج ما وإدا كنت لا تريد وجع الرأس ما عليك سوى اللجوء إلى برامج من نوع Disassembler أو من نوع Debuggers حتى تمكنك من قراءة البرنامج أم تتبعه وترى ما سيقوم به هدا البرنامج المستهدف.

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

إلى اللقاء.

#4

أحب أضيف لما ذكرة أخي chik

أجوبة معظم الأسئلة تجدها هنا

/index.php?showtopic=46568

أما عن قطاع الإقلاع أو Boot Sector

قطاع الإقلاع ينقسم إلى قسمين

معلومات القرص + برنامج الإقلاع

ويحتوي على بيانات مثل باقي القطاعات والإختلاف الوحيد أن قطاع الإقلاع

ينتهي بتوقيع x55 xAA

ليدل أنة قطاع إقلاع

اقتباس
- هل لديكم أي فكرة حول "كيفية إيقاف الملفات المنفذة و تنفيذ بعض العمليات عليها"؟

يعني مثلا: إذا نفذت ملف في ويندوز أو MS-DOS Prompt أريد أن أوقف هذا الملف قبل دخول الـRAM و من ثم أتأكد مثلا من حجمه.. و من ثم إذا كان أكبر من كذا لا يعمل (مثلا).. أما إذا كان أقل من كذا فيعمل..

توجد عدة طرق لهذة العملية

عن طريق الريجستري لجعل المسؤل عن تشغيل كل الملفات التنفيذية هو برنامجك

وهذة الفكرة بتغيير مشغل الإمتداد ( مثل الإمتداد dll أو cpl او sys ) كل إمتداد لة برنامج يشغلة -- غير البرنامج إلى برنامجك

الطريقة الثانية : عن طريق برنامج explorer

وبصراحة جرتها وكانت 100%100 شغالة ولكن في أنظمة NT فقط

وهي بوضع نقطة توقف على دالة تشغيل الملفات التنفيذية ونقطة التوقف عبارة

عن كتابة التعليمة INT3 أو البايت CC في بداية الإتصال بالدالة

.

.

.

أما عن بقية الأسئلة

لم أفهم ما تريدة بالضبط ؟

حدد : المنصة التي تبرمج عليها 16 بت أو 32 بت

حدد اللغة الإسمبلي أو السي

بإختصار حدد الفكرة التي تريد جواب شامل لها

وبالتوفيق

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

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

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

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

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