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

هل يمكن ان تحذف نهائيا برنامج قيد التشغيل

مغلق
بدأه Siner في 30 أغسطس 2005 · 3 رد · 1,737 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

المعروف ان نظام التشغيل يعطى رساله عند محاوله حذف ملف تنفيذى مازال قيد التشغيل تفيد بأن الدخول رفض لانه مازال يعمل

Access Denied

وهذا لآن نظام التشغيل لأبقاء تشغيل الملف التفيذى يعتمد على وجوده على الهارديسك لكى يقراء منه او يصل لكل مايحتاج اليه من موارد يحتاجها الملف التفيذى لأستمرار تشغيله وهو ينشىء لذلك Data Stream بين الملف على الهارديسك وبين الجزء الذى حمله الى الرام

وهو header الخاص به ,والذى يتم حجز مكانه فى الذاكره ديناميكيا بواسطه النظام وبدون تدخلنا ...

حسنا وبدون تطويل لأن شرح عمل الملفات التنفيذيه طويل وقد تم الحديث عنه بالتفصيل فى منتدى الأسمبلى فلا داعى لشرحه ثانيا

نعم يمكن لمستخدم لغهVB ان يحذف اى برنامج يقوم بتنفيذه بدون ان يغلقه (اى وهو مازال قيد التشغيل)

كيف ذلك ؟

ببساطه ان يتم نسخ الملف التنفيذى كاملا بالذاكره ومن ثم تشغيله من هناك B)

الكائن OLE طبعا غنى عن التعريف

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

واضبط خاصيه Class = Package

ثم باستخدام اى خاصيه من الأثنين Action=7 او DoVerb ينفذ البرنامج

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

المهم هنا هو

كيفيه فعل ذلك ؟ ؟ اى كيف استطاع OLE ان يفعل ذلك ؟

الجواب هو انه قام بنسخ الملف التنفيذى الى الذاكره كاملا فى هيئه PE image

اى قام ديناميكيا بحجز مساحه للــ PE Image كاملة وتنفيذ الملف من الذاكره

والمسؤل عن تلك العمليه برنامج يسمى Packager و لو قمت بتفيذ الخطوات السابقه ونفذت البرنامج

اذهب الى TaskManager وانظر فى الProcess

ستجد سيرفيس اسمه يبدا بالحروف PKG ثم رقم عشوائى ثم الأمتداد وهو exe

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

ولكن الذى اريد فعلا معرفته هو كيف قام مطورى OLE بمايكروسوفت بعمل ذلك (اريد كود طريقه عمله)

لقد حاولت كثيرا لمعرفه ذلك ,وتوصلت لكثير من الأشياء وأكواد رائعه ومفيده لكن طبعا ليست بالVB

لكن عندى بعض الأمل ان اتوصل لعملها بالVB ان شاء الله

وعلى الأقل حاليا عرفت اغلب دوال API الطلوبه لعمل ذلك ولكن ينقصنى ترتيب افكارى + قراءة اكثر

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

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

#2

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

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

أخي العزيز :: Siner :: بارك الله فيك على طرحك لمثل هذه المواضيع

اقتباس
كيفيه فعل ذلك ؟ ؟ اى كيف استطاع OLE ان يفعل ذلك ؟

الجواب هو انه قام بنسخ الملف التنفيذى الى الذاكره كاملا فى هيئه PE image

اى قام ديناميكيا بحجز مساحه للــ PE Image كاملة وتنفيذ الملف من الذاكره

والمسؤل عن تلك العمليه برنامج يسمى Packager و لو قمت بتفيذ الخطوات السابقه ونفذت البرنامج

اذهب الى TaskManager وانظر فى الProcess

ستجد سيرفيس اسمه يبدا بالحروف PKG ثم رقم عشوائى ثم الأمتداد وهو exe

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

عندما تقوم بتنفيذ الكود التالي :

OLE1.DoVerb

فإنه يقوم يإنشاء نسخة من الملف المدمج في أداة OLE1 إلى مجلد Temp والذي تجده في المسار التالي :

C:\Documents And Settings\<username>\Local Settings\Temp

هذا بالنسبة لويندوز XP و 2000 أما في ويندوز 98 و ME فإنه يوجد في المسار التالي :

C:\Windows\Temp

مثال : اسم الملف يكون مثل التالي : PKG50.exe .

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

لكن إذا حاولت حذف الملف الذي تم استخراجه في مجلد Temp فإنه لا يمكنك فعل ذلك .

وتقبل تحياتي / المبرمج أحمد

سبحان الله وبحمده ... سبحان الله العظيم

#3

عظيم والله موضوعك ياعزيزى Siner

#4

شكرا لردودكم المفيده والجميله

واخى المبرمج احمد شكرا للتوضيح فقد كنت قرأت ذلك من زمن فى مقال اجنبى لكن بعد مراقبه الأداه اتضح لى ما قلت , لكنى كما قلت اريد فعلا عمل ذلك برمجيا .. أى اريد ان انسخ ملف تنفيذى الى الذاكره ثم اقوم بتنفيذه من هناك

خاصة وان هذه العمليه تم عملها بواسطه عدة لغات اخرى ولكن السؤال الذى يحيرنى الى الآن هو كيف استطيع عمل ذلك بال VB ? ? ?

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

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

وعنوان المشاركه المطروح والذى لم يرد عليه احد هو

/index.php?showtopic=73994

وشكرا لحسن ردودكم اخوانى

تم تعديل هذه المشاركة بواسطة Siner في 30 أغسطس 2005 في 18:06

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

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

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