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

كيف أجعل برنامجي يشتغل مع بداية الحاسب...

مغلق
بدأه SIFE في 31 يناير 2008 · 24 رد · 2,497 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الأمر بسيط كيف أجعل برنامجي يشتغل مع بداية الحاسب حيث برنامجي يعتمد على طباعة جملة .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#2

السلام عليكم هذا الكود يعمل المطلوب:

#include<stdlib.h>
int main()
{
char c[] ="reg add HKLM\\software\\microsoft\\windows\\currentversion\\run /v myprgram /t REG_SZ /d \"%SystemRoot%\\system32\\notepad.exe\"" ;
system( c );
return 0;
}

فقط بدل الى بالاخضر.

tvquran_6.gif

#3

و يمكنك أن تنقل شورت كات للستارت أب

C:\Documents and Settings\%username%\Start Menu\Programs\Startup

تم تعديل هذه المشاركة بواسطة croconile في 31 يناير 2008 في 07:28

rasool4k.gif

[وسط]mimetex.cgi?MSN:root@root-shell.net.

[/وسط]

#4

ياأخي لم أقصد مع بداية تشغيل Win بل مع بداية إقلاع البيوس مثل نظام تشغيل ،طرح الأخ JAAS طريقة مثل هذه لكن على ASM و فلوبي .

تم تعديل هذه المشاركة بواسطة SIFE-C في 31 يناير 2008 في 12:24

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#5

قرأت هذا الموضوع ؟؟

يجب ان تكون هناك بعض الشروط ...

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#6
اقتباس
الأمر بسيط كيف أجعل برنامجي يشتغل مع بداية الحاسب حيث برنامجي يعتمد على طباعة جملة .

من قال ان هذا الامر بسيط ..

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

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#7
اقتباس
اتوقع انه يحتاج الى دراسة متعمقة لانه لايوجد شئ جاهز في لغة السي ++ لتمكنك من تشغيل برنامجك مع بداية الحاسوب ..

بل بالسي أخي سنان محمد صالح

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#8

الأخ الفاضل ...

إذا أردت ذلك مع بدء نظام تشغيل Windows NT or Later فقد يفيدك هذا الموضوع: تشغيل البرنامج كـ System Service

شكراً

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#9
اقتباس
بل بالسي أخي سنان محمد صالح

افهم ما تريده .. سواء بالسي او بالسي بلس بلس او اي لغة اخرى ..

ولكن ما اقصده انه يجب عليك برمجة Boot Sector له .. او على حسب ما اعرف هناك برامج جاهزة تولد لك boot . . ومع هذا البوت تستطيع تنفيذ اي برنامج تحتاجه قبل الدخول الى الوندوز .. اي عند مرحلة BIOS ...

اذا هذا طلبك فهذا جوابي واذا لم افهم سؤالك وضح اكثر لنفهم ..

تحياتي العطرة ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#10
اقتباس
اذا هذا طلبك فهذا جوابي واذا لم افهم سؤالك وضح اكثر لنفهم ..

أخ مثلك و لايفهم أرجوا من الله أن يرزقني بتواضعك .

كيف أبرمج boot sector أو دلني على برامج مثلها .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#11

ألا يمكنك بعيدا عن الويندوز أن تعدل الـbios settings ليعمل البووت من الديسك ليس من الهارد ديسك HD[0] شرط ألا تعتمد على أي من الـمكتبات DLL للويندوز وأن يكون 16bit ليس 32 ؟

rasool4k.gif

[وسط]mimetex.cgi?MSN:root@root-shell.net.

[/وسط]

#12

كل ما وجدته كود اسمبلي , ولا كود سي ... ولا اظن انه يوجد واحد اصلا

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#13
اقتباس
كل ما وجدته كود اسمبلي , ولا كود سي ... ولا اظن انه يوجد واحد اصلا

حقيقة أنت تصيبني بخيبة أمل :nose_pick: :thumb_down: :unsure:

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#14
اقتباس
كل ما وجدته كود اسمبلي , ولا كود سي ... ولا اظن انه يوجد واحد اصلا

حقيقة أنت تصيبني بخيبة أمل

هذه حقيقة .. وليست اي شئ اخر ..

لانه لا اتوقع انه يوجد boot مبرمج بالسي .. لان الاسمبلي في هذه الامور اسرع من السي ..

حيث انها تكون اقرب من العتاد في مثل هذه الامور .. فتفضل في برمجة boot sector ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#15

حقك عليا , ابحث كما تريد ربما تجد واحد في أندروميدا.

بالرغم من وضوح الكود بالأسمبلي وتوفره مازلت تصر على السي ... انت حر !

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#16

أستاذي GamingMasteR كيف لا يوجد , إذا كيف يتم تنصيب الويندوز أو اللينكس بعيدا عن بيئة الويندوز , يمكنك بلا شك تشغيل أي برنامج لأن جهاز الكمبيوتر يفهم الملفات البيناري.

جرب بأن تترجم ملف C وليكن الـhelloworld.c

#include <stdio.h>
int main()
{
	printf("Hello World/n");
	return (0);
}

ضعه على الديسك ثم سوي ريستارت و إضغط del قبل تحميل الويندوز و ادخل على Advanced bios features

Advance%20BIOS%20selection.gif

و إختار البو وتيكون من الديسك و قول لنا ما الناتج :)

rasool4k.gif

[وسط]mimetex.cgi?MSN:root@root-shell.net.

[/وسط]

#17
اقتباس
يمكنك بلا شك تشغيل أي برنامج لأن جهاز الكمبيوتر يفهم الملفات البيناري.

لا لن يفهم ! الكود الناتج عبارة عن ملف COFF لن يفهم المعالج "بنيته"

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#18
اقتباس
إذا كيف يتم تنصيب الويندوز أو اللينكس بعيدا عن بيئة الويندوز , يمكنك بلا شك تشغيل أي برنامج لأن جهاز الكمبيوتر يفهم الملفات البيناري.

من اين لك هذه المعلومات الخطيرة ..

هل تعلم لو كان كلامك صحيح .. لاصبحت فيروسات البيوس اكثر من سكان العالم ..

لا يمكنك ان تقوم بهذا الفعل ..

سأشرح لك السبب ..

الفلوبي ديسك او الاقراص التي تريد ان تجعل البوت الخاص بالنظام منها هي تحتوي على بوت ..

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

والبوت بدوره يشغل برامجك ..او يوجه الى برامج ..

انظمة التشغيل الوندوز واللينكس وغيرها .. عندما يبدأ البيوس بالعمل .. يبحث عن موقع Bootable .. اذا كان من الهارد .. فانه سيتجاهل الفلوبي ديسك والاقراص .. فيبحث عنه في الهارد ..

وبعد ان يجد ملف البوت فانه سيتوجه الى النظام او البرامج التي يشغلها ذلك البوت ..

اما انك تضع برنامج في فلوبي ديسك ثم تجعل الاقلاع من الفلوبي لكي يعمل البرنامج .. هذه حقيقة لم اسمع بها من قبل .. لانني لا اتوقع انها ممكنه او اتوقع مستحيله .. مالم تبرمج بوت سيكتور خاص بها ..

فكل برامج الاقلاع التي تعمل لايمكن عملها مالم يتوفر هنالك بوت ..

افتح الان قرص تنصيب ال XP .. ستجد البوت به ..

تذكرت .. الان ضع انت فلوبي في جهازك واذهب الى مشغل ال A اقصد الفلوبي .. وفرمت ذلك الفلوبي مع تفعيل خيار الموجود في نافذة فرمتت الفلوبي والذي يخبرك بان يجعل الفلوبي حاويا على Boot ..

بعدها هذا الفلوبي يمكن جعل الاقلاع منه لانه يحتوي على بووووووووت .. اما غيره فلالالالا..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#19

:S ظننت أنني يمكنني أن أجعل الكمبيوتر يأقرأ برامجي بدون وسيط 3rd party من ويندوز و غيره .

موقعين لعلهم يفيدوك.

bootdisk.com

computerhope.com/boot.htm

rasool4k.gif

[وسط]mimetex.cgi?MSN:root@root-shell.net.

[/وسط]

#20
اقتباس
ظننت أنني يمكنني أن أجعل الكمبيوتر يأقرأ برامجي بدون وسيط 3rd party من ويندوز و غيره .

لا عليك اخي :thumb_up: , كلنا نتعلم هنا :)

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#21
اقتباس
ظننت أنني يمكنني أن أجعل الكمبيوتر يأقرأ برامجي بدون وسيط 3rd party من ويندوز و غيره

كما قال الاخ Gaming master ..

كلنا هنا لنتعلم .. وها انت استفدت معلومات لك ..

تحياتي العطرة ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#22

بارك الله فيكم جميعا :]

rasool4k.gif

[وسط]mimetex.cgi?MSN:root@root-shell.net.

[/وسط]

#23

حتى الآن لم أجد إجابة .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#24

الأخ الفاضل ...

دعنا أولاً نتفق على شيئ ... فى أى نظام تشغيل، عندما تشرع فى تشغيل برنامج (ملف تنفيذى)، يتولى نظام التشغيل هذه المهمة، وتتلخص بإختصار فى:

  1. البحث عن أسم الملف فى الديسك، فى الفهرس الحالى - أو فهارس أخرى - وهذا بالطبع يعتمد كلياً على نواة نظام الملفات المستخدم.
  2. فى حالة العثور على ملف بهذا الأسم، يستمر نظام التشغيل، بتولى ببعض الأعمال الأخرى، مثل فحص الأمان والصلاحيات وذلك بالنسبة لنظم الملفات التى تحتوى على هذه الخاصية. (وفك التشفير لاحقاً فى الذاكرة إذا كان الملف مشفر)
  3. يستمر نظام التشغيل - من خلال مدير الملفات الذى هو جزء من نظام التشغيل - بتحديد الأماكن (Clusters) المخزن عليها هذا الملف. (قد تكون الـ Clusters متسلسلة أو متفرقة Fragmented)
  4. ثم يبدء بقراءة أول جزء فى الملف Header والتى تحتوى على معلومات يفهمها نظام التشغيل.
  5. بناءاً على معلومات الـ Header يبدء نظام التشغيل فى حجز الذاكرة لهذا البرنامج، وتتابع قراءة كل أو بعض أجزاء الملف إلى الذاكرة.
  6. تحميل بعض الملفات المرفقة بنفس الأسلوب السابق (مثل DLL فى ويندوز)، والتى لا يعمل البرنامج بدونها، ومعلومات هذه الملفات مدمجة مع الملف التنفينذى بالطريقة التى يفهمها نظام التشغيل.
  7. يتم نقل التحكم للبرنامج فى الذاكرة.
  8. يقوم البرنامج بالاستفادة من خدمات نظام التشغيل واستدعاء دواله الجاهزة والمحملة مع نظام التشغيل(مثل دوال API فى ويندوز، وخدمات المقطع Interrupt 21h فى دوس).
  9. عند كتابة برنامج بلغة الـ C أو ++C أو أى لغة أخرى، يقوم مترجم اللغة Compiler عند إنشاء الملف التنفيذى يتحويل كل أمر إلى المناسب له من دوال أو خدمات النظام عن طريق المكتبات الجاهزة المدمجة مع المترجم، ثم إضافة الـ Header للبرنامج بالشكل الصحيح الذى يفهمه نظام التشغيل.
  10. مترجمات السى متععدة الأنظمة Multi Platforms، بحسب النظام الذى تختاره، يقوم الـ Compiler بتحديد المكتبات والـ Header المناسبة (DOS, Win16, Win32, Win64, Symbian, ... etc).

عند تشغيل الجهام وبعد إجراء الاختبار الذاتى POST يبدء فى نقل التحكم إلى نظام التشغيل على القرص، عن طريق التالى:

  1. وطبقاً لتسلسل اولويات الإقلاع Booting المضبوط عليه الجهاز.
  2. تحميل أول قطاع فى القرص (Head:0 - Track:0 - Sector:1) إلى الذاكرة فى العنوان 0000:7C00. (الذاكرة فى الـ Real Mode وليس Protected Mode)
  3. فحص أخر 2 بايت فى هذا القطاع، (لابد أن تكون قيمتهم 55 AA).
  4. إذا كان كذلك يتم نقل التحكم إلى هذا العنوان، 0000:7C00، ويتولى الكود الموجود فى الـ Boot Sector مسؤلية تحميل نظام التشغيل.

كما تلاحظ أن هذا الكود صغير الحجم نسيباً (512 بايت فى الأقراص غالباً، وقد يصل إلى 2048 بايت فى الأقراص المدمجة CDs)، لذا يستغل هذا الجزء من الكود فى أغلب الأحيان إلى هدف واحد وهو تحميل المزيد من الكود بإقل خطأ ممكن (لاحظ لا يوجد حتى الأن نظام إدارة ملفات).

قد يكون المزيد من هذا الكود المراد تحميله موجود فى قطاعات Sectors محددة مسبقاً للتسهبل، أو فى ملف يحاول هذا الكود الصغير البحث عن هذا الملف لتحميله بنفس الطريقة التى استخدمها نظام مدير الملفات المستخدم فى تخزينه (وهذا ما تبحث عنه).

وكما تلاحظ لتكتب برنامج بالسى لزرعه فى الـ Boot Sector لابد أن يكون لديك مترجم مخصص لهذا الغرض، ليقوم بضبط كل هذه المتغيرات.

ولابد أن يكون هذا المترجم لا يعتمد على أى نظام تشغيل - حتى هذه اللحظة لم يتم تحميل أى نظام تشغيل بعد - ولكن فقد يعتمد على خدمات الـ BIOS وهى المقاطع (Interrupt 00 - 1F)، أو نظم الإدخال والإخراج الاساسية والقياسية للتعامل مع المكونات المادية (Ports).

فلو فرضنا مثلاً جملة printf تستخدم Int 21h ، أو تستدعى الدالة WriteConsole، فلن تصلح للغرض الذى تنشده.

لذا يجب عليك أولاً الحصول على مترجم للغة السى يكون مجهز بمكتبات تعتمد على استخدام خدمات الـ BIOS فقط، وإخراج كود لهذا الغرض، إما أن يكون جاهز لوضعه مباشرتاً على الـ Boot Sector، أو كتابة كود أسمبلى صغير يتم وضعه على الـ Boot Sector يقوم بتحميل ملفك (المكتوب بالسى) للذاكرة وتنفيذه.

قد يفيدك مترجم ++C المرتفع الثمن والمخصص لكتابة أكود ROMed Cod لأجهزة x86 ويعمل فى جميع إصدارات ويندوز: Paradigm C++

اقتباس
Include IDE, C/C++, Compiler, Debugger, C++ Browser, Assembler, Linker-Relocator, Remode Debug via a target monitor and a serial link

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

ملحوظة:

  1. كود مايكروسوفت الخاص بالـ Boot Sector لنظم DOS و Windows 9x ، يقوم بالتأكد من وجود الملفين IO.SYS وMSDOS.SYS ثم تحميل IO.SYS للذاكرة ونقل التحكم إليه، (يمكنك مراجعة الكود للإستفادة).
  2. كود مايكروسوفت الخاص بالـ Boot Sector لنظم Windows XP ، يقوم بالتأكد من وجود الملف NTLDR ثم تحميله للذاكرة ونقل التحكم إليه، (يمكنك مراجعة أيضاً للإستفادة).
  3. يمكنك الحصول على الـ Boot Sector بإستخدام برنامج debug.exe الموجود مع أنظمة التشغيل دوس وويندوز
    CONSOLE
    C:\>Debug
    -L 7C00 2 0 1
    -U 7C00
    0000:7C00 EB3C JMP 7C3E
    0000:7C02 90 NOP
    ...
    ...
    -U 7C3E
    ...
    ...
    -U
    ...
    ...
    -D 7C00 7DFF
    -RCX
    CX 0000
    :200
    -NC:\TheBoot.bin
    -W 7C00
    -Q
    C:\>dir TheBoot.bin
    00/00/2000 00:00 AM 512 THEBOOT.BIN

شكراً

تم تعديل هذه المشاركة بواسطة Eng. Usama El-Mokadem في 5 فبراير 2008 في 21:53

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#25
اقتباس
حتى الآن لم أجد إجابة .

اجابة على ماذا ...؟؟

كل هذا ولم تفهم الموضوع ..

اقرأ رد لاخ Eng. Usama El-Mokadem فهو جميل ومفصل ..

وباختصار ..

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

هذا كل ما عليك فعله .. (شفت كيف العمليه سهله ) ..

تحياتي العطرة ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

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

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