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

الملفات التنفيذية ؟

مغلقرائج
بدأه Nokia_2006 في 4 يونيو 2006 · 88 رد · 10,595 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#51

اخى محمد عبد العزيز

انا اشكرك كل الشكر

لقد اجتزت مرحلة بناء ملفات التنفيذية مثل EXE وGIF وفهمت الطريقة والفكرة

ولكن حاليا احاول اتعلم بناء ملف تنفيذى داخل win32 ( معرفة الفكرة ايضا )

اخ محمد عبد العزيز

اريد توضيح فكرة كيف يتعامل مترجم الللغة مع المتغيرات

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

كيف يتم التعامل مع المتغيرات انا توصلت للمرحلة الاولى :وهى تحديد نفقطة البداية لقطاع ds ثم ازاحة المتغيرات داخل هذا القطاع لكن اعتقد انه خطاء

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

لاننى اجتازت مرحلة ملفات EXE و COM تحت واجهة المعالج

وهل يوجد اى اماكن او معاهد تقدم دراسات عن هذا الموضوع داخل الاسكندرية

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 19 يونيو 2006 في 02:38

#52

اعتقد اننى قطعت 75 % من مشوار بناء مترجم حقيقى

#53

الا تريد ان تكمل الموضوع اخ محمد

#54

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

محمدعبد العزيز كتب:

لا تستخدم NotePAD، لا يمكنك كتابة بعض bytes به، ايضا هة يضيف 2 bytes لنهاية السطر والرجوع

لم أفهم هذه النقطة تماما يعني هل تقصد أخ محمد عبد العزيز بقولك"لا يمكنك كتابة بعض bytes به"الرموز في شفرة الآسكي

ما قبل الرقم الست عشري 20 وأرجو التوضيح بالنسبة ايضا إلى "هة يضيف 2 bytes لنهاية السطر والرجوع"

فيا ليت التوضيح من الأعضاء

آسف أخي Nokia_2006 على قطع سلسلة موضوعك بسؤالي هذا

وشكرا للجميع

#55
محمدعبد العزيز كتب:

يا حمادة الله يرضى عليك ابتعد عن 1000 1001 / 1100 0000

فقط ارفق ملفك و نكمل، حتى نصل لبناء ملف تنفيذي يدويا

و في الأخير ستفهم كل شيئ

و كما قلت لك اكثر من مرة لا تكثر الاسئلة حتى لا يختلط الأمر و يتحول لأشياء اخرى

الهدف: كتابة ملف exe خطوة خطوة

ارفق ملفك و ستفهم OpCode

اعد قرائة ما مكتوب ياحمادة

أخي AND

هناك bytes لا تظهر لو كتبت في NotePad

جرب فتح ملف تنفيذس EXE بNotePAD غير فيح حرف واحد او حرفين فقط

اعد حفظه باسم جديد ولا حظ الفرق بين الملفين

d4baa0.gif
#56

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

شكرا جزيلا أخي محمدعبد العزيز على سرعة الرد

اقتباس
جرب فتح ملف تنفيذس EXE بNotePAD غير فيح حرف واحد او حرفين فقط

اعد حفظه باسم جديد ولا حظ الفرق بين الملفين

جربت هذا الأمر من زمان حينما كنت أقوم بالعبث داخل ملفات exe عن طريق الNotepad وأتفاجأ بأن الملف لايعمل

بعد حفظ التعديلات عليه وكانت النتيجة أن الNotepad يقوم بتغيير الرقم الست عشري "00h" إلى الرقم الست عشري "20h"

حين تعديل أي ملف يحمل القيمة "00h" وبهذا فسرت سبب عطب الملف exe بعد تعديله بال Notepad.

كما أن الملف المعدل لا يتغير حجمه أبدا ولهذا تساءلت عن قولك "ايضا هة يضيف 2 bytes لنهاية السطر والرجوع"

ويا ريت تقول ما هي ال bytes التي لا تظهر لو كتبت في NotePad.

وشكرا لك مرة أخرى لتحملك أسئلتنا.

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

#57

يا حبيب قلبى ( اخ محمد عبد العزيز ) لوسمحت انا فهمت طبيعة الملف com. وexe. ذات توقيع MZ بايت بايت

الان

ارايد ان ابداء خطوة اخرى وهى بناء exe. باستخدام توقيع PE وSECTION teable

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

انا اشكرك جدا للتفاعلك معى

--------------------

اخ AND

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

قم بكتابة ملفاتك من خلال انشاء ملف عن طريق الاسمبلى int 21h او الموشر FILE * VAR_name فى لغة السى

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

اولا بالنسبة للنوت باد

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

[ الNotepad يقوم بتغيير الرقم الست عشري "00h" إلى الرقم الست عشري "20h"]

هو يقوم بقراءة كل حرف على انه بايت

اما رمز الهكس 3dh مثلا فيقرءه بهذه الطريقة 3 يعتبرها بايت وحرف d يعتبره بايت اخر وحرف H يعتبر بايت اخر

اذا قراءت 3d فهو يمثل بايت كامل لان كل حرف منه يمثل 4 بت وليس بايت ان ان الرمزين معا يمثلان بايت واحد

لكن النوت باد ياخذ القيم ويغيرها الى ما يقابلها بالقيمة ASCII

وضحت الفكرة

اما بالنسبة للاضافة 2 بايت لنهاية السطر فهذا الامر يضيفه النوت باد تلقائيا عندما تقوم بالضغط على الزر enter فينتقل لسطر جديد فيقوم بكتابة 2 بايت كدليل لوجود سطر جديد بعد جملة او عبارة حرفية معينة مكتوبة بداخله

وليس من خلال النوت باد لانه سيقوم بحفظ الحروف والرموز على اساس شفرة الاسكى وليس hex number توضيح بسيط اتمنى تكون فهمت ما اقصد

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

#58

اخى محمد عبد العزيز

الا تريد ان نكمل الموضوع ام لا

انتظر ردك

#59
Nokia_2006 كتب:
اخى محمد عبد العزيز

الا تريد ان نكمل الموضوع ام لا

انتظر ردك

اقتباس
يا حمادة الله يرضى عليك ابتعد عن 1000 1001 / 1100 0000

فقط ارفق ملفك و نكمل، حتى نصل لبناء ملف تنفيذي يدويا

و في الأخير ستفهم كل شيئ

و كما قلت لك اكثر من مرة لا تكثر الاسئلة حتى لا يختلط الأمر و يتحول لأشياء اخرى

الهدف: كتابة ملف exe خطوة خطوة

ارفق ملفك و ستفهم

d4baa0.gif
#60

حمادة .. اسمع كلام محمد عبد العزيز .. الرجل جزاه الله خير يمشي معاك خطوة خطوة ..

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

اسمع كلام الاستاذ .. اذا كنت تريد التعلم.

اسمع الكلام و لا تعاند و لا تكابر.

#61

اخ محمد الله يباركلك..بجد نعم المثال للمعلم...ربنا يزيدك.

مدونة مهندس ميكانيكى

“Any fool can make things bigger, more complex, and more violent”

#62

:angry: يا شباب ماذا حدث لبقية الموضوع

إذا كان حمادة لا يريد المتابعة كلنا نريد المتابعة

(أم أنت يا أخي محمد لا تريدها ؟؟؟؟؟؟ا)

يا أخي تابع هذا الموضوع ففيه الفائدة بإذن الله :rolleyes:

شكوت لوكيع سوءحفظـي ____ فأرشدني إلى ترك المعاصي

وقال لــــي إن العــلم نـــور ____ونـور الله لا يؤتــى لعــــاصي

#63
Ahmadte1 كتب:
:angry: يا شباب ماذا حدث لبقية الموضوع

إذا كان حمادة لا يريد المتابعة كلنا نريد المتابعة

(أم أنت يا أخي محمد لا تريدها ؟؟؟؟؟؟ا)

يا أخي تابع هذا الموضوع ففيه الفائدة بإذن الله :rolleyes:

السلام عليكم

الاخ حمادة اعلن نيته في عدم متابعة الموضوع

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

او كنت تريد المتابعة اخبرني ايت توقفت ثم نتابع...

d4baa0.gif
#64

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

بصراحة لي الشرف أن أتابع معك :D

ولكن أريد المتابعة بلغة c++

مع أنني مبتدئ فيها و لكن أحسن من c (مارأيك)

ولدي بعض الأسئله :

التعليمة التالية تطبع في الملف d :

fprintf(p,"d");

التعليمة التالية تطبع في الملف 64 :

fprintf(p,"%x",'d');

وأنت قلت لحمادة أن يطبع d وحسب فهل قصدت الأولى

ثم قلت أن يطبع

اقتباس
و داخل الملف بدلا من كتابة الحرف d اكتب C3 بالهكس في لغة C

فهل قصدت التعليمة

fprintf(p,"%x",'c3');

(ملاحظة أنا مبيدئ في c ++ وأتمنى أن تتحملني :lol: )

شكوت لوكيع سوءحفظـي ____ فأرشدني إلى ترك المعاصي

وقال لــــي إن العــلم نـــور ____ونـور الله لا يؤتــى لعــــاصي

#65

السلام عليكم

بالنسبة لسؤال الطباعة فكان فقك للأكد من معرفة التعامل مع الملفات

المهم بما انك اخترت fprintf

كان المطلوب هو طباعة حرف d في ملف نصي...

fprintf(p,"%c","d");

ثم تغييره ليكتب c3 بالهكس في لغة c/c++ نكتب 0xc3 يصبح الامر

fprintf(p,"%c",0xc3);

طبعا لاحقة الملف المنشئ .com

في حالتنا ملف تنفيذي به امر واد هو Ret اي c3

يقوم نظام التشغيل بتحميل ملفنا للذاكرة ثم تنفيذه

ينفذ الامر Ret وهو الرجوع، في حالتنا الرجوع للنظام

حتى الأن هل الأمر مفهوم ؟

لكي نكمل ونظيف اوامر اخرى لملفنا التنفيذي .com ولتكن مثلا طباعة كلمة ArabTeam2006

d4baa0.gif
#66

نعم الأمر مفهوم

يا أخي محمد التعليمة

fprintf(p,"%c",0xc3);

فأعطت المطلوب(تفحصتها على الdebug)

مارأيك :D

الملف المرفق

AHMAD_asm.rar

شكوت لوكيع سوءحفظـي ____ فأرشدني إلى ترك المعاصي

وقال لــــي إن العــلم نـــور ____ونـور الله لا يؤتــى لعــــاصي

#67

شكرا للمشرفين عل تبديل الرابط الخاطئ و التعليمة

يا أخي محمد وضعت 90 90

ثم استبدلتها ب cd10

النائج برنامج يمسح الشاشة (cls)

صحيح

الملف المرفق(أرجو من المشرفين عدم حزف الروابط التالية إظن أنها ستشكل التسلسل التعليمي بإذن الله)

AHMAD_asm.rar

شكوت لوكيع سوءحفظـي ____ فأرشدني إلى ترك المعاصي

وقال لــــي إن العــلم نـــور ____ونـور الله لا يؤتــى لعــــاصي

#68

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

وقم بتسمية الملف باضافة رقم مثلا ahmed_asm2 ثم asmed_asm3 وهكذا...

حتى الأن جيد

وصح cls مسح الشاشة

نكمل

نريد ان ننشئ ملف يكتب نص او كلمة مثلا ArabTeam

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

اظنك تتذكر الموضوع اخي احمد، المهم هذا هو بعد التعديل

.model tiny
.code
org 100h
start:
call aah 
ahmad db 'ArabTeam2006',0
aah:
pop si
mov ah,0eh
mov bl,7
next:
mov al,[si]
int 16
inc si
cmp al,0
jne next

ret

نفس البرنامج عند عمل Compile يعطي التالي...

E80D00 Call 0110

'ArabTeam2006',00

5E POP SI

B40E MOV AH,0E

B307 MOV BL,07

8A04 MOV AL,[sI]

CD10 INT 10

46 INC SI

3C00 CMP AL,00

75F7 JNZ $-7

C3 RET

d4baa0.gif
#69

غير في الملف بحيث يكون محتوى الملف الناتج:

0xE8 0x0D 0x00
'ArabTeam2006',00
0x5E
0xB4 0x0E
0xB3 0x07
0x8A 0x04
0xCD 0x10
0x46
0x3C 0x00
0x75 0xF7
0xC3
d4baa0.gif
#70

:blink: :huh: :lol: : :D

هذه المراحل التي مررت بها

مع أني لم أفهم الكثير

هذا المرفق

AHMAD_asm3.rar

تم تعديل هذه المشاركة بواسطة Ahmadte1 في 3 يوليو 2006 في 15:03

شكوت لوكيع سوءحفظـي ____ فأرشدني إلى ترك المعاصي

وقال لــــي إن العــلم نـــور ____ونـور الله لا يؤتــى لعــــاصي

#71

مــــــــــــاذا لم تفهم ؟

d4baa0.gif
#72

ما كنت أريد أن أفهمه هو

يمكن تقسيم التعليمة (مثلا)

mov ax,5040

كالتالي

mov=b

ax=8

والباقي و 4050 أي

mov ax,5040=b84050

هل هذا صحيح :huh:

(هل انتهينا من بنية الملف com :o )

(متى سنبدأ exe pe :P )

شكوت لوكيع سوءحفظـي ____ فأرشدني إلى ترك المعاصي

وقال لــــي إن العــلم نـــور ____ونـور الله لا يؤتــى لعــــاصي

#73

نعم هناك تقسيم للأوامر

وهناك قواعد للتقسيم

تفحص الملف المرفق...

ولا تتعجل سننتقل لملفات PE بعدما نمر بDOS exe

-

نكمل

الأن، نريد التغيير في برنامجنا بحيث:

نغير في الكلمة المطبوعة كما نشاء

اي نطلب من المستخدم ادخال كلمة او جملة، ثم ننشئ ملف .com عند تنفيذه يطبع تلك الكلمة او الجملة

لا حظ في الكود، شيئ واحد فقط يتغير هو امر Call

بحيث المسافة تتفير

E8 0D 00

E8 يمثل امر Call

0D 00 اي 13 يمثل طول الكلمة ArabTeam2000 + 00 في النهاية

قم بالتعديل وارفق المثال

Intel_Code_Table.zip

d4baa0.gif
#74

:D

لدي سؤال كيف يمكن أن أعطي متحول ما قيمة المتحول الأخر بالنظام الست عشري؟؟؟؟؟

الملف المرفق

AHMAD_asm4.rar

شكوت لوكيع سوءحفظـي ____ فأرشدني إلى ترك المعاصي

وقال لــــي إن العــلم نـــور ____ونـور الله لا يؤتــى لعــــاصي

#75

بارك الله فيك استاذ محمدعبد العزيز

نحن معك باذن الله

محارب بلا زمان

.................................................................................................................................................................................................

untitled6yk.png

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

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