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

فكرة تشغيل برنامج تنفيذى من الذاكره مباشرة

مغلق
بدأه MSaif في 11 يوليو 2005 · 13 رد · 1,565 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لسلام عليكم ورحمة الله . . .
حتى لا اطيل عليكم الموضوع بأختصار عباره عن كيفية تنفيذ ملف تنفيذى من الذاكرة مباشرة . .
يعنى (Execute an *.Exe Directly From RAM)


اذا لم تفهم قصدى حتى الآن أقراء الآتى :
1-يوجد برنامج الآن معنا تم تمريره بعد فتحه (Binary) لمتغير مثلا بايت أراى (Byte Array)

2- هذا الملف السابق اعتبرنا الآن انه تم حذفه وغير موجود على الهارد ديسك . .
اذن الآن معنا فقط البفر (Buffer) الموجود بالذاكرة .

3- المطلوب هو تشغيل ذلك الجزء من الذاكرة المحتوى على البرنامج B)

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

أخوكم
م.سيف

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 2 مارس 2014 في 23:15

ولمن خاف مقام ربه جنتان

ربنا آتنا فى الدنيا حسنه وفى الآخرة حسنه وقنا عذاب النار

سبحان الله وبحمده . . سبحان الله العظيم (لقد غرست لك الآن نخلة فى الجنة :)

رب اغفر لأبى وأمى وارحمهما كما ربيانى صغيرا وإشفنى وارحمنا واشفى جميع مرضى المسلمين

MicroSaif@gmail.com

cipher11@hotmail.com

#2

يعني هل تقصد انك تملك الBinary Code الخاص بالExe علي هيئة buffer مثلا و تريد تشغيله مباشرة

يمكنك ان تعيد كتابة الBinary Code هذا في ملف exe و تشغل ال exe

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#3

هناك register في الـ cpu مسئول عن عنوان الذاكرة اللذي يحتوي الامر الحالي ..

اعتقد يمكن تغييره بسطر اسمبلي .. لكني ضعيف شوية في الاسمبلي, خصوصا عالويندوز, لانا في الجامعة درسنا اسمبلي الـ Sparc

لكن لنفرض ان هذا الـ buffer موجود في عنوان معين, مثلا binary, و ان هذا الرجستر اللذي تكلمت عنه اسمه pc, فالعملية ممكن تكون شي مثل:

asm
{
    mov binary, pc;
}

أقول مثلا ..

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

و الله اعلم اذا كانت هذه الطريقة تصلح اصلا.

#4

أعتقد انه لا يمكن للمبرمج تغيير القيمة الحالية لل Program Counter

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#5
bashmohandes كتب:
يعني هل تقصد انك تملك الBinary Code الخاص بالExe علي هيئة buffer مثلا و تريد تشغيله مباشرة

يمكنك ان تعيد كتابة الBinary Code هذا في ملف exe و تشغل ال exe

تماما مثل ما قال اخى الباشمهندس ما عدا انى لآ أريد ان اعيد كتابه ال Binary Code فى ملف على هيئه exe لأنه بكده يكون تم كتابته على القرص الصلب وهو صلب الموضوع حيث اننى لا اريد ان المس الهارديسك تماما

حيث تكون عمليه تنفيذ الملف فى الرام فقط

فهل من مجيب !

ولمن خاف مقام ربه جنتان

ربنا آتنا فى الدنيا حسنه وفى الآخرة حسنه وقنا عذاب النار

سبحان الله وبحمده . . سبحان الله العظيم (لقد غرست لك الآن نخلة فى الجنة :)

رب اغفر لأبى وأمى وارحمهما كما ربيانى صغيرا وإشفنى وارحمنا واشفى جميع مرضى المسلمين

MicroSaif@gmail.com

cipher11@hotmail.com

#6
bashmohandes كتب:
أعتقد انه لا يمكن للمبرمج تغيير القيمة الحالية لل Program Counter

لم لا؟ اذا كان ممكن استغلال الـ buffer overflow لتغييره .. ولو بطريقة غير مباشرة.

و حتى لم يكن من الممكن تغييره, فممكن استخدام نفس طريقة الـ buffer overflow

نحتاج ناس اسمبلي علشان يعطونا الجواب المفيد.

#7

هناك طرق لعمل ملفات داخل للرام و يسمونها اهل الLinux باسم RamDisk و تستخدم في ال Live CD حيث انهم يقومون بحجز مساحة الرام و معاملتها على انها Disk بدون الحاجة الى لمس الHard Disk

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#8
bashmohandes كتب:
هناك طرق لعمل ملفات داخل للرام و يسمونها اهل الLinux باسم RamDisk و تستخدم في ال Live CD حيث انهم يقومون بحجز مساحة الرام و معاملتها على انها Disk بدون الحاجة الى لمس الHard Disk

:o جيد جدا لأنه المطلوب فعلا ويمكن عملها كذلك فى اى نظام تشغيل آخر مثل الويندوز , لكنى لا اعرف كيفية عمل ذلك :(

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

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

تم تعديل هذه المشاركة بواسطة MSaif في 12 يوليو 2005 في 20:11

ولمن خاف مقام ربه جنتان

ربنا آتنا فى الدنيا حسنه وفى الآخرة حسنه وقنا عذاب النار

سبحان الله وبحمده . . سبحان الله العظيم (لقد غرست لك الآن نخلة فى الجنة :)

رب اغفر لأبى وأمى وارحمهما كما ربيانى صغيرا وإشفنى وارحمنا واشفى جميع مرضى المسلمين

MicroSaif@gmail.com

cipher11@hotmail.com

#9

خبر هــــــــــــــــــــام

أفادنى مبرمج امريكى بأنه عمل برنامج بنفس الفكره لكى يخدم اغراضه التى الله اعلم بها

المهم انه بالدلفى وللأسف انى لا اعرف الدلفى :s

فأرجو المساعده والرد

شكرا

ولمن خاف مقام ربه جنتان

ربنا آتنا فى الدنيا حسنه وفى الآخرة حسنه وقنا عذاب النار

سبحان الله وبحمده . . سبحان الله العظيم (لقد غرست لك الآن نخلة فى الجنة :)

رب اغفر لأبى وأمى وارحمهما كما ربيانى صغيرا وإشفنى وارحمنا واشفى جميع مرضى المسلمين

MicroSaif@gmail.com

cipher11@hotmail.com

#10

لا أدري لكن هل Dynamic class loading مثال لما تريد؟ وهذه تقنية لجلب ملفات تنفيذية عبر الشبكة مثلا وتحمل في الذاكرة لتنفيذها واستعمال أوامرها، لست خبيرا في التقنية ولكني أستخدمها!!

أو ربما تقصد وضع الملفات في قرص وهمي Virtual Drive ويمكنك فعل هذا عن طريق سطر الأوامر:

subst R: C://myDrive

بالمناسبة لماذا السؤال عن هذه التقنية؟ في ماذا تريد استعمالها؟

بالتوفيق لولصول إليها!!

#11

السلام عليكم

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

فقط

فأرجوك دلنى كيف تقوم بعمل ذلك :(

و جزاكم الله خيرا وجعله فى ميزان حسناتكم

ولمن خاف مقام ربه جنتان

ربنا آتنا فى الدنيا حسنه وفى الآخرة حسنه وقنا عذاب النار

سبحان الله وبحمده . . سبحان الله العظيم (لقد غرست لك الآن نخلة فى الجنة :)

رب اغفر لأبى وأمى وارحمهما كما ربيانى صغيرا وإشفنى وارحمنا واشفى جميع مرضى المسلمين

MicroSaif@gmail.com

cipher11@hotmail.com

#12

يا جماعه ارجو الرد على . .

اين المشرفين واين خبراء هذا الموقع ؟

ولمن خاف مقام ربه جنتان

ربنا آتنا فى الدنيا حسنه وفى الآخرة حسنه وقنا عذاب النار

سبحان الله وبحمده . . سبحان الله العظيم (لقد غرست لك الآن نخلة فى الجنة :)

رب اغفر لأبى وأمى وارحمهما كما ربيانى صغيرا وإشفنى وارحمنا واشفى جميع مرضى المسلمين

MicroSaif@gmail.com

cipher11@hotmail.com

#13

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

اقتباس
الموضوع بأختصار عباره عن كيفية تنفيذ ملف تنفيذى من الذاكرة مباشرة . .

ومن قال أن البرامج تنفذ في القرص ؟! كل البرامج تعمل في الذاكرة...

واعتقد ان هذة الخطوات ستقرب لك الصورة...

ملف exe يكون في القرص مختلف تماماً عنة في الذاكرة ... كيف؟

عندما يتم تشغيل ملف exe ينقل إلى الذاكرة ... فيقوم نظام التشغيل

بقرائة.. إزاحة اسماء الدوال في الملف التنفيذي.. يقوم بتحويلها إلى عناوين الدوال في الذاكرة

يعني يغير الأسماء إلى عناوين

ثانياً يقوم بإضافة العنوان الوهمي للبرنامج لكل العناوين الموجودة في البرنامج

مثلا العنوان الوهمي = 400000

أي عناون في الذاكرة سيضاف لة العناون السابق,, مثل 1234 سيتحول إلى 401234

مساحات مقطع البيانات ستتغير إلى محتوى إفتراضي ؟ غالبا القيمة FE

****

والنقطة التي اريد ان أصل لها هي:

أن محتوى الملف التنفيذي في الذاكرة لو خزنتة كما هو في القرص لن يعمل البرنامج في نظام مختلف؟

مثل ملف exe خزنتة من الذاكرة في وندوز 98 لن يعمل في القرص ولا في الذاكرة في وندوز 2000 مثلاً

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

والطريقة سهلة .... بعد تشغيل الملف التنفيذي قم بقرائة كل محتواة بإستخدام الدالة ReadProcessMemory

في هذة الحالة بتكون تملك محتوى الملف التنفيذي في الذاكرة.. يعني جاهز للتنفيذ

وبكل بساطة قم بنقل التحكم إلى بداية عنوان تنفيذ البرنامج في معلومات pe بإستخادم تعليمة الإسمبلي

__asm call 123456

الرقم 123456 سيكون عناون بداية تشغيل البرنامج المأخوذ من مقدمة الملف pe

وبالتأكيد يجب ان تغير في العنوان على حسب مكان Buffer ويمثل كود ملف exe الذي تم قرائتة بالدالة السابقة

وبالتوفيق ,,

http://www.jaascois.com

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

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

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

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

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

#14

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

اولا : جزاك الله خير الجزاء وعافاك أخى JAAS لردك على من أصبح فى كربة ومعسرة من أمره و كفاك الله شر المذلة لأحد

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

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

لكن اعتقد ان الفكرة وصلت اليك خطاء قليلا فمحتوى الملف التنفيذى المراد تنفيذ( وهنا أقصد محتوى ال exe كأنك فتحتة بمحرر نصوص مثلا أى الكود القابل للتنفيذ من خلال الويندوز ) قد تم نسخة الى الذاكرة بالداله Copymemory

وهكذا أصبح لدينا نسخة من البرنامج فى الرام (مع العلم ان البرنامج مصمم ب vb 6) وهوضمن مشروع بالشركة التى اعمل بها ولكن لاضرر من ادراج Dll's بالسى او ماشابة لعمل ذلك..

والمطلوب منى بعد ذلك أن لا أجعل هذا الملف يلمس القرص الصلب و أنفذة من الذاكره .

هذا هو كل شىء ولك جزيل الشكر والتقدير

وبالنسبه للأخ hasan_aljudy فأرجو أن يكون مقدر لظروفى الخاصة التى دفعتنى لأرسال تلك الردود وكنت أرجو عدم ذكر الآباء

وبهذا اللفظ فى الموضوع لأنى يا سيدى لست عضوا مهما حتى الآن لكنك لو كنت فى نفس الظروف لفعلت كل ما تقدر علية لأتمام عملك

وربنا يكرمنا جميعا ويجزينا على قدر نياتنا

ولمن خاف مقام ربه جنتان

ربنا آتنا فى الدنيا حسنه وفى الآخرة حسنه وقنا عذاب النار

سبحان الله وبحمده . . سبحان الله العظيم (لقد غرست لك الآن نخلة فى الجنة :)

رب اغفر لأبى وأمى وارحمهما كما ربيانى صغيرا وإشفنى وارحمنا واشفى جميع مرضى المسلمين

MicroSaif@gmail.com

cipher11@hotmail.com

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

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