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

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

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

السلام عليكم اصدقائى

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

لكن اصدقائى انا تعبت جدا من شىء اسمه بنية الملفات التنفيذية

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

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

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

سوال منفصل :

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

هكذا

01010111110000100010010011011110011010111101110111110011001001111

ام هكذا

0011 0110 1111 1101 111001 11100 11 1001 111 0 11 00 1 1 1 1 1

وهل بطريقة كل 4 بت منفصلة عن الاخرى

ام كل 8 بت منفصلة ام كلها وراء بعضها والمعالج يقسمها بطريقته

هاتين هما المشكلة الذى تواجهنى الان

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 4 يونيو 2006 في 22:20

#2

يا حبيبي ياحمادة هناك موضوع للأخ أحمد غريب جزاه الله خيرا يشرح فيه بنية الملف النفيذي PE إبحث عنه

-

8 بت

d4baa0.gif
#3

ياباشا انا عاوز مثال عملى

اقدر افهمه

وافهم طريقة كتابة الملف التنفيذى سواء exe

وطريقة التعامل مع ملفات الصور ايضا

اريد معلومات كبيرة عن نظام الملفات فى نظام ويندوز

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 5 يونيو 2006 في 20:30

#4

ياشباب

اريد ان اعرف فقط كيف اقوم بكتابتها

امامى مجموعة من الاكواد هكذا

image nt structer

sizeofcode dw ?

:

:

:

end structre

امامى كود بهذا الشكل وهو من احدى بيانات مقدمة الملف التنفيذى

#5

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

اما الباقي فهو ان تشكل الملف بتمثيل هكس (ست عشري) للبايتات المؤلفة للملف وان تلتزم بصيغه القياسية.

جرب اكتب ملف اسمبلي يظهر MessageBox فقط واخر بدونها وادرس الفرق من خلال التنقيح وانظر ما تم التعديل في الترويسات headers وفي الكتلة التنفيذية للبرنامج.

Do as I say, not as I do

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

#6

السلام عليكم

مشكلتك يا حمادة انك تفتقر للاساسيات, انا دلوقت فهمت إنتا عايز تعمل إيه بالظبط..

إنتا عايز تفتح notepad وتكتب 010101010 كدا اهه وبعد كدا تحفظ الملف بإسم test.exe وتشغله.. صح ؟

الكلام دا ما ينفعش لان notepad حتحفط الكتابة على شكل ascii يعنى كل صفر حتحفظة على اساس إنه الرقم 30 بالباينرى والرقم 1 حتحفظة على اساس إنه 31 وحيبقى شكلة كدا اهه 3031303130313031 فهمت يا حمادة..

ياريت بقى تقولي هل إنتا عارف الفرق بين الascii والbinary ..

طيب إيه الحل؟؟

الحل بسيط اعمل برنامج صغير مجرد إنه يشتغل ويقفل..

وبعد كدا إفتحة بالNotepad ,وشوف حيطلع لك إيه؟؟ انا اقول لك..

حيطلع لك اشكال غريبة ورسومات وشه بيضح ووش مكشر الخ..

يعنى مش حيطلع 010010010 زى ما إنتا فاهم..

إفتح نفس البرنامج بمحرر برامج Hex Editor حتشوف الارقام 010101010 إلى إنتا بتدور عليها ...

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

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

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

#7

موقع برنامج HIEW ...اعتقد انه سيفيدك كثيرا.

http://webhost.kemtel.ru/~sen/

تم تعديل هذه المشاركة بواسطة Xacker في 6 يونيو 2006 في 15:12

#8

السلام عليكم

أخي allko أرجو الا ترفق برامج غير مجانية

Sen يبذل مجهود يقدر...

-

أخ حمادة، ما تريده يحتاج وقت لفهمه

أفترح عليك أن بيدء بالملفات التنفيذية .com التي ليس بها Header

ثم تنتقل لملفات DOS القديمة EXE

ثم أخيرها وفقط بعد فهم السابقة تنتقل لملفات PE

d4baa0.gif
#9

استبدلت النسخة المقرصنة برابط موقع البرنامج للوصول الى اخر تحديثات منه.

Do as I say, not as I do

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

#10

عموما البرنامج ليس غالي الثمن...فقط 99$ :D

(هل يحاول المبرمج خداع نفسه ام ماذا؟ -_- هو يبيع برنامج يستخدم من قبل الكراكرز بالدرجة الاولى فهل يتوقع ان يدفعوا له $100 :lol:

عموما فبرنامجه قد افاد الكثيرين...ربما اقترح عليهم عمل حملة تبرعات لدعم المبرمج :lol: كل شخص يدفع سنت واحد :lol: )

تم تعديل هذه المشاركة بواسطة allko في 6 يونيو 2006 في 15:36

#11

اخ احمد غريب

انا مقدر انك تعبت معايا لكن

انا الان استخدم لغة السى واقوم ببناء ملف وحفظه بامتداد exe

ماذا افعل لكى اكتب ملف تنفيذى به 0010101

هل تقصد اننى اقوم بكتابة الكود بطريقة النظام السادس عشر hex مثلا

ام ماذا استخدم

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 6 يونيو 2006 في 16:10

#12
اقتباس
(هل يحاول المبرمج خداع نفسه ام ماذا؟ هو يبيع برنامج يستخدم من قبل الكراكرز بالدرجة الاولى فهل يتوقع ان يدفعوا له $100

لا، لن تجد في المستقبل نسخة مقرصنة له

الا اذا قا بذلك مراهق... مثل الذي قام بذلك مع النسخة التي ارفقها الأخ allko

في النسخة دليل غباء ذلك الشخص من AHTeam :lol:

و اسف للخرون عن موضوع حمــــــــــــــــــــــادة

أخ حمادة،العنوان الصحيح لهذا الموضوع: كتابة الملف النفيذس يدويا، دون استخدام compiler

d4baa0.gif
#13

ماذا افعل لكى اكتب ملف تنفيذى به 0010101

انا الان كتبت برنامج بلغة السى وقمت باستخدام الامر FILE *p وقمت بفتح ملف والخ

الان سيقوم البرنامج بعملية كتابة التعليمات 01010 الى هذا الملف

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

انا الان فهمت انه لنوت باد ما ينفع اعمل ايه الان

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

اريد حلا

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 7 يونيو 2006 في 23:17

#14

بص يا حمادة

لو إنت تعرف الأساسيات كويس كان ممكن حتى تحمل الملف إللي في ميكروسوفت عن ال PE File Format و بإستخدام برامج التنقيح زي Olly تشوف كل حاجة بنفسك و تستنتج

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

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

لو عايز تبدأ صح يا حمادة ذاكر كويس جدا الرياضيات (و بخاصة المتقطعة) و الفيزياء و بخاصة الكهربية

و بعدين إقرا عن الإلكترونيات و بعدين الهاردوير و ال Computer Architecture و الميكروبروسيسور إلخ ....

و تبدأ تقرا عن Operating System Concepts و تعرف نظام التشغيل بيتكون من إيه و إذا بيتعمل ال Multi Tasking و الحاجات دي كلها

طبعا الفروع كتيرة جدا صعب الواحد يذكرها كلها و لكن قصدي إنك المفروض تبدأ صح و تصبر على العلم لإن إنت عامل بالظبط زي الولد إللي لسه في الإبتدائي و بيسأل إذاي يصنع جهاز تليفيزيون أو كمبيوتر ؟!!

و سبب إنك مش قادر تستوعب المواضيع إللي بتشرح الحاجات دي زي ما قولت قبل كده إنك مش فاهم المصطلحات إللي بتتكتب كويس و بالتالي كل ما تلاقي كلمة مش فاهما تحاول تدور عليها تلاقيها عايزة كتاب بحالة تقراه و تييجي تروح تقراه تلاقي الكتاب ده عايز حاجة تانية تقراها قبله و هلم جرا ...

و ده كله لإنك معرفتش تبدأ صح و مكانش عندك صبر

#15

حنرجع ونقول اساسيات تانى

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

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

اقتباس
طبعا الفروع كتيرة جدا صعب الواحد يذكرها كلها و لكن قصدي إنك المفروض تبدأ صح و تصبر على العلم لإن إنت عامل بالظبط زي الولد إللي لسه في الإبتدائي و بيسأل إذاي يصنع جهاز تليفيزيون أو كمبيوتر ؟!!

انا مازلت فى الابتدائى متشكر جدا

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

ويمكننى عمل برامج مثلها لو اردت

لكن مشكلتى هى الملفات الثنائية 0100 ازى اكتبها او اقرأءها

انا عارف ان كل ملف له PE headr طيب انا فاهم تقسيمة الهيدر فيل

Dos mz heade

Dos stu

PE headr

section table

section 1

section 2

.....

.....

section n

صح

كيف انفذهم فى ملف ثنائى كيف

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 7 يونيو 2006 في 23:41

#16

يا حمادة مش قصدي و الله

يا سيدي أنا كانت بتحصلي نفس المشكلة برضه عايز أعرف كل حاجة و لما أجي أعملها أكتشف إنها عايزاني أتعلم حاجات كتييييييير و لسه بدري عليها :D

لغاية معرفت البداية الصح و لقيتها في الكلية

بالنسبة لبرامج الهكس فهي بتتعامل مع كل بايت على أساس إنها خلية Hex

طبعا بتتكون من خانتين لإن كل رقم هكس عبارة عن 4 بيت بس و البايت بتتكون من 8 بيت يبقى بنحتاج خانتين هكس لتمثيل خلية هكس بتمثل البايت

المهم نزل أي برنامج هكس

لو عايز تكتب بواحدات و أصفار إفتح الألة الحاسبة إللي في ويندوز

حولها ل Scientific يعني علمية

إختار نظام الأعداد Bin

إكتب واحدات و أصفار زي منتا عايز

و كل مرة دوس على Hex علشان يحولهالك لHex

في برنامج ال Hex Editor إللي إنت فاتحة إنقل فيه البييانات بالهكس

و بعدين هاتله Save

بس و إنتهى الموضوع يا سيدي

#17

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

اعتقد انك مخطاء فى هذا الجزء

اقتباس
بالنسبة لبرامج الهكس فهي بتتعامل مع كل بايت على أساس إنها خلية Hex

طبعا بتتكون من خانتين لإن كل رقم هكس عبارة عن 4 بيت بس و البايت بتتكون من 8 بيت يبقى بنحتاج خانتين هكس لتمثيل خلية هكس بتمثل البايت

لماذا ؟

اولا تخيل انك تصمم نظام تشغيل الان

ماذا سيحدث سيتم نقلك من خلال البيوس الى العنوان 0000:07c0

وتخيل فى هذا الجزء انك تقول

mov ax,0x07c0h

ماذا سيحدث

اول 0000 وهى تمثل الجزء الاول وهو القطاع اما 07c0 وهى القسم

كيف يتم ازحة العنوان 07c0 الى AX كرقم

سيتم اخذ 07 وايجاد قيمته بالطريقة الثنائية 00000111 ويتم وضعها فى الجزء الادنى من AX وهو AL وهو يمثل byte كامل

ثم

يتم اخذ القيمة C0 وايجاد قيمته بالطريقة الثنائية ويتم وضعها فى الجزء الاعلى من AX وهو AL وهو يمثل byte كامل

اذا قمت بضم محتويات AL الى AH سيكون قيمة AX هى العنوان 07c0 وهو القسم فقط

اى كل خانتين 07 يساوى بايت

لان اذا كان كل رقم هكس يحتاج بايت فلا اعتقد ان المسجل AX سيكفى بل ستحتاج لكتابة قيمته فى مسجل يمكنه التعامل مع اربع بايت EAX سيصلح فى هذه الحالة

هذه من اساسيات الحاسب اذا كنت تعلم

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 8 يونيو 2006 في 01:28

#18

يا حمادة لما ذا لا تتبع النصيحة

ابدء بالملفات .com

ثم DOS EXE

لتصل ل PE

d4baa0.gif
#19

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

انا لا اريد بناء مترجم موجه لويندوز الان

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

انا حسب ما فهمت من كلامكم

انى اقوم بكتابة الاكواد والحروف على اساس انها هكس يعنى 0 = 30 اما 1 = 31 هذا صحيح اما هل تقصد شىء اخر

كل كلامكم انه لابد انه يكون هكس

طيب لو فتحت النوت باد وكتبت ما يقابل 0 بالهكس وما يقابل 1 بالهكس هل هذا ينفع

اريد ردا واضحا

هل استخدم النوت باد ولا انشاء file من داخل لغة السى

#20

انسى كل شيئ تعرفع عن DOS او Wind0ws أو EXE header الأن

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

سواء تستخدم برنامج تحرير في النظام 16 مثل WinHex او تكتب بريمج بأي لغة C او DELPHI أو Assmbly او تستخدم Debug

ما ذا تختار ؟

ثم نكمل الحديث

d4baa0.gif
#21

لغة c

#22

حسنا اكتب بريمج بنشئ ملف ويكتب به حرف D فقط

ارفق البرنامج هنا، السورس و الملف التنفيذي

d4baa0.gif
#23

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

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 8 يونيو 2006 في 13:55

#24

لا ياحمادة

هذا يطبع Hello world على الشاشة

اريد يطبع فقط حرف واجد D و في ملف , ليس في الشاشة

d4baa0.gif
#25

البرنامج يقوم باستلام القيمة من المستخدم ويضعها فى الملف على درايفر C:\text

استخدم البرنامج وانظر الى الكود سترى انه لم يقوم بطباعة كلمة HELLO WORLD

بل يطبع كلمة enter code ثم يستقبل الحرف من الدالة getchar ويضع القيمة داخل متغير CH ثم يقوم بفتح ملف اسمه text على c:\ ويقوم بطباعة الحرف داخلة

ويمكنك ان تعدل به كما تريد من الدالة fprintf وتغير وضع الطباعة داخل الملف

نظام hex او dec او oct

x% او c% او d% او o%

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 8 يونيو 2006 في 13:42

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

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