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

كيفية بناء ملف ثنائى الشفرة ؟

مغلق
بدأه Nokia_2006 في 26 أبريل 2006 · 15 رد · 1,552 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم شباب المنتدى

انا الان لدى سوال فى الاسمبلى ماذا تعنى هذه الكلمة ES:DI ماذا سيحصل عند كتابتها

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

متى استخدم DI و SI

السوال الثانى :

انا الان اكتب برنامج بلغة الا لة 01 01010001

قمت بفتح ملف note pad ثم كتبت بداخلة شفرات التعليمات mov ax ,5h -- , add dx ,4h بما يقابلهما من 0 او 1

ثم قمت بحفظ الملف بامتداد exe. ولكن لم يعمل

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

ساعدونى علا وعسى انجح فى عملية بناء ملف تنفيذى

#2

ماذا كتبت فى مقدمة الملف PE

إذا لم تكن قد كتبت شئ

فالكود لن يعمل بنفسه حتى لو كان مكتوبا بلغة الآلة لابد من أن تكون له بنية الملف التنفيذى للويندوز exe أول تلك البنية هى مقدمة ال pe ( هناك شرح للأستاذ أحمد غريب لل pe بالعربى لكن لا أتذكر الرابط)

أنصحك أن تقوم بتنقيح أحد ملفات ال exe و رؤية ال pe بنفسك

تم تعديل هذه المشاركة بواسطة net_code في 26 أبريل 2006 في 22:41

لا تراجع و لا إستسلام

#3

شرح ملف الPE موجود على هذا الرابط

/index.ph...topic=66189&hl=

وكما ذكر الاخ net_code فإن الملف التنفيذى له بنية خاصة يتحقق منها نظام التشغيل, يعنى الملف التنفيذى لا يحتوى فقط على الشفرة وإنما يحتوى ايضاً على راس header وتعريف بالمكتبات المستوردة والمصدرة من البرنامج الخ

إقراء عن بنية الملف التنفيذى اولاً قبل القيام بعمل اى برنامج تنفيذى بهذا الشكل.

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#4

اخ احمد غريب

ارجو ان تتحملنى قليلا

انا بكتب برامج موجهة للمعالج بمعنى اننى لم اضيف شفرات API بداخل البرنامج

فهل سيكون ايضا

#5

أي برنامج EXE أو DLL أو بصفة عامة PE لابد أن يكون ليه Header معين يكون فيه معلومات عن ال Imports Table و عن حجم الكود و مؤشرات للSegments و هكذا حتى يستطيع الLoader تحميل البرنامج

#6

يعنى مطلوب منى انى احدد اولا عنوان البرنامج فى قسم الشفرة وعنوان قسم البيانات

هل ممكن تنفيذها بدون الهيدر يعنى ممكن

من خلال البحث عن اخر برنامج مقيم فى الذاكرة من خلال معرفة موشر جدول المواصفات الشامل GDT ثم تسجيل برنامجى بداخلة وعنوان الازاحة الخاص بقسم التنفيذ

#7

لا مش ممكن يا حمادة الحل الوحيد عشان تشغل برنامج بدون هيدر هو إنك تعمل نظام تشغيل لوحدك وما تشتغلش على الوندوز..

وانا مش حستحملك يا حماده اكتر من كدا لان السؤال دا كررته اكثر من مره, وقلنا لك ما ينفعش تشغل برنامج بدون هيدر..

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#8
اقتباس
هل ممكن تنفيذها بدون الهيدر يعنى ممكن

كما قال أخي أحمد غريب غير ممكن مع PE

بما أنك تتعامل مع int فقط ولا تستخدم Api نظام التشغيل

فالحل هو الملفات التنفيذية القديمة .COM ليس لها Header

d4baa0.gif
#9
اقتباس
بما أنك تتعامل مع int فقط ولا تستخدم Api نظام التشغيل

فالحل هو الملفات التنفيذية القديمة .COM ليس لها Header

معلومة جديدة اول مرة اعرفها شكرا لك اخ ....DeltaAziz

اقتباس
لا مش ممكن يا حمادة الحل الوحيد عشان تشغل برنامج بدون هيدر هو إنك تعمل نظام تشغيل لوحدك وما تشتغلش على الوندوز..

ولكن انا اعتقد انك تقصد انى اقوم ببناء نظام تشغيل وبناء نظام ملفات خاص بى بدلا من نظام FAT صح

ان المشكلة فى نظام ملفات FAT32 لم تسمح بوجود ملف من نوع EXE وليس له هيدر

صح ولا انا مخطأ

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

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 27 أبريل 2006 في 18:19

#10
اقتباس
ان المشكلة فى نظام ملفات FAT32 لم تسمح بوجود ملف من نوع EXE وليس له هيدر

لا و ألف لا

أخي حمادة بارك الله فيك إقرء توقيع الاخ أحمد، الجزء الأحمر منه

الملف التنفيذي في القرص مثله مثل أي ملف، عبارة عن مجموعة حروف bytes موجودة في مجموعة من sector حسب نظام الملفات المستخدم في القرص سواء Fat أو NTFS أو MFS أو غيرها...

مسألة Header تتعلف بنظام التشغيل، الملفات التنفيذية في نظام MicroSoft مختلفة

منها القديم COM و هو بإختصار عبارة عن نسخة مطابقة للأصل للبرنامج في الذاكرة توضع في القرص

وهو ما كان معتمد في بداية DOS والتي هي أصلا مستعارة من نظام CP/M

d4baa0.gif
#11

السلام عليكم

انا عندى استفسار على ردك اخ احمد غريب انت اعطيتنى ملف به شرح عن الهيدر فيل

لكن المشكلة انى فهمت الشرح لكن الشىء اللى مش فاهمه

لم اقوم بأنشاء ملف تنفيذى كيف اكتب هذ الاجزاء الخاصة بالهيدر فيل بداخل الملف

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

كيف اكتبها داخل الملف ؟ باى طريقة

انا طموحى هو بناء مترجم كامل

مليون مرة اخبرتكم انى قادر على كتابة اللغة كقاعدة وجرم

لكن ليس لدى القدرة على التعامل مع الملفات التنفيذية ؟

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

اولا واخيرا

هذا البرنامج هو مجرد طموح لى احلم بكتابة لغة ولكن عملى فى سواء البرمجة سيكون بناء برامج مثل word او yahoo وهذه النوعية

ولكن المترجمات هى كابوس بيجرى ورايا ومش حارتاح الا لما اصممه

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

علما بان انا ادرس فى معهد العالى للحاسب الالى ولكن لم ندرس اى شىء مفيد عن الكمبيوتر

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 2 مايو 2006 في 21:24

#12

بواسطة hexeditor

Do as I say, not as I do

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

#13

مشكور اخى على الرد السريع

ولكن انا استخدم النوت باد ثم كتابة البنامج بلغة الالة ثم حفظه على هيئة ملف تنفيذى

#14
Nokia_2006 كتب:
مشكور اخى على الرد السريع

ولكن انا استخدم النوت باد ثم كتابة البنامج بلغة الالة  ثم حفظه  على هيئة ملف تنفيذى

النوتباد ينفع لكتابة النصوص لكن الحاجات إللي زي دي لازم Hex Editor

و بعدين لو عايز ده علشان تعمل مترجم فمش شرط تترجم للغة الألة إنت ممكن تترجم للأسمبلي ففي بعض المترجمات بترجم للأسمبلي الأول و بعدين تبعت الناتج لأسمبلر

و بعدين موضوع المترجمات ده مش حكاية تكون عارف أسمبلي و السلام ده موضوع أكبر لإن في مراحل كتير المفروض تكون فاهم بتم إذاي زي مثلا مراحل الParsing و ال Lexing و ال Preprocessing إلخ ...

و بعدين يا حمادة أنا ملاحظ إنك متسرع في الكثير من الأمور

إتعلم الأول و إصبر و متستناش النتيجة تظهر مرة واحدة

ياريت تقرا عن الأساسيات الأول و تبدأ صح لإن واضح إنك متعرفش حتى إن الNotepad بيخزن بإستخدام ال Ascii-Code أو الUnicode

و إنك حتى لو كتبت فيه واحدات و أصفار بيتخزنوا أسكي أو Unicode

اقتباس
انا الان اكتب برنامج بلغة الا لة 01 01010001

قمت بفتح ملف note pad ثم كتبت بداخلة شفرات التعليمات mov ax ,5h -- , add dx ,4h بما يقابلهما من 0 او 1

يا حمادة زي ما بقولك خد السلم واحدة واحدة و عجبتني قوي الحكمة إللي مكتوبة في توقيع أحمد غريب

اقتباس
busbar: يجب أن تدرك أن هناك حد أدنى من المعرفة المطلوبة قبل البدء في عمل أي شيء

تم تعديل هذه المشاركة بواسطة usama707 في 2 مايو 2006 في 21:51

#15

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

اعتقد ان انا فهمت وعندي الحل .....

الحل هو تعلم عمل المجمعات و مترجمات للغات البرمجة سواء في بيئة وندوز او دوس.

ومن خلال ده تقدر تفهم ملفات البرامج !

صح؟!

لا اله الا الله

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

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