المبرمج أحمد

كيف تجعل برنامجك يعمل عند بدء تشغيل الوضع الآمن ؟

25 ردود في هذا الموضوع

بسم الله الرحمن الرحيم

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

هذا الموضوع يتضح من عنوانه وهو عبارة عن كيفية جعل برامجك تعمل عند بدء تشغيل نظام التشغيل Windows حتى ولو كان على الوضع الآمن ! ستستغربون كيف يمكن لبرنامج أن يعمل في بدء تشغيل الوضع الآمن، فلا تستعجلوا .

طريقتي في تشغيل برنامج في بدء التشغيل وإن كان يعمل في الوضع الآمن Safe Mode تعتمد على محرر تسجيل النظام Registry وتحديدًا في المسار التالي :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\

عندما تتوجه إلى المسار السابق سوف تجد قيمًا عديدة ابحث عن المفتاح Shell ستجد أن قيمتها الافتراضية ستكون Explorer.exe وبالطبع إذن فهو من أهم ملفات نظام التشغيل .

وفي الحقيقة هناك ملفان يمكنك الإقلاع منهما: أحدهما هو الملف Explorer.exe السابق الذكر ، والآخر هو الملف cmd.exe وهو سطر الأوامر أو موجه الأوامر كما يسميه البعض إذا أردت الإقلاع من سطر الأوامر فما عليك سوى استبدال القيمة Explorer.exe بالقيمة cmd.exe فقط . وعندما تقوم بتشغيل الجهاز في المرات المقبلة لن يمكنك التعامل سوى مع سطر الأوامر ( وهذه ليست مشكلة بل إن هناك أشخاص يفضلون واجهة سطر الأوامر ) .

خلاصة حديثنا : أنه يجب علينا إضافة مسار البرنامج الذي نريد تشغيله إلى المفتاح Shell بعد القيمة Explorer.exe أي يجب أن تكون القيمة كالتالي :

Explorer.exe C:\Program.exe

أو أي مسار آخر تريد تشغيله .

والكود المستخدم لهذه العملية كالتالي :

        Dim R As Object
   Set R = CreateObject("WScript.Shell")

   Const Key = "HKLM\Software\Microsoft" _
           + "\Windows NT\CurrentVersion\Winlogon"

   R.RegWrite Key, 1, "REG_SZ"
   R.RegWrite Key + "\Shell", "Explorer.exe " & App.Path & "\" & App.EXEName & ".exe"

   Set R = Nothing

قد تقولون من أتيت بهذه الفكرة فسأجيب عليكم بأني كنت في الماضي أراقب الفيروسات وأحصنة طروادة التي أحملها بإرادتي من الإنترنت وأرى ما هي التعديلات التي يجريها البرنامج على الـ Registry وفي يوم من الأيام لاحظت أن أحدها يقوم بتشغيل نفسه عند بدء تشغيل الجهاز وعندما حاولت الإقلاع من الوضع الآمن وجدته أيضًا فاستنتجت هذه الطريقة من هذا الفيروس ( وهذه أحد محاسن وفوائد الفيروسات وأحصنة طروادة ) .

وآسف على الاختصار وذلك لضيق الوقت بسبب الامتحانات ( لا تنسوني من صالح دعائكم ) .

وإذا كان لأي منكم سؤال فلا يتردد في طرحه لعلي أحاول الإجابة عليه .

وصلى الله وسلم على نبينا محمد وعلى آله وصحبه أجمعين

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

0

شارك هذا الرد


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

اخي المبرمج احمد

نجح كلامك تماما مع win XP و لكن هل يمكنك مساعدتي مع win98 أو win me ارى انه سوف يتغير مكان ملف الريجسترى و لكن اين المكان الصحيح لا اعرف هل يمكنك مساعدتي

0

شارك هذا الرد


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

بسم الله الرحمن الرحيم

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

اود اولاً ان اشكر الغالي احمد على درسه الجميل بالفعل ... و المفتاح المذكور في شرح الاخ العزيز أحمد يعتبر مطابقاً للمفتاح Shell الموجود في الملف System.ini الذي كان مستخدماً في الإنظمة القديمة 9x مثل الـ Win98 .. و في عائلة الـ NT مثل الـ WinXP يتم كتابة المفاتيح الى الريجستري عوضاً عنه.

لذلك فيمكنك اخي العزيز شمس ان تقوم بكتابة التالي في الملف System.ini في مجلد الـ Windows :

[Boot]
Shell=Explorer.exe xxxxx

استبدل الحروف xxxxx بمسار ملف برنامجك.

بشكل عام و لكي اريح بالي من عناء التفكير في في الموضعين اقوم بكتباة شفرتي ( الريجستري في الاكس بي ) و ( الملف system.ini في الانظمة القديمة ) كنت قد استخدمت دالة الـ API المسماه WritePrivateProfileString كي تقوم بالعمل بالنيابة عني فهي تقوم بتحديد نوع النظام و تقوم بالمطلوب عوضاً عنك .. و هذه دالة قديمة كنت استخدمها :

Private Declare Function WritePrivateProfileString _
       Lib "kernel32.dll" Alias "WritePrivateProfileStringA" ( _
       ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
       ByVal lpString As Any, ByVal lpFileName As String) As Long

Function StartMe(YourProgram As String)
   WritePrivateProfileString "Boot", _
       "Shell", _
       "Explorer.exe " + YourProgram, _
       "System.ini"
End Function

لتشغيل اي برنامج تريده استخدم الدالة StartMe فمثلا اذا اردنا ان نقوم بتشغيل الحاسبة بمجرد تشغيل الوينذوز اكتب السطر التالي :

StartMe "Calc"

و الان لمعرفة لماذا تعمل هذه الطريقة حتى في الوضع الآمن الذي من المفترض ان تتوقف فيه جميع البرامج العاملة في بدء التشغيل .. فالسبب يعود الى كون الملف Explorer.exe هو الوينذوز بشكل مجازي فهو المسؤول عن قشرة النظام ( Shell ) المظهر الذي تراه امامك من سطح مكتب و شريط مهام و معظم البرامج الاخرى تعمل بداخله و من الطبيعي ان يكون هو الملف الذي لابد و ان يعمل حتى ولو كان ذلك في الوضع الآمن ... و ما قمنا به نحن هنا هو تمرير اسم برنامجنا اليه كي يقوم هو بتشغيله و بما انه لا محالة سوف يتم تنفيذه فربنامجنا ايضاً سيعمل معه نظراً للسطر :

Shell=Explorer.exe myfile.exe

فالمسافة الفاصلة بين الـ Explorer.exe و اسم برنامجنا myfile.exe تعني ان برنامجنا سوف يمرر الى الـ explorer.exe كي يقوم بتشغيله ... فمثلاً اذا كتبت في القائمة تشغيل (Run) من قائمة ابدء السطر التالي :

Notepad.exe c:\autoexec.bat

سوف تلاحظ ان برنامج المفكرة Notepad.exe قد قام بفتح ملف الـ c:\autoexec.bat ... وهو بالضبط ما قمنا به فبرنامج الـ exeplorer.exe قام بفتح برنامجنا myfile.exe .... وهذا هو اصل المسئلة بالضبط,

و اخيراً اكرر شكري الجزيل للاخ العزيز احمد.

هذا وربي سبحانه اعلى و اعلم

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

0

شارك هذا الرد


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

السلام عليكم .. .

اود أن اشكر في البداية المتميزين المبرمج أحمد والمبرمج رغيد الطيب على هكذا مواضيع تعم بالفائدة :rolleyes:

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

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

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

.. فالله يوفقكم جميعا

وننتظر أبداعتكم اكثر فأكثر

تقبلو اطرائي اخوكم الصغير هاني

B)

0

شارك هذا الرد


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

السلام عليكم

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

فعلا خلال متابعتي لفيروس قريبا, تقريبا من 3 شهور وجدت أنه رامي نفسه في هذا المفتاح,وقلت لما أحفظ المفتاح عندي في Text File يمكن ينفعني في يوم,بس ما تصورتش انه ممكن يشتغل في ال Safe Mode.

فيه طريقة جديدة برده تستخدمها الفيروسات بس ماجربتهاش علي ال Safe Mode فقط أذكرها للعلم.

وهي مفتاح

HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Scripts\Logon

ويمكن الحصول علي القيمة التي سيتم وضعها بتشغيل برنامج gpedit.msc من Run واختيار User Configuration

ثم Windows Settings ثم Scripts وعمل اضافة ADD لاي برنامج ليشتغل عندالدخول للويندوز,والآن فقط أجزم بأنها لن تنفع علي ال Safe Mode.

لكن ما زلت أجزم بأن أفضل طريقة لتشغيل برنامج هي استخدام ال Services لأنها الطريقة الوحيدة لأنها تعطي المزايا التالية:

- لن يستطيع المستخدم معرفة أن هناك برنامج يشتغل حتي في ال Safe Mode.

-لا يمكن ايقاف الخدمة ابدا باستخدام Net Stop أو Sc Stop .

-حتي إذا عرف المستخدم أن هناك برنامج فلن يجد حل سوي Format بعكس الريجستري لأنها يستطيع أن يقوم بعمل بحث عن مثلا الامتدادExe في الريجستري ويعرف أين يرمي الفيروس نفسه في الريجستري مثلما نفعل عندما نريد مراقبة Trojan مثلا.

-الوحيد الذي سيستطيع أن يغلق البرنامج هو المبرمج.

بالنسبة لموضوع مفتاح exefile فتلك الطريقة كنت أستخدمها لعمل حماية بباسورد علي ملفات ال EXE,لكن لم أختبر أي تأثيرعكسي علي تلك الحركة.

بالنسبة لموضوع حقن البرنامج في برنامج أخر فهيطريقةرائعة لكن فعلا تواجهه مشكلة المساحة الكبيرة,لكن ممكن نتفاداه بالبحث برامج المساحات الصغيرة مثل Notepad حجمه تقريبا 52kb أو PBRUSH.EXE حجمة 20 كيلوأو CALC.exe أو كفاية قوي برنامج Regedit حجمه 133kb علشان كل ما يحاول المستخدم يدخل في ال Safe Mode علشان يحذف البرنامج يقوم يشتغله هناك كمان.

بالنسبة لمفتاح Installed Component فليس عندي أي تعليق عليه.. لأنه حقيقة يعتبر كنز.......... فقط يعيبه أن يدخل ضمن الريجستريات.

أخيرا أحب أن أشكرك علي المشاركة الطيبة,وأشكر أستاذي رغيد الطيب علي الكودات الجميلة.

وأتمني أن يشارك كل عضو بما يعرفه عن هذا الموضوع حتي نستفيد كلنا.

1

شارك هذا الرد


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

شكرا لك اخي المبرمج احمد ، وبالفعل أثبت انه لا مستحيل ، ولكن هذا الامر خطير ، فأخشى ان يتم استعمالها بشكل خاطئ ...

0

شارك هذا الرد


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

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

و الشكر للجميع

0

شارك هذا الرد


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

الأخ Pharaonic_Guy ، كلامك صحيح جدا بالنسبه لأفضلية عمل الخدمات Services ، ولكن أى خدمه يمكن أن يتم إلغائها أو إلغاء تشغيلها فى بداية عمل النظام من msconfig/Services

كنت قد بحثت طويلا عن كيفية عمل Services بإستخدام فجوال بيسيك ، ولكنى توقفت عن البحث ، هل تعرف طريقه مضمونه لذلك ؟؟

الأخ النبهاني ،

هذه معلومات سلاح ذا حدين ، يمكن إستخدامها إستخدام جيد فى البرامج المضاده أمثال نورتن أو البرامج الخدميه أو تضطر فى أن تقوم بعمل خدمه Service ليخدم على البرنامجك الذى يعمل عليه المستخدم ، مثلا و يمكن إستخدامها كفيروسات ... الأهم هو المعرفه .

شكرا خاصأ للمبرمج أحمد و الأستاذ رغيد الطيب ،،

0

شارك هذا الرد


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

هل يمكن تشغيل برنامج مع شاشة دخول الويندوز

===

مثل الصورة

12_3420051159480.6584284.JPG

post-43099-1112554510_thumb.jpg

0

شارك هذا الرد


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

ماشاء الله عليكم فعلا درس مفيد

0

شارك هذا الرد


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

سلام

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

أرجوكم :)

و السلام

0

شارك هذا الرد


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

اخي اعتقد و الله اعلم انه اذا قمت بعمل خاصية visible للفورمة الخاصة ببرنامجك تساوي false فلن يلاحظ المستخدم

هذا هو الامر بكل بساطة و العلم عند الله

0

شارك هذا الرد


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

جهد جبار اخي المبرمج احمد اتمنى لك التوفيق

وبالفعل موضوع يستحق التثبيت

0

شارك هذا الرد


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

بالفعل أفكار رائعه و بالنسبه لحقن برنامج فى آخر

يجب هنا أختيار برنامج لا يشك به المستخدم

أى برنامج يعمل أساسا مع بدء التشغيل

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

ودى فكرة برنامجى أرجو المناقشه

0

شارك هذا الرد


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

صراحة موضوع جيدجيداً و خبرا ماشأللهْ ممتازين جيداً حل ممكن واحد اساعدني في اجاد كود اتحكم علي USB Potrs لاعملة ُEnable/Diesble

و شكراً........................

0

شارك هذا الرد


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

والله يا جماعة أنتو فعلاً مبدعيـــــن

جزاكم الله خيراً

0

شارك هذا الرد


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

والله إبــــــداع × إبـــــــداع

ما قصرتوا والله يعطيكم ألف عافية

0

شارك هذا الرد


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

شكرااااااااااااااااااااااااااااااااااااااا

0

شارك هذا الرد


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

موضوع جميل و رائع

جـزيت عنا خيرا

0

شارك هذا الرد


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

ممتاز, ولكن هل يمكن أن نقوم بإقلاع للبرنامج بدون log on للويندوز أن أن نحول البرنامج إلى خدمة ويندوز؟

0

شارك هذا الرد


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

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

شكرااا لك اخي المبرمج احمد على الجهد المبذول

لقد نجحت عملية تشغيل البرنامج مع الحاسوب ،لكن ما أريده هو هل توجد طريقة أخرى لتشغيل برنامج ما مع اشتغال الحاسوب وجعله في المربع السفلي على الأيمن (tray system)

0

شارك هذا الرد


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

a;شكرا اخي على الدرس المفيد

0

شارك هذا الرد


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

مشكور جدا

0

شارك هذا الرد


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

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .