![]() |
| أهلا وسهلا بكـ غير مسجل من جديد آخر زيارة لك كانت: اليوم الساعة 04:39 AM |
|
|
![]() |
|
|
أدوات الموضوع | طرق مشاهدة الموضوع |
|
|
#1 |
|
Graduate
|
طبعا مش ضرورى علشان تعمل فيرس انك تستخدم Assembly ممكن تستخدم C++ عادى .. ![]() لكن افتكر المشاريع اللى كان منزلها الدكتور ايامينا معجبتناش .. و قررنا نعمل واحد .. هشرح الفكره سريعا .. ------------ لتحميل الكلام ده .. بجانب المصادر و الصور .. هنا ------------ معظم الحاجات اللى بنشوفها اليومين دول worms او Trojans دى برامج مستقله .. exe لوحده بينفذ الكود المؤذى و خلاص .. الفيرس صعوبته انه يصيب غيره .. و الفيرس ليه
و علشان نفهم ازاى نعمل فيرس حقيقى .. لازم نفهم جسم الانسان بيتكون من ايه ![]() كذلك علشان نعمل فيرس كمبيوتر .. لازم نفهم الـexe بيتكون من ايه الexe بتاع الويندوز فيه ميزه انه ممكن يشتغل على الـDos و ممكن فى OSs تانيه .. فسموه PE او Portable Executable ![]() ده الexe بيبدأ كأنه EXE من ايام الدوس .. علشان كده لو شغلت exe من الدوس مش هيقول لأ .. هيفهم محتوياته .. و ينفذ main وهميه غير اللى فيه اصلا .. الmain دى فيها سطر واحد بيطبع الـstring ده "this program will run only on win32".. مفيش اى سحر فى الموضوع .. يعنى ببساطه كل exe بتاع ويندوز 32 .. جواه exe صغير من بتوع الدوس و exe تانى من بتوع windows 16bit القديم .. علشان لو جربت تشغله هناك يشتغل و يطبع رساله خطأ - الجزء التانى جوا الـexe اللى هوا الهيدر .. ده جواه بوينتر .. بيقول فين فى الفايل هتلاقى الbinary code بتاع الMain اللى انت كتبتها .. و اول byte فى الـMain و اللى هيا اول امر هيتنفذ فى البرنامج كله .. بنسميها entry point او نقطه الدخول - لاحظ انك ممكن فى الCPP تكتب الMain فى اى حته .. و كذلك فى اى لغه .. يعنى مش زى ما بنقولكم و انتم صغيرين .. ان الـwindows بيدور على فنكشن اسمها Main .. لأن اصلا الmachine code بيبقى سايح على بعضه مفيهوش فانكشنز اساسا ![]() ![]() - فى الassembly بتكتب data section و code section او بنسميه Text section و constants section ده اللى فيه "الفاريبلز الكونستانت" ![]() اماكن السيكشنز دى ممكن يتغير .. و ممكن يبقى فى كذا واحد .. و ممكن تعمل سيكشن بأسمك حتى .. ![]() و الكلام ده كله بيبقى مكتوب فى الsection table اللى فيه مكان كل سيكشن فى الفايل .. و المفروض يتحط فين فى الميمورى و هل الويندوز مسموحله انه يقرى من الsection ده ولا لأ .. طيب يكتب فيه ولا لأ .. طيب يعامل الداتا اللى فيه على انها كود بيتنفذ ولا لأ ![]() - يعنى الـdata ده بيبقى read/write و Text ده read/execute و rData ده الكونستانت .. يعنى زى data بس read بس - ![]() ممكن تشوف الـexe بنفسك .. باستخدام البرنامج PE View لاحظ السطر اللى واقف عليه فى الصوره.. هوا الـstring بتاع الـDos Error ![]() و الصوره دى توضح الـtext section لبرنامج calc بتاع الويندوز - و على ما اذكر .. فمن الضرورى علشان الويندوز يحط الـPage فى الميمورى .. انها تكون 4 kb .. و بالضروره الsection ممكن ياخد كذا page فى الميمورى .. فلازم الكومبايلر يطلع الـsection بحجم يكون من اضعاف الـ4kb يعنى لو الكود اخد 3kb بس .. الكومبايلر هيملى كيلوبايت فى آخر الكود بزيروهات .. زى ماهو واضح فى الرسمة خلاص .. اللى كتب calc مكترش فى الكود .. نكمل احنا عليه ![]() قبل ![]() يبقى احنا نجيب شويه بينارى كود .. بيعملوا اى حاجه مؤذيه .. و نكتبهم مكان الزيروهات اللى فى الآخر .. و نخلى الكود بتاعنا هوا اول كود يتنفذ .. و نحط فى آخر الكود بتاعنا Jump تروح تنفذ الـMain او الانترى بوينت القديمة .. ولا حد واخد باله ![]() ![]() ![]() بعد ![]() طبعا VirusMain() دى هتبقى بالأسيمبلى .. علشان تعرف تجيب البينارى بتاعها .. و تبقى واثق ان كل امر مش هيكبر عن آخر الكود .. لاحظ ان المساحه اللى معاك محدوده .. فمتقدرش تكتب قصائد - اكتب اى كود فى الاسيمبلى .. و هات بوينتر ليه (استخدم label:).. و عامل البوينتر على انه سترينج .. و افتح الفايل الـexe على انه text file عادى خالص .. و اكتب مكان الزيروهات الكود ده .. او اكتب السترينج يعنى ببساطه فى المكان المحدد .. المكان ده انت جبته من PE view.. ده هيخلى الفيرس بتاعك مكتوب مخصوص للـcalc .. بس لزوم الوقت .. ملحقناش نعمل فيرس اذكى من كده بصراحه - لاحظ ان الكود الفيرس بينده الـEntry Point القديمه اللى هيا الـMain علشان البرنامج يكمل عادى .. ايامينا عملنا الفيرس يـinfect الكالكيولاتور بتاع الويندوز و اول ما تشغله يطلع رساله "you have been infected" و يكمل عادى فالكالكيولاتور يظهر و كله تمام .. قام الدكتور -اللى كان على ايامينا- قاللى * ليه البرنامج مش بيضرب .. مش ده فيرس ؟ .. ![]() - يا دكتور لازم ميضربش علشان اليوزر ميحسش ان فى فيرس فيروح يجيب انتى فيرس .. ![]() * لأ ده فيرس .. يبقى لازم البرنامج يبوظ .. انا مش حاسس بالمشكله اللى انت عملتها كده ![]() - طيب خلاص . ممكن اكتب اى كلام فى الexe و هوا هيضرب ![]() ![]() * خلاص خلاص .. مش مشكله .. كويس كده.. لذلك اى حد عايز يتناقش فى فلسفه الفيروسات ![]() .. و اخلاقيات مهنه الفساد دى .. يتفضل اسئلة ؟ |
|
|
|
| The Following 16 Users Say Thank You to Fouad For This Useful Post: | |
|
.RoCK. (29-11-2008), Amr Saqr (29-11-2008), fcis_student (06-01-2009), fwitema (30-12-2009), M.Fayez (29-11-2008), Mans (29-11-2008), merothehero (29-11-2008), Metal_ (29-11-2008), omnia (29-11-2008), SABER_TRIKA (29-11-2008), Tasniem (29-11-2008), TeCNoYoTTa (29-11-2008), yasser ashour (29-11-2008), Za2zoo2a (29-11-2008), ZiKaS (29-11-2008), نوران الكفراوي (29-11-2008)
|
|
|
|
#2 |
|
Franciatek
الفرقة الثالثة
تاريخ التسجيل: Oct 2007
الإقامة: !On a SüDôKü Paper
المشاركات: 2,847
النوع: أنثى
Thanks: 4,891
Thanked 6,455 Times in 1,689 Posts
|
أنا عارفة ان الكلام ده محطوط عند سنة تالتة ![]() بس بجد بجد ال topic ده جامد جدااااااااااااااااااا ![]() ربنا يكرمك والله مع ان في حاجات مش فاهماها طبعاً كعادتي بس بجد أحييك على هذا ال topic ![]()
__________________
|
|
|
|
| كلأ من الأعضاء التاليين يوجه الشكر لـ Za2zoo2a على مشاركته المفيدة! | |
|
Fouad (29-11-2008)
|
|
|
|
#4 | |
|
Graduate
|
اقتباس:
![]() انا لما قريت اللى انا كاتبه حسيت انى بقرى الغاز .. هوا علشان فى تفاصيل كتير مختصره جدا .. فلو فى حاجات معينه عايزه فيها تفاصيل اكتر .. قولى عليها .. |
|
|
|
|
| كلأ من الأعضاء التاليين يوجه الشكر لـ Fouad على مشاركته المفيدة! | |
|
Za2zoo2a (29-11-2008)
|
|
![]() |
| أدوات الموضوع | |
| طرق مشاهدة الموضوع | |
|
|