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

اسمبلي من اللغات القويه في الاختراق

مغلق
بدأه fatahalrhman في 29 ديسمبر 2002 · 20 رد · 4,609 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ان لغه اسمبلي وبفضل تعليماتها القويه تجعلها لغه فعاله حتي عهدنا الحالي والان هناك لغات برمجه قويه مثل ال ++c وال java الا ان تلك اللغات تخفي عن المستخدم user تفاصيل كثيره وامور هامه في تنظيم واداره الذاكره

memoey managment واداره الذواكر من اهم واخطر الاشياء وذلك بعلمنا التام

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

اذا شاء المستخدم ذلك .

في البدء وفي الوقت الراهن يحاول المبرمجون في ايجاد لغات برمجه قويه

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

ولكن اذا فهم الواحد منا كيف تدار الذواكر فانه امر مهم جدا .

ولا نذهب بعيدا عن موضوعنا الاساسي وهو امكانيه لغه اسيمبلي القويه في معرفه تلك التفاصيل , فان لغه اسمبلي لها تعليمات تستخدم في اداره الذاكره

ولكنها جد خطيره فمثلا من الامور المتعلقه بعناوين البيانات في الذاكره هي ان

اي قيمه مخزنه في الذاكره لها عنوان حقيقي وعنوان منطقي , والعنوان المنطقي هو العنوان الذي يعطيه لنا نظام التشغيل operating system وذلك

بغرض اخفاء العنوان الحقيقي عن المستخدم .

والعنوان الحقيقي هو الهدف الاساسي فاذا تمت معرفته فهذا سيودي الي

تدمير تلك الذاكره تعالو ا نلقي نظره مع اسمبلي في هذا الموضوع , ان هناك

تعليمه من تعليمات لغه اسمبلي تسمي jmp وتعني jump اي القفز فبواسطه هذه التعليهم يمكنني الوصول الي اي موقع حقيقي في الذاكره

وتغيير محتوي ذلك الموقع من الذاكرة مما يؤدي الي خراب في الذاكره.

* فائده:

من المعروف بان لغه اسمبلي من اللغات low level language اي انها

قريبه من لغه الاله وهي لغه خطيره وذلك في ان المعالج ينفذ بها تعليماته

وكلما ذكرت اسمبلي ذكر معها المعالج .

والي اللقاء في موضوع اخر من مواضيع تلك اللغه العجيبه ومع تحياتي

فتح الرحمن البحر ....................................................................

#2

مشكوررررررررر و ما تقصر (gift)

و ياليت تكمل معنا ;)

تحياتي (f)

#3

تماااااااااااااام 100% و عندي سؤال هل من الممكن تعديل نص ما في برنامج ما على سبيل المثال اسم زر او نص حوار عن طريق الاسمبلي او الـ win32dasm او حتي hview ?? ارجو الرد !

Do as I say, not as I do

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

#4

NOP استخدم البرنامج التالي لتغيير الــResources

http://delphi.icm.edu.pl/ftp/tools/ResHack.zip

#5

شكرا يا اخي انا املك هذا البرنامج لكن اردت السؤال عن الكيفية من احد البرامج التي ذكرتها و ليس من تعديل النص "تعديل من الشفرة"

Do as I say, not as I do

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

#6

NOP أنا لا أعرف كيفية قراءة الــData بدقة من خلال win32dasm اعتقد أن الأمر يكون

صعبا...

ولكن إذا كنت تعرف الفورمات الخاص بملف exe وكيفية تضمين الــresoueces

فيه..يمكنك أن تتعلم كيف تستخرج الـresources من أي ملف وتعديلها.

وهذه هي فكرة عمل الـتResHacker.

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

يحتاج تفرغا وبحثا ..برغم أنه موضوع شيق للغاية.

#7

ولا يهمك اخوي نرجو ان يقوم الاخوة الاخرون بالاطلاع على السؤال و اطلاعنا ان كان هناك اي كيفية !

Do as I say, not as I do

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

#8

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

موضوع جميل .. ولكن لي بعض الملاحظات (f) !!

1) "اي قيمه مخزنه في الذاكره لها عنوان حقيقي وعنوان منطقي , والعنوان المنطقي هو العنوان الذي يعطيه لنا نظام التشغيل operating system وذلك

بغرض اخفاء العنوان الحقيقي عن المستخدم .

والعنوان الحقيقي هو الهدف الاساسي فاذا تمت معرفته فهذا سيودي الي

تدمير تلك الذاكره "

مبدئياً هذا صحيح نوعاً ما .. ولكن! معظم أنظمة التشغيل الحالية تعمل بهيئة pm ... وليست rm كما في السابق !! هذا الكلام ينطبق على Win95 فما فوق، وكذلك على لينوكس وأخوته :rolleyes:

فإن العناوين التي يتعامل فيها النظام بعد دخوله pm تكون مجزئة إلى رقم تحديد مقطع الذاكرة من جدول واصفات المقاطع العام ((صح التعريب !! :P:p)) (والذي يكون مخزن في ring 0)، بالإضافة إلى مقدار الإزاحة ((صحيح التعريب ؟؟ :D)) أو Offset من قاعدة Base المقطع المحدد حسب رقم تحديد المقطع المشار إليه أعلاه ...

إذاً فهي ليست مجرد عنوان "مقطع:إزاحة" ! لأنها لو كانت كذلك فالعملية أصبحت أسهل بكثييير، لأنه عندها ما عليك إلا أن تضرب رقم المقطع X 10 (سداسي عشري) ثم تضيف له الإزاحة ... فتحصل على العنوان "الحقيقي" ..

أما بالنسبة للوصول إليه كما تفضلت عن طريق مجموعة أوامر jmp ، فأعتقد أن الأمر أصعب في حالة pm، لأن جدول واصفات المقاطع العام ((بدأت أتعود على المصطلح :D)) يكون غالباً في ring 0 ...

والله أعلم ...

حسناً ... أكمل لاحقاً إن شاء الله !! (clock)(clock) :D

#9

السلام عليكم

ziluryum (f) ، تعريبات مصطلحات رائعة :D وكلام أروع ;)

ولاسيما ان في انظمة ما بعد win95 كل تطبيق يكون له منطقة ذاكرة address space مخصصة ولا يمكن تطبيق أن يري منطقة تطبيق آخر ... ويستخدم paging بدل المقطع:الإزاحة :D:D:D

#10

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

A`WaR ... تعريب جميل أليس كذلك ؟؟ :P .. بالمناسبة .. هل هي "جدول واصفات المقاطع العام" أم "جدول واصفات المقاطع العامة" ؟؟؟ أنا أعتقد أن الجملتين صحيحتين .. لأن الجدول نفسه عام (( ليس عام بمعنى الوصول اليه فعلياً، ولكن بمعنى عمومية إستخدامه))، وكذلك لأنه يحدد المقاطع على مستوى النظام ككل ((يتضح هذا المعنى بالمقارنة مع LDT .. أليس كذلك ؟؟:D)) ... على العموم !!

لقد سبقتني أخي A`WaR :P .. موضوع الـ paging هو ما أجلته لوقت لاحق ..

والله أعلم ..

#11

السلام عليكم

ziluryum : الاثنين سحيحين :D

اما paging انا ما قلت الا كلمتين، فاتمني ان تكتب عنه بشكل موسع ( أو تكتب ما أجلته :rolleyes: ) ... حتي نتعرف عليه اكثر ...

#12

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

أتوقعت أخي A 'War أن الكلمتين صحيحتين ;) .. حسناً لننتقل إلى موضوع paging ...

عندما يكون المعالج في وضعية pm ((الوضع المحمي ؟؟ هل يصلح التعريب ؟؟ :confused: )) فإنه يستخدم تقسيم المقاطع بشكل أساسي للوصول إلى مناطق مختلفة من الذاكرة. بعد الإنتهاء من عملية تحديد المقطع من جدول واصفات المقاطع العام(ة)، يقوم المعالج بأحد أمرين:

1) إستخدام العنوان الناتج من عملية تحديد المقطع (ويسمى "العنوان الخطي" .. نظراً لأن المعالج فعلياً لديه مساحة ذاكرة "خطية" أو غير مقسمة unsegmented حدها الأقصى 4 GB) مباشرة لتحديد العنوان الفيزيائي (أو العنوان النهائي الخام .. تعريب أيضاً جميل؟) حيث يتم تمرير نفس العنوان الخطي إلى أطراف الإخراج (Pin outs) الموجودة بالمعالج.

وهذا الإختيار يقوم به المعالج إذا كانت ميزة "التصفح"! ((غريب اللفظ !؟:confused: )) أو Paging غير مستخدمة (حيث أنها إختيارية). وهذه الوضعية يختارها المعالج بناءً على البت رقم 31 في مسجل التحكم 0 أو Control Register 0 "CR0"

2) إستخدام العنوان الناتج من عملية تحديد المقطع في عملية التصفح السابق ذكرها ..ويقوم المعالج بإستخدام هذه الطريق عندما يكون bit 31 في CR0 مستخدم (أومفعل) .. وفكرتها كالتالي:

تقنية التصفح تخدع البرامج، حيث أنها توفر للبرنامج (بشكل وهمي) كامل الذاكرة له (والتي حدها الأقصى 4GB في معالجات x86.. وفي PentiumPro أصبح ممكن توسيعها ليصبح الحد الأقصى 64 GB من الذاكرة..نعم لا أمزح:D).

في هذه الطريقة، تتم عملية تقسيم ثانوي (لا!! متى أنتهي من هذه المرحلة!!:'() للذاكرة الخطية بحيث تقسم إلى صفحات، لكل صفحة طول محدد ثابت (بعكس الحالة 1، حيث أن جدول واصفات المقاطع العام(ة) يحدد طول كل مقطع) وغالباً ما يكون 4KB (ومن الممكن إستخدام صفحات حجمها 4MB و 2MB إبتداءً من معالجات إنتل بنتيوم فما فوق) ... هذه التقنية هي ما يسمى بـ"الذاكرة الإفتراضية".. وفكرتها مشابهة لفكرة المقاطع (فمثلاً بها ميزة الحماية، ولكنها هنا حماية على مستوى الصفحات، لا على مستوى المقاطع). في حالة هذا التقسيم الثانوي، ونظراً للخداع الذي يقوم به كلاً من نظام التشغيل والمعالج :rolleyes: بإيهامهما للبرنامج أن لديه كامل الذاكرة، يتم تخزين الصفحات في جزئين من النظام: في الذاكرة الغعلية والقرص الصلب. وتتم ربط الصفحات بالعناوين الفيزيائية (بطريقة غير مباشرة، على عكس الحالة رقم 1 أعلاه) عن طريق "دليل الصفحات" الذي هو عبارة عن جدول به معلومات عن الصفحات وعن حالتهاً .. فعندما يطلب البرنامج عنوان معين، يتم تنفيذ كل ماذكرته سابقاً إلى أن يصل إلى مرحلة تحديد الصفحة ... عندها : إذا كانت الصفحة في الذاكرة، فالمعالج يصل إليها مباشرةً .. أما إذا كانت في القرص الصلب، فإنه ينشئ ما يسمى بـ "Page Fault Exception" أو بعبارة سلسة "خطأ في جلب الصفحة"، عندها يقوم نظام التشغيل بتحميل الصفحة المطلوبة إلى مكانها المحدد (عن طريق دليل الصفحات السابق ذكره)، ويعينها على أنها موجودة في الذاكرة .. وهكذا، يتصور البرنامج أن الذاكره كلها ملكاً له، وينجح مكر وخداع المعالج ونظام التشغيل !! :D:D:D

والله أعلم ..

حسناً .. الآن يجب أن أذهب :D ...

#13

والله يا اخوان ضوعتونا بين الحريفة !

Do as I say, not as I do

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

#14

السلام عليكم

ziluryum مرة اخري رائع والاسلوب كان اروع ممتع (f);)

اقتباس
حسناً .. الآن يجب أن أذهب

لا، تعال وين تبا تصير؟ لسة ما خلص :D الحين وصلنا للجزء المثير ..

استخدامك للمصطلحات بالعربية موفق جدا :rolleyes: سوف ارجع ان شاء الله ولدي المزيد من الأسئلة ...

NOP:

اقتباس
والله يا اخوان ضوعتونا بين الحريفة !

يعني ؟؟؟؟؟

#15

يعني بالنسبة لي لسه مبتدأ لرأسي بالنسبة للاسمبلي فهل يمكن تنسيق دروس لها ولكن كما تعرف للمبتداين للدخول في هذا العالم ! :confused:

Do as I say, not as I do

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

#16

تعريب جميل

قطرة الماء تـثـقب الحجر.. لا بالعنف. لكن بتكرار المحاولة

at4re.gif

منتديات الفريق العربي للهندسة العكسية 不喜欢的勿入! www.at4re.com

#17

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

بالتوفيق

#18

شئ ممتاز انا عمري معرفت حاجه عن المواضيع دي الا من دروس jaas وكنت هموت واعرف مراجعه فيها ايه لحد مالاخ احمد غريب قالنا علي ال intel manual النظام المحمي مثير جدا بس انا نفسي اعرف حاجه هل ده ممكن يفيد اي حد غير مصمم الانظمة يعني اللي بيشتغل في النظام المحمي كمبرمج للتطبيقات ده مش هيفيده فعليا بحاجه صح ؟؟

لا اله إلا الله

#19

انظر التاريخ

اظن هذه الناس راحت لحالها وجاء وقت xacker ليشرح بنفسه ما تعلمه لنا :lol:

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#20
G~M كتب:
انظر التاريخ

اظن هذه الناس راحت لحالها وجاء وقت xacker ليشرح بنفسه ما تعلمه لنا :lol:

حتى انت اصبحت مؤهلاً لذلك :D

Do as I say, not as I do

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

#21

هههههه

لا تعبث بي فأنا اقل من مبتدئ :P

تم تعديل هذه المشاركة بواسطة G~M في 2 نوفمبر 2007 في 19:18

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

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

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