You are on page 1of 204



email ah_khamiss@hotmail.com
URL www.ahmedkhamiss.net
©

2 0 1 9


 (CD)


 
‫الكراك ‪ Crack‬هو كســــر حمــايــة البرامج والتطبيقــات واﻷلعــاب أو‬
‫اقت حام ها وحتي نعرف حقي قة الكراك في جب أن نتعرف علي أنواع الح مايـة‬
‫المتوفرة للبرامج واﻷلعاب وهي علي عدة أشكال أو أنواع‬
‫النوع اﻷول وهو المســـمي ‪ Time Trail Check‬وهي حماية خاصـــة بالبرامج‬
‫التجريب ية التي تعرض للتجربة لفترة زمن ية م حددة بغرض الشــــراء وغال با ما‬
‫تتراوح تلك الفترة بين ‪ 15‬إلي ‪ 30‬يوما‬
‫النوع الثاني وهو يعرف باســـم ‪ Check Function Disabled‬وهي تعتمد علي‬
‫تعطيــل بعض المهــام أو الخصـــــائص المهمــة في البرنــامج بحيــث ﻻ يمكن‬
‫اﻻســتفادة منها مثل عملية الحفظ ‪ Save‬أو الطباعة ‪ Print‬أو بعض الخصــائص‬
‫اﻻخري المهمة في اختيارات البرنامج‬
‫النوع الثالث ويطلق عليه ‪ Hardware Key Check‬ويتم اســتخدام الحماية من‬
‫خﻼل ‪ Hardware‬معين يســـمي ‪ Dongle‬وهو عبارة عن ســـدادة صـــغيرة يتم‬
‫توصــيلها إلي أحد مخارج الكمبيوتر ‪ Ports‬مثل ‪ Serial Port‬أو ‪ Parallel Port‬أو‬
‫المن فذ ‪ USB‬وهي ع بارة عن ح ما ية ماد ية ‪ Hardware‬وبرمج ية ‪Software‬‬
‫وتطبيقات الحماية بواســـطة ‪ Dongle‬تكون في الغالب ضـــعيفة ويمكن كســـر‬
‫حمايتها بسهولة‬
‫النوع الرابع ويطلق عليه ‪ CD-ROM Check‬وهي الحماية المســــتخدمة في‬
‫اﻷلعاب وهي حماية ليست صعبة ويمكن كسرها‬
‫النوع الخامس ومن أمثلة هذا النوع من الحماية حماية اﻻسطوانة من النسخ‬
‫البرامج المستخدمة في كسر الحماية‪:‬‬
‫تنقســــم برامج الكراك إلي عدة أن ماط أو أنواع ي ندرج ت حت كل نوع أو نمط‬
‫مجموعة من البرامج وتلك اﻷنواع هي‪:‬‬

‫‪Debugger .1‬‬
‫‪OllyDpg‬‬ ‫‪1.10 .a‬‬
‫‪SmartCheck‬‬ ‫‪6.03 .a‬‬
‫‪Soft Ice‬‬‫‪4.05 .b‬‬
‫‪W32Dasm‬‬ ‫‪8.93 .c‬‬
‫‪Decompile .2‬‬
‫‪DeDe 3.50.04.1635 .d‬‬
‫‪InstallShield Decompiler 1.00 .e‬‬
‫‪Vb Decompiler 0.85 .f‬‬
4
Edit Hex .3
Hex Workshop 3.1 .a
Hiew 7.01 .b
Monitor .4
API Monitor 1.5 .c
FileMonitor 6.03 .d
RegMonitor 6.03 .e
Patcher .5
CodeFusion 3.0 .a
Diablo2002's Universal Patcher 2.03 .b
PachEngine 1.33 .c
Predator's Extreme Loader Generator 0.3 .d
PrincessSandy 1.0 .e
Registry Patch Creator .f
R!SC'S Process Patcher 1.5.1 .g
PE edit .6
LordPE .a
PEditor 1.7 .b
Scan .7
File insPEditor XL .a
PEiD 0.93 .b
Stud_PE 1.8.1 .c
UnPacker .8
ProcDump 1.6 .a
Utilities .9
Apispy 2.5 .a
ASCII Table 2.01 .b
eXeScope 6.41 .c
HexDecOctBin Converter 1.00 .d
Import REConstructor 1.4.2 .e
Import REConstructor 1.6 .f
ProcessKiller 1.1 .g
Revirgin .h
Windows Enabler 1.1 .i

‫وســوف نتعرض في الفصــول التالية بإذن ﷲ بالشــرح لبرامج الكراك المختلفة‬


‫التى ستجدها على اﻻسطوانة المصاحبة للكتاب مع اﻻستعانة بمجموعة من‬
7 ‫ أما الخطوات اﻷ سا سية لك سر الحماية فهى تتمثل فى‬.‫اﻷمثلة التو ضيحية‬
:‫خطوات أساسية وهي‬
‫‪5‬‬
‫تشـــغيل البرنامج المرغوب كســـر حمايته وتعلم كيفية اســـتخدامه‬ ‫‪.1‬‬
‫بشكل عام وكيفية استجابة البرنامج لكلمة السر ‪Password‬‬
‫قم بفتح البر نامج باســــت خدام بر نامج ‪ W32Dasm‬ومن خﻼ له ارجع‬ ‫‪.2‬‬
‫البرنامج التنفيذي إلي صورته بلغة التجميع ‪Assembly‬‬
‫قم بالب حث عن كل مات أو نصــــوص في البر نامج م ثل ‪Passwords‬‬ ‫‪.3‬‬
‫و‪ name‬و‪ Expired‬و‪ Time Limit‬وهي كلمــات لهــا عﻼقــة بفترة‬
‫الصﻼحية وكلمة السر ولها عﻼقة وثيقة بحماية البرنامج‬
‫أبحث عن وﻻحظ الجزء المستخدم في تفعيل كلمة السر وابحث عن‬ ‫‪.4‬‬
‫الجزء الخاص بحماية البرنامج‬
‫حاول فهم تقنية القفز الخاصة بالحماية‬ ‫‪.5‬‬
‫أفتح البرنامج من خﻼل برنامج كســــر الحماية ‪ HIEW‬وغير تعليمات‬ ‫‪.6‬‬
‫التدفق الخاصـــة بالتحكم في إنهاء البرنامج وقم بإلغاء هذا الجزء من‬
‫البرنامج أو التخلص منه‬
‫قم بتشغيل البرنامج وﻻحظ تأثير التغيرات التي قمت بها في تشغيل‬ ‫‪.7‬‬
‫البرنامج‬

‫وأنواع الملفات التي يمكنك تحويلها إلي لغة التجميع ‪ Assembly‬الخاصــــة بها‬
‫الملفات من اﻷنواع‪exe, 386, com, cpl, drv, dll, fon, mpd, ocx, vbx, :‬‬
‫‪. vbx and sys‬‬
Assembly Language
‫‪8‬‬
‫حتى يمكنك اســــتخدام برامج فك الحماية يجب أن تكون لك دراية‬
‫بلغة ‪ Assembly‬وهي اللغة التي تكتب بها مصادر البرامج والتطبيقات واﻷلعاب‬
‫وقبل مناقشــة برامج فك الحماية المختلفة ســوف نتعرف فيما يلي علي تلك‬
‫اللغة ومفرداتها وكيفية تنفيذ أوامرها‪.‬‬
‫ماهي لغة اﻻسمبلي‪:‬‬
‫اﻻســــمبلي هي الل غة التي ت خا طب المكو نات ال ماد ية للكمبيوتر‬
‫وتخاطب المعالج بصــفة خاصــة وهي اللغة التي يتم اســتخدامها في برمجة‬
‫التطبيقات واﻷلعاب وتســـتخدم كذلك في برامج وملفات المشـــغﻼت ‪Drivers‬‬
‫للع تاد ال مادي للكمبيوتر ك ما يســــت خدم ها بعض المبرمجين في ع مل برامج‬
‫الفيروســــات وتســــتخدم لغة اﻻســــمبلي باﻹضــــافة إلي لغات أخري عالية‬
‫المستوي مثل ‪ C++‬في عمل البرامج‬
‫المسجﻼت‪Registers :‬‬
‫المســــجﻼت هي ع بارة عن متغيرات ‪ Variables‬تخزن في الم عالج‬
‫‪ CPU‬ويســــت خدم الم عالج ت لك المتغيرات في تنف يذ العمل يات الحســـــاب ية‬
‫والمنطقية ومن أكثر الم سجﻼت ا ستخداما الم سجﻼت‪eax, ebx, ecx and :‬‬
‫‪ edx‬وأحيانا تري المسجﻼت ‪edi, esi, esp, ebp‬‬
‫ويوجد ثﻼثة أنواع من المســجﻼت‪:‬مســجﻼت بنظام ‪ 32bit‬ومســجﻼت بنظام‬
‫‪ 16bit‬ومسجﻼت بنظام ‪8bit‬‬
‫وتصــــنف المســــجﻼت إلي خمســــة أنواع هي‪ :‬مســــجﻼت اﻷغراض العامة‬
‫‪ General-Purpose Registers‬ومســــجﻼت اﻷقســـــام ‪Segment Registers‬‬
‫ومســجﻼت الفهرســة أو المســجﻼت الدليلية ‪ Index Registers‬ومســجﻼت‬
‫ال تأشــــير ‪ Pointer Registers‬باﻹضـــــا فة إلي مســــجﻼت ال حا لة والتحكم‬
‫‪. Status and Control Registers‬‬

‫ﻣﺴﺠﻼﺕ ﺍﻷﻏﺮﺍﺽ ﺍﻟﻌﺎﻣﺔ ‪General Purpose Registers‬‬


‫وهي مسجﻼت بطول ‪ 16bit‬وهي المسجﻼت ‪ DX,CX,BX,AX‬ويعرف‬
‫الجزء اﻷيســـر منها والمكون من ‪ 8bit‬بالعلوي ‪ High‬وهو ‪ AH‬بينما يعرف الجزء‬
‫اﻷيمن يعرف بالمنخفض ‪ Low‬وهو المســمي ‪ AX‬وقد تم توســيع المســجﻼت‬
‫في المعالجات التي تعمل بنظام ‪ 32bit‬مع بقاء المســــجﻼت الســــابقة ولكن‬
‫الفرق بينهمــا هو حجم المســــجــل وتلــك المســــجﻼت الحــديثــة هي‬
‫‪ EAX,EBX,ECX,EDX‬فمثﻼ المســــجــل ‪ EAX‬بطول وهو بطول ‪ 32bit‬يعتبر‬
‫المســــجل ‪ AX‬بطول ‪ 16bit‬وهو يتكون بدوره من مســــجلين هما ‪ AH,AL‬كل‬
‫منهما بطول ‪ 8bit‬لكل منهما‪.‬‬
‫مسجل المركم ‪AX:‬‬
‫يعتبر مســــ جل المركم من أهم مســــجﻼت م عال جات الن ظام ‪8bit‬‬
‫القديمة كانت تجري من خﻼله العمليات الحســــابية والمنطقية ويســــمي‬
‫بالمركم نظرا لتراكم النتائج فيه ولكن معالجات النظام ‪ 16bit‬تميزت بالمرونة‬
‫‪9‬‬
‫بحيث أصبحت كل مسجﻼت اﻷغراض العامة يمكنها إجراء العمليات الحسابية‬
‫والمنطقية بينما مازال المسجل ‪ AX‬هو المستخدم ﻹجرائها‪.‬‬

‫‪ ‬مسجل القاعدة‪BX:‬‬
‫وهذا المســجل هو المســجل الوحيد من مســجﻼت اﻷغراض العامة‬
‫التي يمكن اســــت خدا مه كدل يل أو فهرس ‪ Index‬و هذا المســــ جل يمكن‬
‫اســتخدامه للعمليات الحســابية والمنطقية وهو ينقســم هذا المســجل إلي‬
‫قسمين كل قسم بطول ‪ 8bit‬وهما ‪BL‬و ‪ BH‬وهما ضمن مسجل أوسع بطول‬
‫‪ 32bit‬وهو المسجل ‪. EBX‬‬

‫‪ ‬مسجل العداد‪CX:‬‬
‫وهو يســتخدم بصــفة أســاســية كعداد ويســتخدم مع تعليمة التكرار‬
‫‪Loop‬كما يمكن ا ستخدامه في العلميات الح سابية والمنطقية وينق سم إلي‬
‫قســـمين كل قســـم بطول ‪ 8bit‬وهما ‪CH‬و ‪ CL‬وهما جزء من المســـجل ‪ECX‬‬
‫بطول ‪.32bit‬‬

‫‪ ‬مسجل المعطيات‪DX:‬‬
‫يستخدم هذا المسجل لتخزين المعطيات في عمليات الدخل والخرج‬
‫ويمكن اســتخدامه مثل باقي المســجﻼت في العمليات الحســابية والمنطقية‬
‫وهو ينق سم بدوره إلي ق سمين كل ق سم بطول ‪ 8bit‬وهذين الق سمين هما‬
‫‪ DH‬و‪ DL‬وهما ضمن مسجل أوسع وهو ‪ EDX‬بطول ‪. 32bit‬‬

‫ﻣﺴﺠﻼﺕ ﺍﻷﻗﺴﺎﻡ‪Segment Registers:‬‬


‫كانت العنونة في معالجات نظام ‪ 16bit‬تتم من خﻼل خطوط بســــعة‬
‫‪ 20bit‬وهي تكفي لعنونة ‪ 1MB‬من الذاكرة ‪ RAM‬ولصــــعوبة التأشــــير للذاكرة‬
‫باستخدام مسجﻼت بنظام ‪ 16bit‬نشأت فكرة اﻷقسام والعنونة المنطقية وقد‬
‫قســـمت الذاكرة إلي مقاطع كل منها بطول ‪ 64KB‬وقد لجا منتجي المعالجات‬
‫إلي وضــع مســجﻼت خاصــة باﻷقســام الشــائعة في البرنامج وهي قســم‬
‫الشــفرة ‪ Segment Code‬وقســم البيانات ‪ Data segment‬وقســم المكدســة‬
‫‪ Stack segment‬وقسم المقطع اﻹضافي ‪Extra segment‬‬

‫ملحوظة‪:‬‬
‫في المعالجات التي تعمل بنظام ‪ 32bit‬تم إضــافة مســجلين أقســام جديدين‬
‫بطول ‪ 16bit‬وهما ‪ GS,FS‬ويمكن استخدامهما كالمسجل ‪ES‬‬
‫ونستعرض فيما يلي تلك اﻷقسام‪:‬‬
‫‪10‬‬
‫قسم الشفرة‪CS:‬‬ ‫‪‬‬
‫يحمل هذا المســــجل عنوان بداية القســــم الخاص بالشــــفرة في‬
‫البرنامج‬
‫قسم البيانات‪DS:‬‬ ‫‪‬‬
‫يحمل عنوان بداية قسم البيانات‬
‫قسم المكدسة‪CS:‬‬ ‫‪‬‬
‫يحمل عنوان بداية قسم المكدسة في البرنامج‬
‫القسم اﻹضافي‪ES:‬‬ ‫‪‬‬
‫يحمل عنوان بداية ق سم إ ضافي ويمكن أن ي ستخدم كق سم بيانات‬
‫آخر‬

‫ﻣﺴﺠﻼﺕ ﺍﻟﺘﺄﺷﲑ‪Pointer Registers:‬‬


‫مســجﻼت التأشــير عبارة عن مســجﻼت بطول ‪ 16bit‬وتســتخدم مع‬
‫العمليات الخاصة بالمكدسة ومسجﻼت التأشير هي مسجﻼن مسجل مؤشر‬
‫القاعدة ‪ BP‬ومسجل مؤشر المكدسة ‪.SP‬‬

‫‪ ‬مسجل مؤشر القاعدة ‪BP‬‬


‫يســتخدم هذا المســجل للوصــول إلي الوســائط التي تحتوي علي‬
‫عناوين ومعطيات التي تم دفعها ‪ PUSH‬بشــكل مؤقت إلي المكدســة وقد تم‬
‫توســـيع هذا المســـجل في المعالجات نظام ‪ 32bit‬وأصـــبح جزء من مســـجل‬
‫أوسع سعة ‪ 32bit‬وهو ‪EBP‬‬
‫‪ ‬مسجل مؤشر المكدسة‪SP:‬‬
‫يحتوي مســــجل ‪ SP‬علي الكلمة الموجودة حاليا في الذاكرة والتي‬
‫سيتم معالجتها في المكدس والمسجل الحديث لهذا المسجل هو المسجل‬
‫الموسع ‪ ESP‬وهو يعمل بنظام ‪.32bit‬‬
‫‪ ‬المسجﻼت الدليلية‪Source Index SI:‬‬
‫وهي عبارة عن مجموعة مســــجﻼت بطول ‪ 16bit‬وتســــتخدم في‬
‫عنونة ‪ bits‬مقطع البيانات وأيضــــا في عمليات التأشــــير إلي القيم النصــــية‬
‫‪ Strings‬وهما عبارة عن مسجﻼن هما ‪.DI,SI‬‬
‫‪ ‬المسجل الدليلي المصدري‪SI:‬‬
‫ي ستخدم هذا الم سجل للتأ شير علي النص الم صدر ﻹجراء العمليات‬
‫التي تنفذ علي النصــــوص وتم توســــيع هذا المســــجل ليكون بطول ‪32bit‬‬
‫ويسمي ‪ESI‬‬
‫‪ ‬المسجل الدليلي الهدفي‪DI:‬‬
‫هذا المســجل يســتخدم في التأشــير علي النص الهدف ويســتخدم‬
‫كذلك في عنونة ‪ bits‬مقطع البيانات وتم توســـيع هذا المســـجل ليكون بطول‬
‫‪ 32bit‬ويسمي ‪EDI‬‬
‫‪11‬‬

‫ﻣﺴﺠﻼﺕ ﺍﳊﺎﻟﺔ ﻭﺍﻟﺘﺤﻜﻢ‪Control and Status Registers:‬‬


‫هذه المســـجﻼت مكونة من مســـجلين كل واحد بطول ‪ 16bit‬وهما‬
‫مسجل اﻷعﻼم ‪ Flag Register‬ومسجل مؤشر التعليمة ‪IP‬‬

‫‪ ‬مسجل اﻷعﻼم‪Flag Register:‬‬


‫عبارة عن مســــجل بطول ‪ 16bit‬يحتوي علي أعﻼم كل من ها بطول‬
‫‪ 1bit‬تستخدم لتحديد حالة آخر عملية أو تستخدم للتحكم في عمليات معينة‬
‫ويوجــد نوعــان من اﻷعﻼم همــا أعﻼم الحــالــة ‪ Status Flag‬وأعﻼم التحكم‬
‫‪Control Flags‬‬

‫ﺇﻋﻼﻡ ﺍﻟﺘﺤﻜﻢ‪Control Flags:‬‬


‫ويقوم المبرمج بضــــبط قيمة تلك اﻷعﻼم للقيام بالمقاطعات آو عند‬
‫استدعاء البرامج الفرعية ونستعرض فيما يلي تلك اﻷعﻼم‬
‫‪ ‬علم المقاطعة‪IF:‬‬
‫يتم ضــبط هذا العلم بواســطة المكونات المادية ‪ Hardware‬ويمكنك‬
‫ضــــبطه لتحديد ما إذا كنت ترغب في حدوث مقاطعات خارجية أو ﻻ‬
‫ويأخذ هذا العلم احد قيمتين إما ‪ 1‬وهو وضــــع التشــــغيل ‪Enabled‬‬
‫ويعني إمكانية حدوث مقاطعات والقيمة صــــفر وهي وضــــع التعطل‬
‫‪ Disabled‬وﻻ يمكن إجراء مقاطعات‬
‫‪ ‬علم اﻻتجاه‪DF:‬‬
‫وهو يســــتخدم للتعامل مع التعليمات التي تقوم بنقل البيانات مثل‬
‫تعلي مات ‪ MOVS,CMPS,SCAS‬وتكون قي مة العلم ع ند بدا ية البر نامج‬
‫‪ 1‬وهو يعني اﻻتجاه الطبيعي للبيانات وإذا كانت القيمة ‪ 0‬فيعني أن‬
‫تأخذ البيانات اﻻتجاه العكسي‬
‫‪ ‬علم المصيدة‪TF:‬‬
‫وهو يسمح لبرامج ‪ Debugger‬من فحص أخطاء البرنامج وذلك بوضع‬
‫المعالج في نمط الخطوة الواحدة في الوقت الواحد والقيمة ‪ 1‬تعني‬
‫أن النمط يعمل أما إذا كانت القيمة صفر فتعني أن النمط ﻻ يعمل‬

‫ﺃﻋﻼﻡ ﺍﳊﺎﻟﺔ‪Status Flags:‬‬


‫يتم ضــبط تلك اﻷعﻼم بصــورة تلقائية بعد تنفيذ أي عملية منطقية أو حســابية‬
‫وهذه اﻷعﻼم هي كما يلي‬
‫‪ ‬علم الحمل‪CF:‬‬
‫و هذا العلم يأ خذ ا حد قيمتين إ ما ‪ 1‬وهو يعني أن آخر عمل ية كا نت‬
‫اكبر من الهدف وإما صفر وتعني أن العملية كانت في نطاق الهدف‬
‫‪ ‬علم الفيض‪OF:‬‬
‫‪12‬‬
‫ويعتبر هو نفس علم الحمل ويستخدم مع العمليات ذات اﻹشارة‬
‫‪ ‬علم اﻹشارة‪SF:‬‬
‫يتم ضبط هذا العلم إذا كان ناتج آخر عملية رياضية أو منطقية سالب‬
‫‪ ‬علم المصفر‪ZF:‬‬
‫تكون قي مة هذا العلم ‪ 1‬إذا كا نت نتي جة آخر عمل ية حســـــاب ية أو‬
‫منطقية تساوي صفر‬
‫‪ ‬علم الحمل المساعد‪AF:‬‬
‫هذا العلم ﻻ يستخدم في البرامج عادة‬
‫‪ ‬علم اﻻزدواجية‪PF:‬‬
‫يســاوي هذا العلم ‪ 1‬إذا كان عدد اﻵحاد في آخر عملية حســابية أو‬
‫منطقية زوجيا وصفر إذا كان فرديا‬
‫وفي السطور لتالية سوف نشرح مسجﻼت النظام ‪32bit‬‬
‫مسجﻼت نظام التشغيل أو الجداول‪:‬‬
‫تشمل مسجﻼت النظام أو الجداول اﻷنواع اﻵتية‬
‫‪ ‬جدول المقاطعات ‪ IDTR-IDT‬ويمثل الســـجل ‪ IDTR‬الجدول بينما‬
‫يمثل السجل ‪ IDT‬دليل الجدول‬
‫‪ ‬مسجﻼت جدول الواصفات الشامل ‪GDTR-GDT‬‬
‫‪ ‬مسجﻼت جدول الواصفات المحلى ‪LDTR-LDT‬‬
‫‪ ‬مسجﻼت تعدد المهام ‪TSS-TR‬‬
‫والجداول هي عبارة عن مساحات فارغة فى الذاكرة تستخدم كجداول للنظام‬
‫مثل جدول الواصــفات الشــامل والمحلى ويتضــح من اســمها أنها تعنى وصــف‬
‫عناوين المقاطع وخصــــائصــــها وأنواعها ومن الممكن اســــتخراج اى قيمة من‬
‫الجدول باســــتخدام معلومتين هما اﻷســــاس وهو يمثل عنوان الجدول والحد‬
‫ويمثل دليل الجدول ‪.‬‬

‫ﻣﺴﺠﻼﺕ ﺍﻟﺘﺤﻜﻢ ﻟﻠﻤﻌﺎﰿ ﻭﺍﻟﺬﺍﻛﺮﺓ‪:‬‬


‫وتشمل المسجﻼت ‪CR4,CR3,CR2,CR1,CR0‬‬
‫مسجﻼت اﻻختبار للبرامج ‪ Programs‬والمكونات المادية ‪Hardware‬‬
‫وهى المسجﻼت ‪TR0,TR1,TR2,TR3,TR4,TR5,TR6,TR7‬‬
‫والتعليمات الخاصة بالمسجﻼت السابقة هي ‪LGDT ,LIDT ,LLDT ,LMSW :‬‬
‫‪,LTR ,SGDT ,SIDT ,SLDT, SMSW ,STR ,RDMSR ,WRMSR ,RDTSC‬‬
‫وتستخدم بقية المسجﻼت التعليمة أو اﻷمر ‪MOV‬‬

‫ﺃﻭﺍﻣﺮ ﻭﺗﻌﻠﻴﻤﺎﺕ ﻟﻐﺔ ﺍﻻﲰﺒﻠﻲ‬


‫تتكون تعليمة لغة اﻷســــمبلي من حروف لغة إنجليزية عادية يقابلها‬
‫تعليمة لغة اﻵلة باﻷرقام وتتكون التعليمة من اﻷجزاء اﻵتية‪:‬‬
‫‪13‬‬

‫اﻷمر ‪ :‬وهو اﻷمر الذي يدل علي نوع التعليمة مثل ‪ ADD‬و ‪MOV‬‬
‫الوســـائط‪ :‬وهي تحدد الشــــئ الذي ينفذ عليه اﻷمر وبعض التعليمات تأخذ‬
‫وسيطة واحدة فقط والبعض اﻵخر يأخذ أكثر من وسيطة ومن أمثلة ذلك‪:‬‬
‫‪ elc‬هذه وسيطة بدون أمر‬ ‫‪‬‬
‫‪dec ax‬تعليمة تستخدم وسيطة واحدة فقط‬ ‫‪‬‬
‫‪ mov ex,dx‬تعليمة تستخدم وسيطتين‬ ‫‪‬‬
‫ويمكن إضـــــافة أي تعلي قات مع اﻷوامر ويتم فصــــل ها عن اﻷوامر بالفاصــــلة‬
‫المنقوطة ‪.‬‬

‫ﺃﻧﻮﺍﻉ ﺍﻟﻮﺳﺎﺋﻂ‪:‬‬
‫هناك عدة أنواع من الوسائط وهي‬
‫‪ .1‬معلومة فورية أو قيمة ثابتة مثل ‪'b' – 20 – 10‬‬
‫‪ .2‬مسجل ‪ Register‬مثل‪AX-EAX-BL :‬‬
‫‪ .3‬موقع ذاكرة ويتم تحديده بواسطة العنوان مثل ‪bx-200-300‬‬
‫‪ .4‬متغير وهو مثل موقع الذاكرة ويقوم اﻻســــمبلر باســــتبدال العنوان‬
‫المتغير برقم يدل علي عنوانه مثل ‪VAR-STR1-INTVAL‬‬

‫ﺍﺳﺘﺨﺪﺍﻡ ‪Debugger‬‬
‫يعتبر ال‪ Debugger‬من أهم وأقوي برامج لغة اﻻســمبلي وهو مدمج‬
‫مع نظام التشــــغيل ويعمل من خﻼل محث نظام ‪ DOS‬ويمكنك الخروج إلي‬
‫محث نظام ‪ DOS‬من خﻼل نظام ‪ Windows‬ولتنفيذ ذلك أفتح قائمة ‪ Start‬ثم‬
‫أضغط ‪ All Programs‬ومن خﻼل مجموعة الملحقات ‪ ccessories‬أضغط اﻻختيار‬
‫‪.Command Prompt‬‬
‫‪14‬‬

‫وع ند ظهور عﻼ مة م حث ن ظام ‪ DOS‬أك تب اﻷمر ‪ Debug‬ثم أضــــغط ‪Enter‬‬


‫فتظهر عﻼمة محث برنامج ‪: Debugger‬‬

‫ﻛﻴﻔﻴﺔ ﺇﺩﺧﺎﻝ ﻛﻮﺩ ﺍﻟﱪﻧﺎﻣﺞ‪:‬‬


‫سوف نقوم بإدخال البرنامج الصغير اﻵتي من خﻼل الخطوات اﻵتية‪:‬‬
‫‪ .1‬أمام عﻼمة محث ‪ DOS‬أكتب اﻷمر ‪ Debug‬ثم أضغط ‪Enter‬‬
‫‪ .2‬عند ظهور عﻼمة محث برنامج ‪ Debug‬أكتب اﻷمر ‪ a200‬ثم أضــــغط‬
‫‪Enter‬‬
‫‪ .3‬ابدأ في إدخال تعليمة ثم أضــغط ‪ Enter‬ومع نهاية آخر تعليمة أضــغط‬
‫‪ Enter‬مرتين ثم أضــــغط الرمز ‪ R‬ثم أضــــغط ‪ Enter‬لعرض حــالــة‬
‫المسجﻼت‬

‫من خﻼل الشـــكل الســـابق ﻻحظ أن المســـجل ‪ AX‬يســـاوي صـــفر‬


‫والتعليمة ‪ MOV ax,02‬ثم أطبع الرمز ‪ T‬ثم أضغط ‪ Enter‬لتنفيذ التعليمة التالية‬
‫وهي ‪ MOV AX,02‬وﻻحظ أن المســجل ‪ AX‬أصــبح يســاوي ‪ 2‬والتعليمة التي‬
‫يتم تنف يذ ها ب عد ذ لك هي ‪ MOV BX,03‬ثم اد خل الرمز ‪ T‬ثم أضــــغط ‪Enter‬‬
‫لتنفيذها وبالتالي أصــبح المســجل ‪ BX‬يســاوي ‪ 3‬والتعليمة التي يأتي دورها‬
‫في التنفيذ هي ‪ ADD AX,BX‬وأدخل الرمز ‪ T‬لتنفيذها وﻻحظ أن الم سجل ‪AX‬‬
‫أصـــبحت قيمته تســـاوي مجموع العددين ‪ 3+2‬وللخروج من البرنامج أضـــغط‬
‫الحرف ‪ Q‬ثم اضغط ‪. Enter‬‬
‫‪15‬‬
‫ويســــتخدم اﻷمر ‪ R‬لعرض المســــجﻼت قبل تنفيذ العمليات ولعرض‬
‫التعليمة التي عليها الدور في التنفيذ اكتب اﻷمر ‪ T‬ثم أضــــغط ‪ Enter‬واليك‬
‫بعض اﻷمثلة ﻹجراءات بلغة اﻻسمبلي ‪.‬‬

‫مثال‪:1‬‬
‫اﻹجراء التالى يســتخدم فى إلغاء أو مســح إعدادات شــريحة ‪BIOS‬‬
‫للتخلص من كلمة الســر أو الفيروســات وكذلك اﻹعدادات الســابقة وذلك فى‬
‫حالة الفشل فى الدخول إلى برنامج اﻹعداد ‪ Setup‬بسبب كلمة السر ‪.‬‬

‫‪C>DEBUG‬‬
‫‪A‬‬ ‫‪-‬‬
‫‪MOVE AX,0‬‬ ‫‪-‬‬
‫‪MOV AX,CX‬‬ ‫‪-‬‬
‫‪OUT 70,AL‬‬ ‫‪-‬‬
‫‪MOV AX,0‬‬ ‫‪-‬‬
‫‪OUT 71,AL‬‬ ‫‪-‬‬
‫‪INC,CX‬‬ ‫‪-‬‬
‫‪CMP CX.100‬‬ ‫‪-‬‬
‫‪JB 103‬‬ ‫‪-‬‬
‫‪INT 20‬‬ ‫‪-‬‬
‫هذا السطر يترك فارغا عمدا‬ ‫‪-‬‬
‫‪G‬‬ ‫‪-‬‬
‫‪Q‬‬ ‫‪-‬‬

‫مثال‪:2‬‬
‫اﻹجراء ال تالى يقوم باخت بار م خارج الكمبيوتر ‪ Ports‬لتعرف هل تم‬
‫التعرف عليها من خﻼل الجهاز أم ﻻ ‪.‬‬
‫‪C>DEBUG‬‬
‫‪D40:0 -‬‬
‫‪Q -‬‬
‫مثال‪:3‬‬
‫اﻹجراء ال تالى ســــوف يقوم بت حديد نوع ب طاقة العرض المركبة فى‬
‫جهاز الكمبيوتر‬

‫‪C>DEBUG‬‬
‫‪-D C000:0040‬‬ ‫‪-‬‬
‫‪-Q‬‬ ‫‪-‬‬
‫‪16‬‬

‫ﺗﻨﻔﻴﺬ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﳊﺴﺎﺑﻴﺔ‬


‫تنقسم العمليات الحسابية المتقدمة في لغة اﻻسمبلي إلي ‪:‬‬

‫الضرب‪Multiplication:‬‬ ‫‪‬‬
‫تتم عملية الضرب لﻸرقام في لغة اﻻسمبلي في ثﻼثة أنظمة‪:‬‬

‫نظام البايت )‪Byte (8bits‬‬ ‫‪‬‬


‫وفي هذا النظام يتم و ضع احد القيم في الم سجل ‪ AL‬والرقم‬
‫اﻵخر في أي مســــجــل آخر بنفس الحجم بجوار كود أو أمر‬
‫الضــرب في لغة اﻻســمبلي وهو ‪ MUL‬وهو يســتخدم لﻸرقام‬
‫الغير محددة اﻹشـــارة واﻷمر ‪ TMUL‬لﻸرقام المحددة اﻹشـــارة‬
‫ويتم وضع الناتج في المسجل ‪AX‬‬
‫مثال‪ :‬لتنفيذ حاصل ضرب ‪ 10*20‬أكتب الكود اﻵتي‪:‬‬
‫‪MOV CL,10D‬‬
‫‪MOV AL,20D‬‬
‫‪MUL CL‬‬
‫;‪ MOV [1000H],AX‬هذا اﻷمر لتخزين الناتج في العنوان ‪1000‬‬
‫في الذاكرة بالنظام السادس عشري‬

‫نظام الكلمة ‪16bit‬‬ ‫‪‬‬


‫نقوم في هذا الن ظام بوضــــع ا حد القيم في المســــجل ‪AX‬‬
‫والقيمة اﻷخرى في أي مســجل آخر له نفس الحجم أو مكان‬
‫في ا لذاكرة ويتم وضــــع النتي جة في ‪ DX:AX‬و هذا يعني أن‬
‫الجزء اﻷدنى ‪ Low‬من ناتج القســــمة ســــوف يخزن في ‪AX‬‬
‫والجزء اﻷعلى ‪ High‬في ‪DX‬‬

‫مثال‪:‬‬
‫للحصول علي حاصل ضرب ‪ 25*200‬نفذ الخطوات اﻵتية‪:‬‬
‫‪17‬‬

‫‪MOV‬‬ ‫‪CX,25D‬‬
‫‪MOV‬‬ ‫‪AX,200D MUL CX‬‬
‫‪MOV‬‬ ‫‪[1000H]AX‬‬

‫هذا اﻷمر لتخزين الجزء اﻷول في العنوان ‪ 1000‬من الذاكرة‬


‫‪MOV‬‬ ‫‪[1001H],AX‬‬
‫هــذا اﻷمر لتخزين الجزء الثــاني في العنوان التــالي للعنوان‬
‫السابق في الذاكرة‬
‫‪MOV‬‬ ‫‪[1001H],DX‬‬
‫نظام ‪32bit‬‬ ‫‪‬‬
‫في هذا النظام يتم وضــــع الرقم اﻷول في ‪ EAX‬والرقم اﻵخر‬
‫في أي مســــجل ‪ Register‬آخر له نفس الحجم بجانب كود‬
‫ال ضرب ويتم و ضع النتيجة في ‪ EDX:EAX‬وهذا يعني أن الجزء‬
‫‪ Low‬ســــوف يخزن في ‪ EAX‬والجزء ‪ High‬ســــوف يخزن‬
‫في ‪. EDX‬‬

‫القسمة‪Division:‬‬ ‫‪‬‬
‫والقســمة تتم بنفس الطريقة بالنســبة لعمليات الضــرب أي أنها تتم‬
‫علي نفس اﻷنظمة الثﻼثة السابقة‬

‫النظام )‪8bit (Byte‬‬ ‫‪‬‬


‫في هذا النظام يتم وضـع المقسـوم في ‪ AX‬والمقسـوم عليه‬
‫في أي ريجيســــتر بنفس الحجم مثل ‪ BL,CL,DL‬ويتم وضــــع‬
‫ناتج الق سمة في ‪ AL‬وباقي الق سمة في ‪ AH‬با ستخدام أمر‬
‫القسمة ‪DIV‬‬
‫مﻼحظات‪:‬‬
‫في حا لة قســــ مة اﻷر قام الم حددة اﻹشـــــارة نســــت خدم‬ ‫‪‬‬
‫اﻷمر ‪. IDIV‬‬
‫كل القيم ه نا ع بارة عن ‪ 8bit‬وﻻ بد من تحو يل القي مة ‪8bit‬‬ ‫‪‬‬
‫للمقســــوم إلي ‪ 16bit‬حتي يمكن نقل ها إلي ‪ AX‬ويتم ذ لك‬
‫بالنســبة للقيم غير محددة اﻹشــارة بمســح ‪ AH‬حتي يتحول‬
‫إلي صـــفر وتكون قيمة المقســـوم ‪ 16bit‬أما بالنســـبة للقيم‬
‫محددة اﻹشارة فيتم ذلك باستخدام الكود ‪. CBW‬‬

‫مثال‪:‬‬
‫لتنفيذ قسمة ‪ 16+‬علي ‪ 5-‬نكتب الكود التالي‪:‬‬
‫‪MOV‬‬ ‫‪AL,16D‬‬
‫‪CBW‬‬
‫‪18‬‬
‫‪MOV‬‬ ‫‪BL,5D‬‬
‫‪NEG‬‬ ‫‪BL‬‬
‫‪IDIV‬‬ ‫‪BL‬‬
‫‪MOV‬‬ ‫‪PYTE‬‬ ‫‪PTR[1000H],AL‬‬
‫‪MOV‬‬ ‫‪PYTE‬‬ ‫‪PTR[2000H],AH‬‬

‫ﺍﻟﺘﺤﻜﻢ ﰲ ﺍﻟﱪﻧﺎﻣﺞ‬
‫يمكن التحكم في م سار البرنامج عن طريق تقنيات كالتي ت ستخدم‬
‫في لغات البرمجة العالية المستوي ونتعرف فيما يلي علي بعض تلك التقنيات‬

‫ﺍﳉﻤﻠﺔ ﺍﻟﺸﺮﻃﻴﺔ‪IF Statement:‬‬


‫من أشــهر وأهم طرق التحكم في مســار البرامج الجمل الشــرطية‬
‫وهي تعتمد علي اختبار تحقق شــرط معين لتنفيذ مهام معينة أو عدم تحقق‬
‫الشــــرط لتنفيذ م هام أخري مختلفة ونســــتخدم ﻻختبار الشــــرط في لغة‬
‫اﻻسمبلي دالتين هما ‪ TEST‬و‪CMP‬‬

‫ﺍﻟﺪﺍﻟﺔ ‪CMP‬‬
‫يأتي ب عد ت لك ا لدا لة القيمتين الل تان ســــوف نقوم باخت باره ما ويكون القفز‬
‫‪ JUMP‬بعد هذا اﻻختبار شئ طبيعي‬
‫مثال‪:‬‬
‫سنقوم في هذا المثال باختبار ت ساوي قيمتين وهما ‪ 7,5‬وعند تحقق ال شرط‬
‫سيقفز البرنامج إلي النهاية‬
‫‪MOV‬‬ ‫‪AX,5‬‬
‫‪MOV‬‬ ‫‪BX,7‬‬
‫‪CMP‬‬ ‫‪AX,BX‬‬
‫‪JE‬‬ ‫‪END‬‬
‫ﺍﻟﺪﺍﻟﺔ‪TEST:‬‬
‫وهي تؤدي نفس عمل الدالة الســـابقة ولكن بدﻻ من تنفيذ عملية طرح تقوم‬
‫بتنفيذ ربط منطق ‪Logic AND‬‬
‫مثال‪:‬‬
‫يقوم هذا اﻻختبار في اختبار آخر ‪ Bit‬في القيمة الموجودة في المسجل ‪AX‬‬
‫‪MOV‬‬ ‫‪AX,5‬‬
‫‪NEG‬‬ ‫‪AX‬‬
‫‪ADD‬‬ ‫‪AX,2‬‬
‫‪TEST AX,10000000B‬‬
‫‪JZ‬‬ ‫‪END‬‬
‫‪19‬‬

‫ﺍﻟﺪﻭﺭﺍﺕ ‪Loops‬‬
‫ا لدورة ‪ Loop‬هي عمل ية تكرار لخطوة أو مجو عة خطوات عدة مرات وﻻ ي كاد‬
‫يخلو برنامج من واحدة أو أكثر من تلك الدورات ويوجد ثﻼث أنواع من الدورات‬
‫نتعرف عليهم فيما يلي‪:‬‬

‫الدورات المفرغة )المستمرة إلي ما ﻻنهاية(‬ ‫‪‬‬


‫وهي الدورات التي تظل تع مل مرارا وتكرارا حتي يتم إن هاء البر نامج‬
‫بواســطة نظام التشــغيل ‪ OS‬أو إغﻼق الجهاز وبالطبع يســتخدم مثل‬
‫هذا النوع من ا لدورات في بعض الم هام الحيو ية م ثل عرض ال تاريخ‬
‫والوقت ‪ Date and Time‬حيث أن الســــاعة ﻻ تتوقف وكذلك التاريخ‬
‫كما يمكن اســـتخدام الدورات في إنشـــاء برامج الفيروســـات ‪Virus‬‬
‫حيث تكفي دورة واحدة صغيرة غير منتهية في شغل المعالج والتأثير‬
‫علي تشغيل البرامج اﻻخري ‪.‬‬

‫الدورات محددة العدد‪:‬‬ ‫‪‬‬


‫في هذا النوع من الدورات يكون عدد مرات تنفيذ الدورة محدد وهي‬
‫اﻷكثر اســــت خدا ما في البرم جة وتســــت خدم في تنف يذ العمل يات‬
‫الحسابية والمنطقية ومن أنواع هذه الدورات ‪ FOR……NEXT‬و ‪LOOP‬‬
‫‪.‬‬

‫الدورات المشروطة‪:‬‬ ‫‪‬‬


‫وفي هذا النوع من الدورات يكون هناك شــــرط يتم اختباره في كل‬
‫دورة ويتوقف تنفيذ الدورة في حالة انتفاء الشرط‬

‫تقنيات الدورات‪:‬‬ ‫‪‬‬


‫هناك تقنيات مختلفة ﻻســــتخدام الدورات أولها الطريقة العادية وتتم‬
‫عن طريق تحديد عنوان في أول الدورة ثم في نهاية أوامر الدورة يتم‬
‫إدراج أمر قفز للعنوان المحدد سابقا وهذا القفز قد يكون م شروطا أو‬
‫غير مشروط ‪.‬‬

‫مثال‪:‬‬
‫في المثال التالي يتم ا ستخدام الدورة الم شروطة لكل اﻷرقام من ‪1‬‬
‫إلي ‪ 8‬وتخزينها في الذاكرة‬
‫‪MOV‬‬ ‫‪AL,8‬‬
‫‪XOR‬‬ ‫‪CL,CL;CL=0‬‬
‫‪START_LOOP‬‬
‫‪ADD‬‬ ‫‪CL,AL‬‬
‫‪DEC‬‬ ‫‪AL‬‬
‫‪20‬‬
‫‪CMP‬‬ ‫‪AL,00H‬‬
‫‪JNE‬‬ ‫‪START_LOOP‬‬
‫‪MOV‬‬ ‫]‪BYTE PTR[0100H‬‬
‫استخدام اﻷمر ‪LOOP‬‬ ‫‪‬‬
‫يستخدم هذا اﻷمر بعدة أشكال منها المشروط ومنها غير المشروط‬
‫ويتم كتابة عنوان أول جملة في الدورة ويتم تحديد عدد مرات الدورة‬
‫فى ‪ CX‬ويتم تقليل ‪ CX‬واحد وتختبر قيمته في كل مرة إذا كانت صفر‬
‫تنتهي الدورة وإذا كانت غير ذلك يتم تنفيذ اﻷمر الموجود أمامها‬

‫مثال‪:‬‬
‫‪MOV‬‬ ‫‪CX,8‬‬
‫‪XOR‬‬ ‫‪AX,AX‬‬
‫‪START_LOOP‬‬
‫‪ADD‬‬ ‫‪AX,CX‬‬
‫‪LOOP START_LOOP‬‬
‫‪MOV‬‬ ‫‪[0100H],AX‬‬
‫ومن الدورات المشروطة المستخدمة‪:‬‬
‫‪LOOPZ‬‬
‫‪LOOPPNZ‬‬
‫‪LOOPE‬‬
‫‪LOOPPNE‬‬

‫ﺩﻭﺍﻝ ﺍﻟﺘﻌﺎﻣﻞ ﻣﻊ ﺍﻟﻨﺼﻮﺹ‬


‫القيم أو ال سﻼ سل الن صية ‪ Strings‬من أهم أنواع البيانات التي يتم‬
‫التعامل معها في مجال البرمجة وتحتوي لغة اﻻســــمبلي علي مجموعة من‬
‫الدوال التي تستخدم للتعامل مع السﻼسل النصية من تلك الدوال‪:‬‬
‫]‪[LODS],[STOS],[MOVS],[INS],[OUTS],[SCAS],[CMPS‬‬

‫الدالة ‪LODS‬‬ ‫‪‬‬


‫تستخدم هذه الدالة في التعامل مع أحجام مختلفة من البيانات مثل‬
‫‪ LODSB‬لنقل ‪ Byte‬من البيانات و‪ LODSW‬لنقل كلمة و‪ LODSD‬لنقل‬
‫كلمتان ‪ ،‬وهناك دالة تكرار تســتخدم للتعامل مع الســﻼســل النصــية‬
‫تســـمي ‪ REB‬وهي تعمل مثل ‪ LOOP‬ويمكن اســـتخدامها بشـــرط‬
‫ويمكن كتابة اسم الدالة أمامها فقط مثل ‪. REP STOSW‬‬
‫‪21‬‬

‫مثال‪:‬‬
‫‪CLD‬‬
‫‪MOV‬‬ ‫‪AX,0000H‬‬
‫‪MOV‬‬ ‫‪DS,AX‬‬
‫‪MOV‬‬ ‫‪CX,1000H‬‬
‫‪MOV‬‬ ‫‪SL,0‬‬
‫‪MOV‬‬ ‫‪AH,2H‬‬
‫‪START‬‬
‫‪LODSB‬‬
‫‪MOV‬‬ ‫‪DL,AL‬‬
‫‪INT‬‬ ‫‪21H‬‬
‫‪REP START‬‬
‫‪END‬‬

‫الدالة ‪STOS‬‬ ‫‪‬‬


‫تستخدم هذه الدالة للتعامل مع اﻷنواع السابق ذكرها‬

‫الدالة ‪STOSB‬‬ ‫‪‬‬


‫تستخدم لنقل محتويات ‪ AL‬إلي العنوان في الذاكرة ‪ED:DI‬‬
‫الدالة‪STOSW:‬‬ ‫‪‬‬
‫تقوم بنقل محتويات ‪ AX‬إلي العنوان في الذاكرة ‪ES:DI‬‬
‫الدالة‪STOSD:‬‬ ‫‪‬‬
‫تقوم بنقل محتويات ‪ EAX‬إلي العنوان في الذاكرة ‪ES:DI‬‬

‫مثال‪:‬‬
‫‪CLD‬‬
‫‪AX,0B800H‬‬ ‫‪MOV‬‬
‫‪ES,AX‬‬ ‫‪MOV‬‬
‫‪DL0‬‬ ‫‪MOV‬‬
‫‪CX,10,70‬‬ ‫‪MOV‬‬
‫‪AX,0720H‬‬ ‫‪MOV‬‬
‫‪STOSW‬‬ ‫‪REB‬‬
‫‪END:‬‬
‫مثال‪:2‬‬
‫‪CLD‬‬
‫‪MOV‬‬ ‫‪AX,0B800H‬‬
‫‪MOV‬‬ ‫‪ES,AX‬‬
‫‪22‬‬
‫‪MOV‬‬ ‫‪DI,0‬‬
‫‪MOV‬‬ ‫‪CX,20*80‬‬
‫‪MOV‬‬ ‫‪AX,0527H‬‬
‫‪REB‬‬ ‫‪STOSW‬‬
‫‪END:‬‬

‫يقوم المثال الســابق بمســح )‪ 20‬ســطر * ‪ 80‬عمود( بواســطة نقل‬


‫ا ل ق يمــة ‪ 0527‬إ لي كــل ا ل موا قع في الــذا كرة ا ل تي تبــدأ من ا ل ع نوان‬
‫]‪ [B800H:00000H‬والقيمــة ‪ 0720‬تتكون من مقطعين ‪ 07‬ويمثــل كود اللون‬
‫اﻷسود لخلفية الشاشة والقيمة ‪ 20‬وهو اﻻسكي كود للمسافة الفارغة وهذا‬
‫يعني أننا نطبع المســافة الفارغة في كل اﻷماكن علي الشــاشــة وهو يماثل‬
‫أمر ‪ CLS‬أو مســح الشــاشــة فى نظام ‪ .DOS‬تســتخدم هذه الدالة مع جميع‬
‫المعالجات بدا من معالجات ‪ 8088‬إلي النوع ‪ Pentium III‬في عمليات النقل‬
‫من مكان إلي آخر فى الذاكرة‪.‬‬

‫الدالة‪MOVSB:‬‬ ‫‪‬‬
‫تســـتخدم هذه الدالة في نقل ‪ Byte‬من محتويات مكان في الذاكرة‬
‫بعنوان ‪ ES:DI‬إلي المكان بالعنوان ‪ DS:SI‬ويتم زيادة أو نقصان ‪DI:SI‬‬
‫بواحد بناءا علي علم اﻻتجاه ‪. FLAGD‬‬

‫الدالة‪MOVSW:‬‬ ‫‪‬‬
‫تســــتخدم في نقل كلمة من محتويات المكان في الذاكرة بالعنوان‬
‫‪ ES:DI‬إلي الم كان بالعنوان ]‪ DS:[SI‬ويتم ز يادة أو نقصـــــان ‪DI:SI‬‬
‫بواحد بناء علي علم اﻻتجاه ‪. FALGD‬‬

‫الدالة‪MOVSD:‬‬ ‫‪‬‬
‫تســتخدم في نقل كلمتان من محتويات المكان ]‪ ES:[DI‬في الذاكرة‬
‫إلي المكان ]‪ DS:[SI‬مع زيادة أو نقصـــان ‪ DI:SI‬بواحد حســـب علم‬
‫اﻻتجاه ‪. FLAGD‬‬

‫مثال‪:‬‬
‫‪CLD‬‬
‫‪MOV‬‬ ‫‪AX,01000H‬‬
‫‪MOV‬‬ ‫‪DS,AX‬‬
‫‪MOV‬‬ ‫‪AX,02000H‬‬
‫‪MOV‬‬ ‫‪ES,AX‬‬
‫‪MOV‬‬ ‫‪DI,0‬‬
‫‪MOV‬‬ ‫‪SI,0‬‬
‫‪23‬‬
‫‪MOV‬‬ ‫‪CX,64 * 1024D‬‬
‫‪REP‬‬ ‫‪MOVSW‬‬
‫‪END:‬‬

‫يقوم هذا المثال بنسخ المقطع ‪ 1000‬إلي المقطع ‪ 2000‬عن طريق تكرار نقل‬
‫الكلمات عدد ‪ KWORDS 64‬وهي مساحة المقطع الواحد‬

‫الدالة‪INS:‬‬ ‫‪‬‬
‫تســــتخدم تلك الدالة في إد خال البيانات من وحدات اﻹدخال مثل‬
‫الشاشة أو ‪ Hard Disk‬والخطوات التالية توضح كيفية عمل الدالة‪:‬‬
‫‪ ‬يتم تحديد وسيلة اﻹدخال التي سوف تستخدم في ‪DX‬‬
‫‪ ‬تجهيز عنوان المكان الذي ســـوف يســـتقبل البيانات في الذاكرة‬
‫في ]‪ES:[DI‬‬
‫‪ ‬إعداد علم اﻻتجاه طبقا لمتطلبات البرنامج‬
‫‪ ‬اختبار وســــيلة اﻹدخال وهل تحتوي علي بيانات أو ﻻ قبل طلب‬
‫البيانات ‪ES:[DI]=[DX];DI=DI+1‬‬
‫‪ ‬ويمكن نقــل ‪ Byte‬بواســــطــة الــدالــة ]‪ [INSB‬وإدخــال كلمــة‬
‫باستخدام ]‪ [INSW‬وإدخال كلمتين باستخدام ]‪[INSD‬‬

‫مثال‪:‬‬

‫‪MOV‬‬ ‫‪DI,0‬‬
‫‪CLD‬‬
‫‪MOV‬‬ ‫‪AX,1000H‬‬
‫‪MOV‬‬ ‫‪ES,AX‬‬
‫‪MOV‬‬ ‫‪DX,3ACH‬‬
‫‪MOV‬‬ ‫‪CX,100‬‬
‫‪REP‬‬ ‫‪INSB‬‬
‫‪END:‬‬

‫الدالة‪[OUTS]:‬‬ ‫‪‬‬
‫تســـتخدم تلك الدالة في اﻹخراج علي العكس من الدالة الســـابقة‬
‫وتعمل بنفس الطريقة‬

‫مثال‪:‬‬
‫‪MOV‬‬ ‫‪SI,0‬‬
‫‪CLD‬‬
‫‪MOV‬‬ ‫‪AX,1000H‬‬
‫‪24‬‬
‫‪MOV‬‬ ‫‪DS,AX‬‬
‫‪MOV‬‬ ‫‪DX,3ACH‬‬
‫‪MOV‬‬ ‫‪CX,512‬‬
‫‪REP‬‬ ‫‪OUTB‬‬
‫‪END:‬‬

‫المثــال يقوم بنقــل مقطع من البيــانــات من الــذاكرة ]‪ DS:[SI‬إلي‬


‫اﻻسطوانة الصلبة ‪.‬‬

‫الدالة‪[SCASI]:‬‬ ‫‪‬‬
‫تســــت خدم هذه ا لدا لة في م قار نة محتو يات موقع في ا لذاكرة له‬
‫العنوان ]‪ ES:[DI‬ومحتو يات ‪ AI‬ع ند اســــت خدام ]‪ [SCASB‬ومقرنت ها‬
‫بمحتويات الـــــــ ‪ AX‬عند اســتخدام ]‪ [SCASW‬ومقرنتها بمحتويات الـ‬
‫‪ EAX‬عن استخدام ]‪[SCASD‬‬

‫مثال‪:‬‬

‫‪CLD‬‬
‫‪MOV‬‬ ‫‪DI,0‬‬
‫‪MOV‬‬ ‫‪CX,2000‬‬
‫‪XOR‬‬ ‫‪AX,AX‬‬
‫‪MOV‬‬ ‫‪ES,AX‬‬
‫‪REBNE‬‬ ‫‪SCASW‬‬
‫‪END:‬‬

‫في المثال الســـابق يتم البحث في أول ‪ 2000‬موقع في الذاكرة من‬


‫أول مكان يحتوي علي ‪0000H‬‬

‫الدالة‪[CMPS]:‬‬ ‫‪‬‬
‫تلك الدالة تقوم بم قارنة مكانين في الذاكرة باســــتخدام أمر واحد‬
‫وتــعــتــمــد مســــــاحــة الــمــكــان عــلــي اســــــتــخــدام أحــد‬
‫اﻷوامر‪[CMPSW],[CMPSD],[CMPSB]:‬‬
‫مثال‪:‬‬
‫‪CLD‬‬
‫‪MOV‬‬ ‫‪DI,0‬‬
‫‪MOV‬‬ ‫‪SI,0‬‬
‫‪MOV‬‬ ‫‪CX,2000‬‬
‫‪MOV‬‬ ‫‪AX,AX‬‬
‫‪25‬‬
‫‪MOV‬‬ ‫‪ES,AX‬‬
‫‪MOV‬‬ ‫‪AX,1000H‬‬
‫‪MOV‬‬ ‫‪DS,AX‬‬
‫‪REBE‬‬ ‫‪CMPSW‬‬
‫‪END:‬‬

‫ﺍﻹﺟﺮﺍءﺍﺕ ‪Procedures‬‬
‫اﻹجراءات عبارة عن مجموعة من اﻷوامر والجمل البرمجية التي تكون‬
‫أجزاء من البرنامج وتعمل كوحدة أو برنامج صغير م ستقل يعمل داخل البرنامج‬
‫نفسه أو خارجه‬
‫وتتميز اﻹجراءات بأنها توفر الكود والوقت كما أن لها تأثير كبير في النظام كما‬
‫أنها تسـاعد في سـرعة تصـحيح أخطاء البرنامج كما أنها تسـتخدم من معظم‬
‫البرامج والتطبيقات الكبري‬

‫ﻛﻴﻔﻴﺔ ﻋﻤﻞ ﺍﻹﺟﺮﺍءﺍﺕ‪:‬‬


‫يتم نــداء اﻹجراء عن طريق اﻷمر ‪ Call Procedure_name‬من خﻼل‬
‫اﻹجراء أو البرنامج الرئي سي ‪ Main Procedure‬وبعد انتهاء اﻹجراء يرجع اﻹجراء‬
‫إلي الجملة البرمجية التي ]‪ [RET‬التي تلي أمر ]‪ [CALL‬ثم يتم اســــتكمال‬
‫البرنامج واﻹجراء الرئيســــي هو اﻹجراء الذي يبدأ به البرنامج وينتهي البرنامج‬
‫بانتهاء عمل هذا اﻹجراء الرئيسي‬

‫ﺇﻧﺸﺎء ﺍﻹﺟﺮﺍء‪:‬‬
‫يتم إنشاء اﻷجراء بكتابة اسم اﻷجراء يليه كتابة اﻷمر ‪ PROC‬ويحتوي‬
‫اﻷجراء علي الجمل البرمجية لﻺجراء وينتهي اﻷجراء بكتابة اســـم اﻷجراء يليه‬
‫اﻷمر ]‪[RET‬‬

‫ملحوظة‪:‬‬
‫ﻻ يمكنك كتابة إجراء داخل إجراء آخر وإذا حاولت ذلك ســــوف يعطي‬
‫المترجم ‪ Assembler‬رســــالة خطأ وليس من الضــــروري أن يكون‬
‫اﻹجراء في نفس البر نامج بل يمكن أضـــــاف ته إلي البر نامج م ثل‬
‫إجراءات النظام التي يتم النداء عليها باستخدام اﻷمر ‪.INT‬‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ ‪:MOV‬‬
‫ســوف نتناول بالشــرح فيما يلى تعلميات لغة أســمبلى‪ ،‬ولنبدأ بأهم‬
‫تعليمات اللغة وهى التعليمة ‪.MOV‬‬
‫‪26‬‬
‫صيغة التعليمة‪MOV (destination),(source) :‬‬
‫تســــتخدم هذه التعليمة في نســــخ القيمة من مصــــدرها ‪ Destination‬إلي‬
‫الموقع المقصود ‪Source‬‬

‫مثال‪:‬‬
‫‪MOV AX,10‬‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ ‪:ADD‬‬
‫صيغة التعليمة‪ADD (destination),(source) :‬‬
‫تستخدم هذه التعليمة في إضافة القيمة من المصدر إلي الجهة المقصودة‬

‫مثال‪:‬‬
‫‪MOV‬‬ ‫‪AX, 10h‬‬
‫‪ADD‬‬ ‫‪AX, 10h‬‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪:AND:‬‬
‫صيغة التعليمة‪AND (destination),(mask) :‬‬
‫يكون الناتج في هذه التعليمة صــــحيح أي يســــاوي ‪ 1‬إذا كن كﻼ المعاملين‬
‫صحيح والناتج يكون خاطئا أو يساوي صفر إذا أحد المعاملين خطأ‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪CALL:‬‬
‫صيغة التعليمة‪CALL (address) :‬‬
‫تنــادي علي اﻹجراء ‪ Procedure‬أو الــدالــة ‪ Function‬الموجودة في العنوان‬
‫المحدد‬
‫مثال‪:‬‬
‫‪CALL 00425789‬‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪RET:‬‬
‫صيغة التعليمة‪RET :‬‬
‫تستخدم هذه التعليمة في اﻻنتقال إلي التعليمة التي تلي أمر النداء‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪CMP:‬‬
‫صيغة التعليمة‪CMP (A),(B) :‬‬
‫تستخدم في مقارنة متغيرين ‪A‬و‪ B‬وتأتي بعدها تعليمة قفز‬
‫‪27‬‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪INT:‬‬
‫صيغة التعليمة‪INT 21h :‬‬
‫تســــتخدم هذه التعليمة في النداء علي دوال ووظائف تخص مقاطعات ‪DOS‬‬
‫وكل جزء في الجهاز له دوال تتعامل معه لها ‪ INT‬خاص بها برقم معين وهي‬
‫مــا تســــمي بــالمقــاطعــات ‪ Interrupts‬والقــائمــة التــاليــة تمثــل بعض تلــك‬
‫المقاطعات‪.‬‬
‫تنفيذ برنامج خطوة خطوة لتتبع اﻷخطاء ‪01h:‬‬
‫خطأ في اﻻنفصال ‪03h:‬‬
‫نتيجة تعدي الحجم الخطأ ‪04h:‬‬
‫الشاشة في شكل نص طبع ‪05h:‬‬
‫هذه المقاطعة مسئولة عن خدمات الشاشة ‪10h:‬‬
‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪NOP:‬‬
‫صيغة التعليمة‪NOP(no operation) :‬‬
‫ﻻ يحدث شيء عند هذه التعليمة وينتقل التنفيذ إلي التعليمة التالية‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪OR:‬‬
‫صيغة التعليمة‪OR(destination),(mask) :‬‬
‫تستخدم هذه التعليمة ‪ or‬المنطقية اعتمادا علي القناع‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪PUSH:‬‬
‫صيغة التعليمة‪PUSH(value) :‬‬
‫تقوم هذه التعليمة بوضع قيمة ‪ value‬في المكدس ‪stack‬‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪POP:‬‬
‫صيغة التعليمة‪POP(register) :‬‬
‫تقوم هذه التعليمة بأخذ القيمة من المكدس وتخزينها في المسجل ‪Register‬‬
‫‪.‬‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪REP:‬‬
‫صيغة التعليمة‪REP(instruction) :‬‬
‫تقوم هذه التعليمة بتكرار القيمة ‪ x‬حيث أن ‪ x‬تمثل محتوي المسجل ‪ECX‬‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪INC:‬‬
‫صيغة التعليمة‪INC(register) :‬‬
‫تعمل هذه التعليمة علي زيادة قيمة المسجل‬
‫‪28‬‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪DEC:‬‬
‫صيغة التعليمة‪DEC(register) :‬‬
‫تقوم هذه التعليمة بإنقاص قيمة المسجل‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪SUB:‬‬
‫صيغة التعليمة‪SUB(destination),(source) :‬‬
‫تقوم هذه التعليمة بطرح قيمة المصدر من قيمة الجهة المقصودة‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪TEST:‬‬
‫صيغة التعليمة‪TEST(source),(mask):‬‬
‫تقوم هذه التعليمة باختبار ‪ bit‬خاص للمصدر‬

‫ﺍﻟﺘﻌﻠﻴﻤﺔ‪XOR:‬‬
‫صيغة التعليمة‪XOR(destination),(mask) :‬‬
‫تستخدم هذه التعليمة علي المكان المقصود اعتمادا علي القناع‬
‫مثال‪XOR A,A:‬‬

‫ﺗﻌﻠﻴﻤﺎﺕ ﺍﻟﻘﻔﺰ‪:‬‬
‫تســـتخدم تعليمة القفز في تحويل طريق تنفيذ التعليمات في البرنامج ويوجد‬
‫نوعان من تعليمات القفز المشروط والقفز غير المشروع‬

‫تعليمات القفز غير المشروط‪:‬‬ ‫‪‬‬


‫تقوم هذه التعليمات بالقفز إلي مكان معين في البرنامج وهي تأخذ‬
‫ثﻼث أشكال‪:‬‬
‫قفزة قريبة وهي تبدأ بـ ‪EB‬‬
‫قفزة متوسطة وتبدأ ب‪E9‬‬
‫قفزة بعيدة وتبدأ ب‪ea‬‬
‫تعليمات القفز المشروط‪:‬‬ ‫‪‬‬
‫وهي أوامر مهمة تقوم عليها عملية كســــر حماية البرامج والجدول‬
‫التالي يشمل تلك اﻷوامر في النظامين ‪ 8bit‬و‪. 16bit‬‬

‫الـــنـــظـــام‬ ‫معناها‬ ‫التعليمة‬


‫الســــادس‬
‫عشري‬
‫‪77‬‬ ‫القفز إذا كان فوق‪-‬القفز إذا لم يكن ت حت‬ ‫‪JA-JNBE‬‬
‫أو يساوي‬
‫‪29‬‬
‫‪72‬‬
‫القفز إذا كان ت حت‪-‬القفز إذا لم يكن فوق‬ ‫‪JB-JNAE‬‬
‫أو يساوي‬
‫القفز إذا كان تحت أو يســاوي‪-‬القفز إذا لم ‪76‬‬ ‫‪JBE-JNA‬‬
‫يكن فوق‬
‫القفز في حالة التســاوي‪-‬أو إذا كان الناتج ‪74‬‬ ‫‪JE-JZ‬‬
‫يساوي صفر‬
‫القفز إذا كان اكبر‪-‬القفز إذا لم يكن أصــــغر ‪7F‬‬ ‫‪JG-JNLE‬‬
‫أو يساوي‬
‫القفز إذا كان أصــــغر‪-‬القفز إذا لم يكن أكبر ‪7C‬‬ ‫‪JL-JNGB‬‬
‫أو يساوي‬
‫والجدول التالي يوضح تعليمات القفز التي هي عكس التعليمات السابقة‪.‬‬
‫الـــنـــظـــام‬ ‫معناها‬ ‫التعليمة‬
‫الســــادس‬
‫عشري‬
‫القفز إذا لم يكن فوق‪-‬القفز إذا كان تحت أو ‪76‬‬ ‫‪JNA-JBE‬‬
‫يساوي‬
‫القفز إذا لم يكن تحت‪-‬القفز إذا كان فوق أو ‪73‬‬ ‫‪JNB-JAE‬‬
‫يساوي‬
‫القفز إذا لم يكن تحت أو يســـاوي‪-‬القفز إذا ‪77‬‬ ‫‪JNBE-JA‬‬
‫كان فوق‬
‫القفز إذا لم يكن يســـــاوي –القفز إذا كان ‪75‬‬ ‫‪JNE-JNZ‬‬
‫الناتج ﻻ يساوي صفر‬
‫القفز إذا لم يكن اكبر‪-‬القفز إذا كان أصــغر أو ‪7E‬‬ ‫‪JNG-JLE‬‬
‫يساوي‬
‫القفز إذا لم يكن ‪-‬القفز إذا كــان أكبر أو ‪7D‬‬ ‫‪JNL-GB‬‬
‫يساوي‬

‫والجدول التالي يوضح تعليمات القفز في نظام ‪32bit‬‬


‫الــنــظــام‬ ‫معناها‬ ‫التعليمة‬
‫السادس‬
‫عشري‬
‫‪0F 87‬‬ ‫القفز إذا كــان فوق‪-‬القفز إذا لم يكن تحــت أو‬ ‫‪JA-JNBE‬‬
‫يساوي‬
‫‪0F 82‬‬ ‫القفز إذا كــان تحــت‪-‬القفز إذا لم يكن فوق أو‬ ‫‪JB-JNAE‬‬
‫يساوي‬
‫‪0F 86‬‬ ‫القفز إذا كان تحت أو يساوي‪-‬القفز إذا لم يكن‬ ‫‪JBE-JNA‬‬
‫فوق‬
‫‪0F 84‬‬ ‫القفز في حا لة التســـــاوي‪-‬أو إذا كان ال ناتج‬ ‫‪JE-JZ‬‬
‫يساوي صفر‬
‫‪30‬‬
‫‪0F 8F‬‬ ‫القفز إذا كان اكبر‪-‬القفز إذا لم يكن أصــــغر أو‬ ‫‪JG-JNLE‬‬
‫يساوي‬
‫القفز إذا كان أصــــغر‪-‬القفز إذا لم يكن أكبر أو ‪0F 8C‬‬ ‫‪JL-JNGB‬‬
‫يساوي‬
‫والجدول التالي يحتوي تعليمات القفز عكس تعليمات القفز السابقة‬
‫الــنــظــام‬
‫السادس‬ ‫معناها‬ ‫التعليمة‬
‫عشري‬
‫القفز إذا لم يكن فوق‪-‬القفز إذا كان ت حت أو ‪0F 86‬‬ ‫‪JNA-JBE‬‬
‫يساوي‬
‫القفز إذا لم يكن ت حت‪-‬القفز إذا كان فوق أو ‪0F 83‬‬ ‫‪JNB-JAE‬‬
‫يساوي‬
‫القفز إذا لم يكن تحت أو يســــاوي‪-‬القفز إذا ‪0F 87‬‬ ‫‪JNBE-JA‬‬
‫كان فوق‬
‫القفز إذا لم يكن يســـــاوي –القفز إذا كــان ‪0F 85‬‬ ‫‪JNE-JNZ‬‬
‫الناتج ﻻ يساوي صفر‬
‫القفز إذا لم يكن اكبر‪-‬القفز إذا كان أصــــغر أو ‪0F 8E‬‬ ‫‪JNG-JLE‬‬
‫يساوي‬
‫القفز إذا لم يكن ‪-‬ال قفز إذا كــان أكبر أو ‪0F 8D‬‬ ‫‪JNL-GB‬‬
‫يساوي‬

‫ﺍﻟﺘﺤﻮﻳﻼﺕ ﺑﲔ ﺍﻷﻧﻈﻤﺔ ﺍﻟﺮﻗﻤﻴﺔ‬


‫تعال معى لنتعرف علي كيفية التحويل بين اﻷنظمة المختلفة وخاصة‬
‫التحويل بين النظام الثنائي والع شري وال سادس ع شري وهي اﻷنظمة التي‬
‫تستخدم في لغة اﻻسمبلي حيث تﻼحظ أن لغة اﻻسمبلي تحتوي علي عدد‬
‫كبير من اﻷرقام تكون عادة بالنظام السادس عشري ‪. Hexadecimal‬‬

‫ﺍﻟﻨﻈﺎﻡ ﺍﻟﻌﺸﺮﻱ ‪Decimal Numbers :‬‬


‫النظام العشـــري في اﻷرقام معروف ونحن نســـتخدمه في حياتنا اليومية وقد‬
‫تعلمناه منذ الصــغر وكلمة ‪ Decimal‬أي عشــري مشــتقة من الكلمة الﻼتينية‬
‫‪ Decem‬وتعني الرقم ‪ 10‬ح يث يو جد عشــــرة خا نات ‪ Digits‬في هذا الن ظام‬
‫الرقمي وهي ‪0,1,2,3,4,5,6,7,8,9‬‬

‫ﺍﻟﻨﻈﻢ ﺍﻟﺜﻨﺎﺋﻲ‪Binary Numbers :‬‬


‫‪31‬‬
‫يعتبر اﻷساس للنظام الثنائي هو الرقم ‪ 2‬وهو النظام اﻷساسي في‬
‫مجال الكمبيوتر والســبب في عدم اســتخدام النظام العشــري ‪ Decimal‬في‬
‫تخزين البيانات هو أن اســــتخدام خانتان لتخزين البيانات ‪ 0‬و ‪ 1‬أســــهل من‬
‫ا ستخدام خانات عديدة كما في النظام الع شري وتوجد بعض النقاط الخا صة‬
‫بهذا النظام الرقمي وهي‪:‬‬

‫أن خانة واحدة من هذا لنظام سواء كانت ‪ 0‬أو ‪ 1‬تسمي ‪bit‬‬
‫كل مجموعة من ‪ 8 bits‬تسمي ‪Byte‬‬
‫مجموعة من ‪ Bytes‬المرتبطة ببعضها تكون كلمة ‪Word‬‬

‫والرقم اﻷســـاســـي في مجال الكمبيوتر هو الرقم ‪ 8‬حيث أن كل ‪ Byte‬وهي‬


‫الوحدة البنائية اﻷولي للمعلومات في مجال الكمبيوتر تكون مكونة من ‪8 bits‬‬
‫والجدول التالي يوضح كيفية العد في النظام الثنائي‬

‫ﺍﻟﻨﻈﺎﻡ ﺍﻟﺴﺪﺍﺳﻲ ﻋﺸﺮ‪Hexadecimal Numbers :‬‬


‫اﻷساس للنظام السداسي عشر الرقم ‪ 16‬وهو يستخدم اﻷرقام من‬
‫‪ 0‬إلي ‪ 9‬ثم الحروف لﻸر قام من ‪10‬إلي ‪ A-F 16‬وفي حا لة ال عد في الن ظام‬
‫ال سدا سي ع شر يتم العد من ‪ 1‬إلي ‪ 9‬كما في النظام الع شري ثم الحروف‬
‫من ‪ A‬إلي ‪ F‬لﻸر قام من ‪ 10‬إلي ‪ 16‬وال جدول ال تالي يوضــــح اﻻختﻼف بين‬
‫اﻷنظمة الثﻼثة‬
‫‪32‬‬

‫ﺍﻟﺘﺤﻮﻳﻞ ﻣﻦ ﺍﻟﺜﻨﺎﺋﻲ ﺇﱄ ﺍﻟﻌﺸﺮﻱ‪:‬‬


‫بما أن اﻷرقام الثنائية تتكون من اﻵحاد ‪ 1s‬واﻷصــفار ‪ 0s‬وان الصــفر ‪0‬‬
‫تكون قيم ته صــــفر أي كان موق عه فان اﻻعت ماد في هذه ال حالة يكون علي‬
‫اﻵحاد ‪ 1‬وكما في النظام العشــــري فان قراءة اﻷرقام تكون من اليســــار إلي‬
‫اليمين فعلي ســــبيل المثال عند تحويل الرقم الثنائي ‪ 10001001‬إلي النظام‬
‫العشــري فان المطلوب منا أن ننظر إلي موقع اﻵحاد ‪ 1‬في الرقم ‪ ،‬وعلي ذلك‬
‫يكون الرقم ‪ 10001001‬هو ‪1x128‬و ‪ 1x8‬و ‪ 1x1‬علي التوالي وع ند جمع ت لك‬
‫اﻷرقام يكون الناتج ‪ 137‬وهو الرقم العشري المقابل للرقم الثنائي ‪10001001‬‬

‫‪(0100)2 = (0*20+0*21+1*22+0-24 = 4‬‬

‫حيث إن ‪0+0+4+0 = 4‬‬

‫ﺍﻟﺘﺤﻮﻳﻞ ﻣﻦ ﺍﻟﻌﺸﺮﻱ ﺇﱄ ﺍﻟﺴﺎﺩﺱ ﻋﺸﺮ‪:‬‬


‫‪33‬‬
‫يتم التحويل من النظام العشــري إلي النظام الســادس عشــر بقســمة الرقم‬
‫العشري علي اﻷساس للنظام السداسي عشر وهو الرقم ‪16‬‬
‫مثال ‪ :‬لتحويل الرقم )‪ 10(346‬إلي النظام السداسي عشر‬

‫أساس النظام السداسي عشر‬ ‫الرقم‬ ‫الباقي‬


‫‪16‬‬ ‫‪346‬‬ ‫‪10=A‬‬
‫‪16‬‬ ‫‪21‬‬ ‫‪5‬‬
‫‪16‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪0‬‬
‫فيكون الرقم ‪(A51)16 = (346)10‬‬

‫مثال ‪ :‬حول الرقم ‪ (500)10‬إلي النظام السداسي عشر‬

‫أساس لنظام السداسي عشر‬ ‫الرقم‬ ‫الباقي‬


‫‪16‬‬ ‫‪500‬‬ ‫‪4‬‬
‫‪16‬‬ ‫‪31‬‬ ‫‪15‬‬
‫‪16‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪0‬‬

‫فيكون الرقم ‪(1F4)16 = (500)10‬‬


‫‪36‬‬

‫ﻓﻚ ﲪﺎﻳﺔ ﺃﻭﻝ ﺑﺮﻧﺎﻣﺞ‬


‫بعد تعرفنا علي معني الكراك أو فك الحماية واﻷدوات والبرامج التي تســتخدم‬
‫لهذا الغرض سوف نقوم في هذا الفصل بفك حماية احد البرامج كمثال عملي‬
‫لعملية فك الحماية وهذا البرنامج هو برنامج مو سيقي ي سمي ‪Sweet Little‬‬
‫‪ ، Piano‬وســـتجد هذا البرنامج على اﻻســـطوانة المصـــاحبة للكتاب‪ .‬واﻷدوات‬
‫التي ســــوف نح تاج ها في عمل ية فك الح ما ية هي البر نامج ‪ W32Dasm‬و‬
‫ضا باﻻسطوانة المصاحبة‪.‬‬ ‫‪ ، HIEW‬وستجد هذه البرامج أي ً‬
‫وعند محاول تشــغيل برنامج الموســيقي ‪ Sweet little Piano‬ســوف‬
‫تحصل علي الرسالة اﻵتية التي تطلب منك إدخال كلمة السر ‪: Password‬‬

‫ك ما يظهر مســــت ند من خﻼل بر نامج المفكرة يحتوي علي نموذج‬


‫لطلب بيانات التسجيل للحصول علي البرنامج‪ ،‬كما بالشكل التالى‪:‬‬

‫في هذه الحالة سوف نضطر إلي إغﻼق البرنامج ثم فتح برنامج ‪: W32Dasm‬‬
‫‪37‬‬

‫ومن خﻼلــه ابحــث عن الجزء الخــاص بكلمــة الســــر‪ ،‬وفى هــذه‬


‫ال حا لة نســــت خدم أمر الب حث ‪ Find‬الموجود في قائ مة ‪ Search‬ثم أضــــغط‬
‫اﻻختيار ‪: Find Text‬‬

‫ومن خﻼل اخت يار الب حث ســــوف نقوم بالب حث عن نصــــوص م ثل‬
‫‪ registered, unregistered‬أو ‪. Password‬‬
38
‫والخطوة التالية هي تحليل الكود ال خاص بالح ماية وفهم ميكانيك ية‬
: ‫ وكود حوار كلمة السر يبدو كما يلي‬Jump‫القفز‬
:00401715 6A64 push 00000064
:00401717 53 push ebx
* Reference To: USER32.GetDlgItemTextA, Ord:0000h
|
:00401718 E8A5B50000 Call 0040CCC2
:0040171D E822FFFFFF call 00401644
:00401722 85C0 test eax, eax
:00401724 741E je 00401744
:00401726 6A30 push 00000030

* Possible StringData Ref from Data Obj ->"SweetPiano"


|
:00401728 6866D24000 push 0040D266

* Possible StringData Ref from Data Obj ->"Thanks for registering!"


|
:0040172D 68FED14000 push 0040D1FE
:00401732 53 push ebx

‫والخطوة التالية هي تغيير البرنامج اﻷصــــلى ويتم ذلك بتعديله من‬


:‫ ثم افتح ملف البرنامج من خﻼله‬Hiew ‫خﻼل برنامج‬
‫‪39‬‬
‫ثم نقوم بتعديل الكود الخاص بكلمة الســـر واســـتبداله بكلمة ‪ NOP‬وتعني ﻻ‬
‫شئ‪ ،‬ثم نقوم بحفظ الملف‪:‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪OllyDbg 1.10‬‬


‫هذا البرنامج من اقوي برامج ‪ Debugger‬وهو يماثل برنامج ‪SoftIce‬‬
‫وعند تشــــغيل البرنامج تظهر لك نافذة البرنامج الرئيســــية كما في الشــــكل‬
‫التالي وهو عبارة عن برنامج يعمل علي مســــتوي لغة التجميع ‪Assembler-‬‬
‫‪ Level‬للبرامج بنظام ‪ 32bit‬وهذا البرنامج يعمل مع نظام تشـــغيل ‪Windows‬‬
‫‪ 95, 98, ME, NT , 2000 , XP‬ويدعم هذا البرنامج المعالجات ‪ CPU‬من اﻷنواع‬
‫‪ 80x86, Pentium, MMX, 3DNow‬كما يمكنك اســــتخدام هذا البرنامج في‬
‫التعامل مع ملفات الربط الديناميكية ‪ DLL‬أيضا‬

‫وســــوف نتعرض بالشــــرح في الســــطور التالية لقوائم البرنامج واختياراتها‬


‫وأوامرها‬

‫ﻗﺎﺋﻤﺔ ﻣﻠﻒ ‪File‬‬


‫تحتوي قائمة ‪ File‬علي ثﻼثة اختيارات وهي‪:‬‬
‫‪ Open‬ويستخدم هذا اﻷمر لفتح الملف التنفيذي للبرنامج‬
‫‪ Attach‬وي ستخدم ﻻختيار ملف يعمل حاليا في الذاكرة وعند ال ضغط‬
‫علي هذا اﻻخت يار تظهر نافذة تحتوي علي جميع البرامج الم تا حة حاليا في‬
‫الذاكرة فقم باختيار البرنامج المطلوب تعديله ثم أضغط ‪Attach‬‬
‫‪40‬‬

‫‪ Exit‬يستخدم للخروج من البرنامج‬

‫ﻗﺎﺋﻤﺔ ﺍﻟﻌﺮﺽ ‪View‬‬


‫تحتوي قائمة ‪ View‬علي مجموعة من اﻻختيارات واﻷوامر نشـــرحها من خﻼل‬
‫الجدول التالي‪:‬‬
‫‪41‬‬
‫وظيفته‬ ‫اﻻختيار‬
‫سجل لعمليات البرنامج‬ ‫‪Log‬‬
‫الملفات التي تحميلها في الذاكرة عن تشــــغيل‬ ‫‪Executable modules‬‬
‫الملف التنفيذي‬
‫ســــطور الــذاكرة والمقــاطع الخــاصـــــة بــالملف‬ ‫‪Memory‬‬
‫التنفيذي‬
‫مراحل تشغيل البرنامج‬ ‫‪Threads‬‬
‫النوافذ المستخدمة مع البرنامج‬ ‫‪Windows‬‬
‫عنــاوين المراحــل التي مر بهــا البرنــامج أثنــاء‬ ‫‪Handles‬‬
‫تشغيله‬
‫نافذة أوامر لغة اﻻسمبلي الخاصة بالبرنامج‬ ‫‪CPU‬‬
‫اﻷوامر التي تم تغييرها مثل عكس أمر القفز‬ ‫‪Patches‬‬
‫أوامر النداء التي تقوم بنداء أي شئ في البرنامج‬ ‫‪Call stack‬‬
‫نقاط التوقف في البرنامج‬ ‫‪Breakpoints‬‬
‫المراجع التي استخدمت في البرنامج‬ ‫‪References‬‬
‫اقتفاء اثر البرنامج عند تنفيذ الخطوات‬ ‫‪Run trace‬‬
‫تحديد مصدر البرنامج‬ ‫‪Source‬‬
‫الملفات المستخدمة في تجميع الملف التنفيذي‬ ‫‪Source Files‬‬

‫ﻗﺎﺋﻤﺔ ‪Debug‬‬
‫تعتبر قائ مة ‪ Debug‬أهم قائ مة في البر نامج ح يث أن ها تحتوي علي أوامر‬
‫واختيارات كسر الحماية وتغيير أوامر الملفات التنفيذية للبرامج والجدول التالي‬
‫يحتوي علي اختيارات وأوامر تلك القائمة ووظائفها‬
‫‪42‬‬

‫وظيفته‬ ‫اﻻختيار‬
‫يستخدم لتشغيل البرنامج‬ ‫‪Run‬‬
‫إعادة تشغيل البرنامج‬ ‫‪Restart‬‬
‫إنهاء البرنامج‬ ‫‪Close‬‬
‫يخطو البرنامج داخل كل أمر من أوامر اﻻسمبلي‬ ‫‪Step into‬‬
‫يخطو البرنامج داخل كل أمر قفز فقط‬ ‫‪Step Over‬‬
‫يخطو البرنامج داخل كل أمر تلقائيا‬ ‫‪Animate into‬‬
‫يخطو ﻷوامر القفز تلقائيا‬ ‫‪Animate over‬‬
‫تشغيل البرنامج حتي يرجع‬ ‫‪Execute till return‬‬
‫تشغيل البرنامج خطوة خطوة‬ ‫‪Execute till user code‬‬
‫تسجيل أو مسح كل اثر‬ ‫‪Open or clear run trace‬‬
‫اقتفاء اﻷثر داخل كل أمر‬ ‫‪Trace into‬‬
‫اقتفاء اثر كل أمر قفز فقط‬ ‫‪Trace over‬‬
‫وضع أمر شرطي‬ ‫‪Set condition‬‬
‫إنهاء تشغيل اقتفاء اﻷثر‬ ‫‪Close run trace‬‬

‫ﻗﺎﺋﻤﺔ ﺍﳋﻴﺎﺭﺍﺕ ‪Options‬‬


‫تحتوي قــائمــة الخيــارات ‪ Options‬علي مجموعــة من الخيــارات واﻻعــدادات‬
‫الخاصة بالبرنامج نستعرضها فيما يلي‬

‫ﺍﳌﻈﻬﺮ ‪Appearance‬‬
‫من خﻼل هذا اﻻخت يار يمك نك التحكم في مظهر البر نامج م ثل اﻻلوان ونوع‬
‫وحجم الخط ‪ Font‬ومكان حفظ ‪ Plugins‬الخاصة بالبرنامج‬
‫‪43‬‬

‫ﺧﻴﺎﺭﺍﺕ ‪Debugging‬‬
‫يتم من خﻼل هذا اﻻختيار التحكم في خيارات التنقيح‬
‫‪44‬‬

‫ﺍﳋﺎﺻﻴﺔ‪Just-in-time debugging:‬‬
‫هذه الخاصية تستخدم لعمل التنقيح في أي وقت وهذا في حالة حدوث خطا‬
‫في أثناء تشــغيل برنامج ســوف تظهر رســالة خطأ بها زر ‪ Debug‬عند الضــغط‬
‫عليه يحولك إلي برنامج ‪ Ollydbg‬مباشرة‬

‫ﺍﳋﺎﺻﻴﺔ ‪Add to explorer‬‬


‫هذا اﻻختيار يستخدم ﻹضافة البرنامج إلي متصفح وندوز‬

‫ومن خﻼل البرنامج يمكنك أن تغير أي أمر مثل أمر قفز مثﻼ ويتم ذلك بالضــغط‬
‫‪ Double Click‬علي اﻷمر فيظهر لك نافذة التعديل اﻵتية‬
‫‪45‬‬
‫عند ظهور نافذة اﻷمر يمكنك ببســـــاطة تغيير أمر القفز الموجود أ مامك مثﻼ‬
‫بإضافة الحرف ‪ n‬إلي اﻷمر ‪ JE‬كما في الشكل التالي‬

‫وبعــد تعــديــل اﻷمر أضــــغط ‪ Assemble‬ثم ‪ Cancel‬ولحفظ اﻷمر في الملف‬


‫التنفيذي أضغط عليه ‪ Right Click‬ثم نفذ اﻷمر اﻵتي‪:‬‬

‫وعند الضغط علي اﻻختيار السابق سوف تظهر لك النافذة التالية‬

‫وعند الضغط علي ‪ Yes‬سوف تظهر لك نافذة الحفظ لتحديد مكان حفظ الملف‬
‫‪46‬‬

‫ولعمل باتش ﻷكثر من أمر قم بتغيير اﻷوامر التي ترغب في تغييرها‬


‫ثم نفذ اﻷمر الموضح في الشكل التالي‬

‫ولتحويل أمر قفز ‪ je‬الي ‪ jmp‬حدد اﻷمر ثم أضــغط ‪ Right Click‬ثم نفذ اﻻختيار‬
‫اﻷتي‬
‫‪47‬‬

‫وبعد الضغط علي اﻻختيار سوف يظهر لك النافذة التالية‬

‫من خﻼل النافذة التي ظهرت لك غير الرقمين اﻷولين إلي ‪ EB‬كما في الشكل‬
‫الموضح ثم أضغط ‪OK‬‬

‫ويتكون البر نامج من عدة نوا فذ فمثﻼ ه ناك نا فذة المســــجﻼت ‪Registers‬‬
‫كالموضحة في الشكل التالي‪:‬‬
‫‪48‬‬

‫كما يحتوي البرنامج أيضا علي نافذة الـ ‪ Dump‬الموضحة في الشكل التالي‬

‫ﺑﺮﻧﺎﻣﺞ ‪SmartCheck 6.03‬‬


‫هذا البر نامج وا حد من برامج ‪ Debug‬للبرامج المكتو بة باســــت خدام فيجوال‬
‫بيسك وبعد تثبيت البرنامج وتشغيله سوف يظهر كما في الشكل التالي‪:‬‬
‫‪49‬‬

‫وقبل ا ستخدام البرنامج يتم ضبط بعض اﻻعدادات وذلك بفتح قائمة ‪Program‬‬
‫ثم أضغط علي ‪ Settings‬لعرض نافذة اﻻعدادات‬

‫من خﻼل نـافـذة اﻻعـدادات أضــــغط علي اﻻختيـار ‪ Advanced‬لعرض نـافـذة‬


‫اﻻعدادات المتقدمة للبرنامج‬
50

Report ‫ و‬Report errors caused by other errors ‫قم بتنشــــيط اﻻختيارات‬


OK ‫ ثم أضغط‬errors even if no source code is available

Reporting ‫من خﻼل نافذة اﻻعدادات اضغط بعد ذلك علي اﻻختيار‬
‫‪51‬‬
‫من خﻼل نافذة ‪ Reporting‬نشط اﻻختيار‬
‫واﻻخـــتـــيـــار‬
‫وكذلك اﻻختيار‬
‫وبعد اﻻنتهاء من ضبط تلك اﻻعدادات ا ضغط ‪ OK‬ﻹنهاء اﻻعدادات وإغﻼق نافذة‬
‫اﻻعدادات المطلوبة للبرنامج ‪.‬‬
‫اﻵن أصـبح البرنامج جاهزا للتعامل فقم بفتح قائمة ‪ File‬ثم أضـغط ‪ Open‬لفتح‬
‫الملف التنفيذي للبرنامج‬

‫كما يمكنك‬ ‫بعد فتح الملف التنفيذي اضــغط أداة ‪ Start‬من شــريط اﻷدوات‬
‫الضغط علي مفتاح ‪ F5‬وﻹغﻼق البرنامج التنفيذي أضغط أداة اﻹغﻼق‬

‫ﺑﺮﻧﺎﻣﺞ ‪W32Dasm 8.93‬‬


‫يعتبر برنــامج ‪ W32Dasm‬من أقوي برامج ‪ Disassembly‬وســــوف نتعرض‬
‫ﻻســتخدام هذا البرنامج مع برنامج ‪ Hiew‬في كثير من اﻷمثلة في هذا الكتاب‬
‫ونافذة البرنامج الرئيسية تبدو كما في الشكل التالي‬
‫‪52‬‬

‫ﻗﺎﺋﻤﺔ ‪File‬‬
‫تحتوي قائمة ‪ File‬علي مجموعة اﻻختيارات اﻵتية كما هو واضح من الشكل‪:‬‬

‫اﻻختيار ‪ Open File to Disassemble‬يســــتخدم لفتح الملف التنفيذي وبعد‬


‫تعديل الملف التنفيذي يمكنك حفظه في مشروع للرجوع عليه فيما بعد وذلك‬
‫باستخدام اﻷمر ‪Save disassembly text file and create project file‬‬
‫‪53‬‬
‫أمــا اﻻختيــار ‪ Recently opened files‬فيحتوي علي مجموعــة الملفــات تم‬
‫اختيارها من قبل ويمكن إعادة فتحها‬
‫واﻻختيار ‪ Open project file‬يستخدم لفتح ملف مشروع سبق حفظه‬
‫اﻻختيــار ‪ Comments and ProcDeclarations‬يســــتخــدم لحفظ أو تميــل‬
‫التعليقات والتصريحات‬

‫ﻗﺎﺋﻤﺔ ‪Edit‬‬
‫تحتوي قــائمــة ‪ Edit‬أو التحرير علي مجموعــة اختيــارات تســــتخــدم ﻹجراء‬
‫التعديﻼت علي الملف التنفيذي فمثﻼ يمكنك إضـــافة تعليق باســـتخدام اﻷمر‬
‫‪ Add Comment‬وﻹضــــافة تعليق أو إعﻼن أو تصــــريح أضــــغط اﻻختيار ‪Add‬‬
‫‪ ProcDeclaration‬ويســــت خدم اﻻخت يار ‪ Patch‬لع مل باتش لكود معين وع ند‬
‫الضغط علي هذا اﻻختيار تظهر لك النافذة التالية‪:‬‬

‫من خﻼل النافذة السابقة نقوم بتغيير الرقم ‪ 74‬إلي ‪ 75‬ويتم ذلك بتغيير الرقم‬
‫‪ 4‬إلي ‪ 5‬ثم نضــغط ‪ Apply‬لتطبيق التغيير ويتم إنشــاء ملف جديد بنفس اســم‬
‫الملف اﻷصـــلي ولكن باﻻمتداد ‪ BAK‬ولتشـــغيل الملف أضـــغط نقوم بالضـــغط‬
‫علي ‪ ، Run‬وللتراجع عن تغيير التعديل نضغط اﻻختيار ‪Reset‬‬
‫‪54‬‬

‫ﻗﺎﺋﻤﺔ ‪Options‬‬
‫تحتوي قائمة الخيارات ‪ Options‬علي مجموعة خيارات واعدادات للتحكم في‬
‫نوع وحجم الخط ‪ Select Font‬وحفظ الخط اﻻفتراضــــي ‪Save Default font‬‬
‫وأيضــــا التحكم في خيارات ‪ Dissembler‬وأيضــــا التحكم في خيارات التعديل‬
‫‪ Debugger options‬واﻻخت يار ‪ Display colors‬يســــت خدم للتحكم في ألوان‬
‫البرنامج مثل لون الخلفية لون الخط ولون نقاط التوقف ولون تحديد اﻷوامر وغير‬
‫ذلك من ألوان عناصر البرنامج‬

‫كما يمكنك من خﻼل قائمة الخيارات عمل باتش من باســـتخدام برنامج ‪Hiew‬‬
‫من خﻼل اﻻختيار ‪Patch Options‬‬

‫ﻗﺎﺋﻤﺔ ‪Debug‬‬
‫تســــت خدم اخت يارات قائ مة ‪ Debug‬في تتبع تنف يذ أوامر البر نامج من خﻼل‬
‫تحميل العملية أوﻻ وذلك بالضــغط علي اﻻختيار ‪ Load Process‬ثم أضــغط ‪OK‬‬
‫فتظهر لك النافذة التالية‬
‫‪55‬‬

‫ومن خﻼل تلك النافذة يمكنك تتبع خطوات تشــــغيل البرنامج بالضــــغط علي‬
‫اﻻختيار ‪ AutoStep Over‬وإذا كان أمر نداء اضــــغط علي ‪ API‬وللخروج من تلك‬
‫النافذة أضغط اﻻختيار ‪Terminate‬‬

‫ﻗﺎﺋﻤﺔ ‪Goto‬‬
‫تســــتخدم قائمة ‪ Goto‬للتحرك في الملف التنفيذي من خﻼل مجموعة أوامر‬
‫حركة مختلفة فاﻻختيار ‪ Goto Code Start‬يؤدي إلي تحرك المؤ شر إلي بداية‬
‫أوامر البرنامج واﻻختيار ‪ Goto Program Entry Point‬يحرك المؤ شر إلي نقطة‬
‫دخول البرنامج كما يمكنك الضــــغط علي مفتاح ‪ F10‬مباشــــرة بينما اﻻختيار‬
‫‪ Goto Page‬يسمح لك بالتحرك إلي صفحة معينة من صفحات الملف واﻻختيار‬
‫‪ Goto Code Location‬يســــت خدم للوصــــول إلي عنوان معين في البر نامج‬
‫واﻻختيار ‪ Execute jump‬يؤدي إلي تنفيذ أمر القفز المحدد واﻻختيار ‪Return‬‬
‫‪ form last jump‬للعودة من آخر أمر قفز‬

‫واﻻختيار ‪ Execute Call‬لتتبع أمر نداء معين بينما اﻻختيار ‪Return form Call‬‬
‫يستخدم للعودة من آخر أمر نداء‬

‫ﻗﺎﺋﻤﺔ ‪PE Information‬‬


‫تتكون ال قائ مة من عدة اخت يارات وهي اخت يار عرض ‪HEX Display of data‬‬
‫‪ Object/Segment‬لعرض الهكس لمقطع البيانات واﻻختيار ‪HEX Display of‬‬
‫‪ Code Data‬لعرض الهكس لمقطع الكود واﻻختيار ‪ Import‬يســــتخدم لعرض‬
‫دوال ‪ API‬المحفوظة في البرنامج بينما اﻻختيار ‪Export‬يستخدم لعرض قائمة‬
56
‫الدوال الصادرة من البرنامج ولعرض الرسائل أو النصوص التي يحتويها البرنامج‬
String Data Reference ‫نستخدم اﻻختيار‬

SoftIce ‫ﺑﺮﻧﺎﻣﺞ‬
‫ ويتم ضـــبط اﻻعدادات الخاصـــة‬Debug ‫يعتبر هذا البرنامج أقوي برامج التعديل‬
‫ وهو موجود في‬winice ‫ب هذا البر نامج وهي موجودة في الملف المســــمي‬
‫ وبعد تثبيت البرنامج قم بنســــخ هذا الملف في مجلد‬SoftIce ‫مجلد برنامج‬
‫ و هذا إذا ك نت‬Ctrl+D ‫ أضــــغط‬Softice ‫ ولتشــــغ يل بر نامج‬Softice ‫بر نامج‬
‫ المه مة ال خاصـــــة‬Api ‫ وفي ما يلي قائ مة بدوال‬، Windows 98 ‫تســــت خدم‬
Breakpoint ‫بعمل‬
Reading/writing Files:
ReadFile
WriteFile
CreateFileA

Reading data from INI file:


GetPrivateProfileStringA
GetPrivateProfileIntA
WritePrivateProfileStringA
WritePrivateProfileIntA

Registry Access:
RegCreateKeyA
RegDeleteKeyA
RegQueryValueA
RegCloseKeyA
RegOpenKeyA

Dialog Boxes:
57
GetWindowTextA
GetDlgItemTextA
GetDlgItemInt
Message Boxes:
MessageBox
MessageBoxA
MessageBoxExA
MessageBeep

Time And Date:


GetLocalTime
GetSystemTime
GetFileTime
SeTimer

Creating a window
CreateWindowExA
ShowWindow

CD-ROM Calls
GetDriveType
GetDriveTypeA
‫وفيما يلي قائمة بأنواع‬Breakpoint

BPM Breakpoint on memory access


BPMB Breakpoint on memory access
BPMW Breakpoint on memory access
BPMD Breakpoint on memory access
BPR Breakpoint on memory range
BPIO Breakpoint on I/O port access
BPINT Breakpoint on interrupt
BPX Breakpoint on execution
BMSG Breakpoint on windows message
BSTAT Breakpoint statistic

:‫ قم بكتابة اﻷمر التالي‬Breakpoint ‫ولمسح خطوات‬


BC* Clear Breakpoint
:‫وهذه مجموعة من اﻷوامر اﻻخرى‬
R Display/change register content
58
U Un-Assemblers instructions
E Edit memory
? Evaluate expression
G Go to address
D Display memory
:‫وهذه قائمة بمفاتيح الوظائف المستخدمة مع البرنامج‬
F1 Display Help
F2 Toggles the register window
F3 Changes current source mode
F4 Restore screen
F5 Returns to your program
F6 Toggle cursor between command window code window
F7 Goes to current cursor line
F8 single steps
F9 Sets breakpoint at current cursor lne
F10 Program steps
F11 Go to return address
F12 Run till next module
F8 Trace Info
F10 Trace Over

DeDe3.50.04.1635 ‫ﺑﺮﻧﺎﻣﺞ‬
‫ي ستخدم هذا البرنامج للتعامل مع برامج دلفي ونافذة البرنامج الرئي سية تبدو‬
‫كما في الشكل التالي‬
‫‪59‬‬

‫من شــــريط اﻷدوات ثم حدد‬ ‫ولفتح ملف تنفيذي اضــــغط علي أداة الفتح‬
‫الملف التنفيذي للبرنامج المرغوب ثم أضغط ‪Open‬‬

‫ولبدء تشغيل البرنامج أضغط اﻻختيار ‪. Process‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪Hex Workshop 3.1‬‬


‫يستخدم هذا البرنامج في تعديل الشكل الرقمي ‪ Hex‬للبرامج التنفيذية وعند‬
‫تشغيل البرنامج تظهر النافذة الرئيسية للبرنامج‬
‫‪60‬‬

‫ولفتح ملف وتعديل ‪ Hex‬الخاص به أفتح قائمة ‪ File‬ثم أضــــغط ‪ Open‬ثم اختر‬
‫الملف التنفيذي كما يمكنك الضـــغط علي أداة الفتح في شـــريط اﻷدوات‬
‫ويمكنك أن تعمل مقارنة بين ملفين وذلك بفتح الملف اﻵخر من خﻼل الملف‬
‫الحالي ولتنفيذ ذلك أفتح قائمة ‪ Tools‬ثم من خﻼل القائمة ‪ Compare‬اضـــغط‬
‫اﻻختيار ‪Compare File‬‬

‫ومن خﻼل نافذة ملفات المقارنة افتح الملف اﻷصــلي الذي تم فتحه أســاســا‬
‫في البرنامج ‪ Source‬ثم في القســم ‪ Target‬أفتح الملف الثاني الذي ســوف‬
‫يستخدم في مقارنته بالملف اﻷصلي‬
‫‪61‬‬

‫وعند التعديل في قيم ‪ Hex‬سوف تﻼحظ التعديل في الجزء اﻷيمن الذي يمثل‬
‫النص أو العبارة‬

‫ﺑﺮﻧﺎﻣﺞ ‪Hiew 7.01‬‬


‫وهذا البرنامج أي ضا من برامج تعديل ‪ Hex‬للملفات التنفيذية والنافذة الرئي سية‬
‫للبرنامج تبدو كما في الشكل التالي‬

‫وﻻختيار ملف معين لتعديله أضــغط ‪ ALT + F1‬ثم حدد مكان وجود الملف ومن‬
‫ثم حدد الملف‬
‫‪62‬‬
‫وبعد فتح الملف يمكنك اختيار نمط عرض الملف بحيث يمكنك عرض شــــكل‬
‫‪ hex‬للملف أو عرض الملف بشكل نصي ‪ Text‬أو بشكل كود البرنامج ‪Decode‬‬
‫ويتم ذلك بالضغط علي مفتاح ‪. F4‬‬

‫ولتغيير أمر معين من أوامر البرنامج حدد اﻷمر أوﻻ ثم أضــــغط مفتاح ‪ F3‬ثم قم‬
‫بتغير اﻷمر واســتخدم مفتاح ‪ F7‬للبحث داخل الملف بطريقة ‪ Hex‬أو بواســطة‬
‫كتابة النص المرغوب البحث عنه ثم اضغط ‪ Enter‬لتبدأ عملية البحث‬

‫ولعرض قائمة الملفات لفتح ملف معين لتعديله أضـــغط مفتاح ‪ F9‬وحدد الملف‬
‫ثم أضغط ‪ Enter‬لفتحه‬
‫‪63‬‬

‫وﻹنهاء البرنامج والخروج أضغط مفتاح ‪F10‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪API Monitor 1.5‬‬


‫وهــذا البرنــامج يقوم بتعــديــل مجموعــة دوال أو وظــائف ‪ API‬وعنــد‬
‫تشغيل البرنامج سوف تري النافذة الرئيسية كما في الشكل التالي‪:‬‬

‫ولفتح ملف‬ ‫ولفتح ملف جديد اضـــغط علي أداة الفتح من شـــريط اﻷدوات‬
‫ثم حدد الملف المرغوب وتســـتخدم اﻷداة‬ ‫محفوظ أضـــغط أداة الفتح‬
‫لحفظ الخطوات التي يتعامل معها البرنامج‬
‫‪64‬‬

‫وﻻلت قاط الخطوات التي تر غب في ها أضــــغط علي أداة الت قاط اﻷ حداث‬
‫وســوف تظهر لك النافذة التالية والتي يتم من خﻼلها تحديد النشــاطات التي‬
‫يتم الت قاط ها فقم بت حد يد كل اﻻخت يارات ‪ Select All‬بالنســــ بة للقســــم‬
‫‪Win32API‬‬

‫الخاصة بترشيح العمليات تظهر لك النافذة التالية‬ ‫وعند الضغط علي اﻷداة‬
‫‪:‬‬
‫‪65‬‬
‫نافذة ترشيح اﻷحداث ‪ Process Filter‬علي اﻻختيارات‪:‬‬ ‫وتحتوي‬
‫‪ Disable Filter‬وهو يعني التقاط جميع اﻷحداث التي يتم تنفيذها‬ ‫‪.1‬‬
‫‪ Include Filter‬ويعني التقاط أحداث البرنامج الذي تحدده بنفسك‬ ‫‪.2‬‬
‫‪ Exclude Filter‬ويعني التقاط جميع أحداث الملفات ما عدا الملفات‬ ‫‪.3‬‬
‫التي تقوم بتحديدها‬

‫ﺑﺮﻧﺎﻣﺞ ‪RegMonitor 6.03‬‬


‫يســــت خدم هذا البر نامج في الت قاط اﻷ حداث التي يقوم ب ها البر نامج أث ناء‬
‫تشغيله من خﻼل سجل الوندوز ‪Registry‬‬

‫وﻹي قاف أو‬ ‫ولحفظ الخطوات التي يقوم ب ها البر نامج أضــــغط أداة الحفظ‬
‫تؤدي إلي إيقاف‬ ‫واﻷداة‬ ‫تشــغيل عملية التقاط اﻷحداث أضــغط اﻷداة‬
‫فتســتخدم في التحكم‬ ‫تحرك شــريط اﻷحداث إلي أســفل بينما اﻷيقونة‬
‫في تنسيق الوقت الخاص باﻷحداث وﻹلغاء أو مسح كل اﻷحداث الحالية أضغط‬
‫وللتحكم في اﻷ حداث التي يقوم بالت قاط ها بح يث يمك نك ت حد يد‬ ‫اﻷداة‬
‫وعند الضـغط علي تلك‬ ‫أحداث معينة فقط يتم التقاط أحداثها أضـغط اﻷداة‬
‫اﻷداة يظهر لك نافذة تحديد اﻷحداث أو البرامج التي يتم التقاط أحداثها‬
‫‪66‬‬

‫وﻻحظ هنا أننا قصرنا التقاط اﻷحداث علي برنامج ‪ Microsoft Word‬فقط وكانت‬
‫النتيجة كما تري‬

‫ويمكنك تحديد أكثر من برنامج أو ملف يتم التقاط أحداثه بكتابة ا سم الملف أو‬
‫البرنامج واستخدام الفاصلة "; " لتفصل بين أسماء الملفات‬
‫ولتحديد أو معرفة القسم أو المفتاح الذي يحدث فيه الحدث في ملف السجل‬
‫كما‬ ‫‪ Registry‬حدد الســــطر الذي يحتوي علي الحدث ثم أضــــغط اﻷداة‬
‫يمكنك النقر المزدوج ‪ Double Click‬بالفارة علي الســــطر الذي يحتوي علي‬
‫الملف‬
‫‪67‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪CodeFusion 3.0‬‬


‫عند ت شغيل البرنامج سوف تظهر لك النافذة الرئي سية للبرنامج كما تبدو في‬
‫الشكل التالي‬

‫من خﻼل نافذة البرنامج أكتب عنوان أو اســــم نافذة الباتش ثم اكتب اســــم‬
‫البرنامج كما يمكنك كتابة أي تعليق أو وصــف للبرنامج ثم أضــغط علي ‪Load‬‬
‫‪68‬‬
‫‪ Icon‬ﻻختيار أيقونة النافذة وبعد اختيار اﻷيقونة المرغوبة اضــغط ‪ Next‬لﻼنتقال‬
‫إلي الخطوة التالية‪:‬‬

‫لتحديد ملف‬ ‫من خﻼل تلك النافذة أ ضغط علي أداة إ ضافة ملف ‪Add File‬‬
‫البرنامج المطلوب كسر حمايته‬

‫بعد إضافة البرنامج اضغط ‪ OK‬لﻼنتقال إلي النافذة التالية‬


‫‪69‬‬

‫لعرض نافذة‬ ‫من خﻼل تلك النافذة أضــــغط علي اختيار إضــــافة البيانات‬
‫خيارات البرنامج‬

‫من خﻼل نافذة الخيارات أضغط اﻻختيار ‪ File Compare‬ثم حدد الملف البرنامج‬
‫الذي تم كسر حمايته لمقارنته بالملف اﻷصلي للبرنامج‬
‫‪70‬‬

‫وب عد اخت يار الملف ا لذي تم كســــر ح ماي ته أضــــغط ‪ Compare‬لت بدأ عمل ية‬
‫المقارنة بين البرنامج اﻷصــلي والبرنامج المكســور وســوف تظهر لك رســالة‬
‫لت حدد نتي جة الم قار نة وفي حا لة ت طابق النســــختين يكون نتي جة الم قار نة‬
‫العبارة ‪ Match Exactly‬ثم أضغط ‪OK‬‬

‫بعد العودة الي النافذة الســـابقة أضـــغط ‪ OK‬لﻼنتقال إلي الخطوة التالية من‬
‫البرنامج‬
‫‪71‬‬

‫من خﻼل النافذة التالية أضــــغط اﻻختيار ‪ Make Win32 Executable‬ثم اكتب‬
‫اسم ومكان حفظ ملف ‪ Patch‬ثم أضغط ‪ Finish‬ﻹنهاء البرنامج‬

‫ﺑﺮﻧﺎﻣﺞ ‪Diablo2002's Universal Patcher2.03‬‬


‫يستخدم هذا البرنامج ﻹنشاء ‪ Patch‬وعن تشغيل البرنامج سوف تجد النافذة‬
‫التالية التي تمثل نافذة البرنامج الرئيسية‪:‬‬
‫‪72‬‬
‫من خﻼل نافذة البرنامج الرئيســــية أضــــغط اﻻختيار ‪ New Project‬وعند ذلك‬
‫سوف تظهر لك النافذة التالية‪:‬‬

‫من خﻼل تلك النافذة اكتب عنوان ملف الباتش واســـم البرنامج وتاريخ الباتش‬
‫وأية معلومات ترغب أن تظهر عند الضــغط علي اختيار ‪ About‬ثم أضــغط ‪Save‬‬
‫ثم أضغط ‪ Add‬من النافذة التالية فتظهر لك النافذة اﻵتية‬

‫من خﻼل تلك النافذة أضغط ‪ Double Click‬علي اﻻختيار ‪ Offset Patch‬وسوف‬
‫تظهر لك النافذة التالية‬
‫‪73‬‬

‫حدد الملف المراد كســــر حمايته أو الملف اﻷصــــلي للبرنامج ثم حدد الملف‬
‫اﻷصــــلي للبرنامج ثم الملف المكســــور ثم أضــــغط اﻻختيار ‪ Compare‬ﻹجراء‬
‫المقارنة بينهما‬

‫بعد ظهور نتيجة المقارنة أضغط ‪ Save‬لحفظ ملف ‪Patch‬‬


‫‪74‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪PatchEngine 1.32‬‬


‫هذا بر نامج آخر من برامج كســــر الح ما ية ال تابع لمجمو عة ‪ Patches‬وع ند‬
‫تشغيل البرنامج سوف تري النافذة التالية ‪:‬‬

‫من خﻼل نافذة البرنامج الرئيســــية أضــــغط علي اﻻختيار ‪ Settings‬لضــــبط‬


‫اعدادات البرنامج‬
‫‪75‬‬
‫من خﻼل نافذة اﻻعدادات اكتب اسم الشخص الذي قام بكسر حماية البرنامج‬
‫‪ Cracker‬واســــم الموقع الخاص به ‪ Website‬إذا كان له موقع علي شــــبكة‬
‫اﻻنتر نت ثم حدد م كان حفظ ملف ‪ Patch‬ثم يمك نك تغيير أيقو نة الملف إذا‬

‫ثم أضــــغط ‪ OK‬للعودة إلي النافذة‬ ‫رغبت وذلك بالضــــغط علي اﻷيقونة‬
‫السابقة مرة أخرى‬

‫من خﻼل تلك النافذة حدد الملف اﻷ صلي للبرنامج ‪ Original File‬وكذلك ا سم‬
‫بعد كســر حمايته ‪ Patched File‬ثم حدد اﻻســم الذي تريده للملف التنفيذي‬
‫وباقي المعلومات اﻻخري مثل اسم كاسر البرنامج وعنوان موقعه إن وجد وأية‬
‫معلومات خاصة بالملف ثم أضغط علي اﻻختيار ‪Generate‬‬
‫و سوف تظهر ر سالة تخبرك أن عملية الكسر تمت بنجاح ثم أ ضغط ‪Exit‬ﻹنهاء‬
‫البرنامج‬
‫‪76‬‬
‫البرنامج ‪Predator's Extreme Loader Generator 0.3‬‬
‫هذا البر نامج من البرامج من برامج ‪ Loader‬الذي يســــت خدم في تغيير أوامر‬
‫البرامج في الذاكرة بدون الحاجة إلي إنشــــاء ملف ‪ Patch‬له وهو مناســــب‬
‫للبرامج المضغوطة والمشفرة وعند تشغيل البرنامج تظهر النافذة التالية‪:‬‬

‫تحتوي نـافـذة البرنـامج علي مجموعـة من اﻻختيـارات واﻹعـدادات التي يتم‬


‫ضـــبطها فيتم أوﻻ من خﻼل نافذة البرنامج إدخال اســـم الشـــخص الذي يقوم‬

‫ﻻختيار‬ ‫بكســر حماية البرنامج ‪ Cracker Name‬ثم يتم الضــغط علي أداة‬
‫الملف المرغوب فكه وبعد اختيار الملف المرغوب كســــر حمايته اضــــغط علي‬
‫اﻻختيار ‪ Add‬ﻻختيار اﻷمر المطلوب تغييره ‪.‬‬
‫‪77‬‬

‫في هذه النافذة يتم كتابة العنوان أو كود اﻷمر الموجود في البرنامج والمطلوب‬
‫تغييره ثم نضغط ‪. OK‬‬

‫من خﻼل النافذة التالية نقوم بكتابة اﻷمر الجديد الذي ســـوف يحل محل اﻷمر‬
‫السابق الموجود بالفعل في البرنامج ثم نضغط ‪OK‬‬
‫وفي حالة وجود خطا في اﻷمر الذي تم تغييره يمكنك الضـــغط علي ‪Change‬‬
‫لتغيير اﻷمر ولحذف أمر حدد اﻷمر ثم أضغط ‪ Remove‬وﻹنشاء ال‪ Loader‬أضغط‬
‫اﻻختيار ‪ Create Loader‬ثم اكتب اسم الملف واضغط ‪. Save‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪PrincessSandy 1.0‬‬


‫يستخدم هذا البرنامج أي ضا في إنشاء ‪ Loader‬لتحميل وتشغيل البرنامج في‬
‫الذاكرة بدون تغيير أي شئ في البرنامج المحفوظ وهو يمكنك تشغيل البرامج‬
‫المشفرة بواسطة برنامج ‪ Asprotect‬حيث أن برامج ‪ Loader‬اﻻخري ﻻ يمكنها‬
‫‪78‬‬
‫تشــغيل البرامج المشــفرة ببرنامج ‪ Asprotect‬وعند تشــغيل البرنامج تحصــل‬
‫علي النافذة التالية ‪:‬‬

‫من خﻼل هذه النافذة نقوم باختيار الملف التنفيذي المراد فك تشــــفيره ثم‬
‫أضغط ‪ Open‬لفتح الملف‬

‫من خﻼل النافذة التالية أ ضغط اﻻختيار ‪ Add Item‬ﻹ ضافة اﻷمر الذي المطلوب‬
‫تغييره‬
‫‪79‬‬

‫من خﻼل النافذة التالية نقوم بكتابة العنوان المطلوب ‪ Address‬ثم نكتب كود‬
‫البيانات اﻷصلية المطلوب تغييرها ‪ Original Data‬ثم البيانات الجديدة أو بيانات‬
‫الباتش ‪ Patch Data‬ثم نضغط ‪ Add‬وبعد إضافة اﻷوامر المرغوبة نضغط اﻻختيار‬
‫‪ Build‬ﻹنشاء ملف ‪Loader‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪LordPE‬‬
‫ويســــتخدم هذا البرنامج في تعديل ملفات ‪ PE‬مثل ملفات الربط الديناميكية‬
‫‪ DLL‬وعند تشغيل البرنامج تظهر لك النافذة التالية‬

‫من خﻼل نا فذة البر نامج حدد الملف المرغوب ثم أضــــغط الزر اﻷيمن لل فارة‬
‫‪ Right Click‬ومن خﻼل القائمة المختصـــرة اضـــغط اﻻختيار ‪ dump full‬لعمل‬
‫‪ dump‬له‬
‫‪80‬‬

‫ولك سر حماية برنامج معين أ ضغط اﻻختيار ‪ PE Editor‬ثم حدد الملف المطلوب‬
‫كسر حمايته وسوف تحصل علي نافذة مثل النافذة التالية‬

‫ومن خﻼل ال نا فذة الســـــابق يمك نك تغيير الم قاطع المختل فة للبر نامج م ثل‬
‫‪ Entry Point‬واختيار ‪ImageBase‬‬
‫وعند الضـــغط علي اختيار المقاطع ‪ Sections‬ســـوف تحصـــل علي نافذة مثل‬
‫النافذة التالية‬
‫‪81‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪PEditor 1.7‬‬


‫ويقوم هذا البرنامج مثل البرنامج الســابق في تحرير ملفات ‪ PE‬وعند تشــغيل‬
‫البرنامج تظهر النافذة التالية‬

‫ومن خﻼل نافذة البرنامج الرئيسية نضغط علي اﻻختيار ‪ Browse‬ﻻختيار الملف‬
‫المرغوب تعديله‬
‫‪82‬‬
‫بعد فتح الملف المرغوب يمكنك الضـــغط علي اﻻختيار ‪ Sections‬لعرض مقاطع‬
‫البرنامج وعند ال ضغط علي اﻻختيار ‪ Tasks‬سوف يتم عرض المهام التي يقوم‬
‫بها البرنامج‬

‫وعند تحديد ملف من الملفات الموجودة في القســم اﻷعلى من النافذة تظهر‬


‫ملفات الربط الديناميكية الخاصـــة بهذا البرنامج وعند الضـــغط بزر الفارة اﻷيمن‬
‫‪ Right Click‬علي اسم أي ملف سوف تظهر قائمة مختصرة‬

‫ولعمل ‪ Dump‬للملف المختار نقوم بال ضغط علي ‪ dump full‬وكل ملف م شفر‬
‫نرغب في كسر حمايته نقوم بعمل ‪ dump full‬له‬
‫‪83‬‬

‫ﺍﻟﱪﻧﺎﻣﺞ ‪File insPEctor XL‬‬


‫يقوم هذا البر نامج بع مل مســــح للمل فات لت حد يد الل غة التي اســــت خد مت‬
‫لتصـــميم البرنامج وإذا ما كان البرنامج مشـــفر أو مضـــغوط أم ﻻ وللقيام بعمل‬
‫مسح علي ملف معين نقوم بتشغيل البرنامج‬

‫من خﻼل نا فذة البر نامج نقوم بالضــــغط علي اﻻخت يار ‪ Open File‬ثم ن حدد‬
‫الملف المطلوب مسحه وبعد فتح الملف نقوم بالضغط علي ‪ Scan‬لعمل مسح‬
‫للملف ومن ثم سوف تظهر النافذة التالية‪:‬‬
‫‪84‬‬
‫من خﻼل النافذة الســــابقة تظهر معلومات الملف التنفيذي مثل ‪EntryPoints‬‬
‫و‪ImageBase‬‬

‫وعند الضـــغط علي اﻻختيار ‪ Object table‬تظهر محتويات المقاطع التي يتكون‬
‫منها البرنامج ويمكن عمل ‪ dump‬ﻷي مقطع من تلك المقاطع ولعرض الدوال‬
‫المستخدمة في البرنامج أضغط اﻻختيار ‪Functions‬‬
‫‪85‬‬
‫وتلك الملفات تحتوي علي مجموعة الدوال التي تســــتخدم من قبل البرنامج‬
‫ويطلق علي هذه الدوال اســـم ‪ API‬وهي حيوية للبرنامج وكل البرامج تحتوي‬
‫علي مجموعة من تلك الدوال أو الوظائف ولمعرفة لغة البرنامج نقوم بالضـــغط‬
‫علي اﻻختيار ‪ Compiler‬فتظهر النافذة التالية‬

‫من خﻼل تلك النافذة يمكن التعرف علي اللغة المستخدمة في كتابة البرنامج‬
‫ويمكن أيضـــا معرفة إذا كان البرنامج مشـــفر أو مضـــغوط وعند الضـــغط علي‬
‫اﻻختيار ‪ Modify‬تظهر النافذة التالية‬
‫‪86‬‬
‫وتحتوي ت لك ال نا فذة علي مجمو عة اخت يارات وهي خاصـــــة بالت عد يل علي‬
‫الملف التنفيذي فاﻻختيار ‪ Add Section‬يسمح لك بإضافة مقطع إلي البرنامج‬
‫وتحديد حجم المقطع ‪ Size‬واســــم المقطع ‪ Name‬كما تحتوي النافذة علي‬
‫الخيار ‪ Entry Point‬ويســمح بتغيير نقطة معينة ‪ Entry Point‬ثم الضــغط علي‬
‫‪ Patch‬بعد إدخال ‪ Entry Point‬واﻻختيار ‪ Add Imports‬يســـمح بإضـــافة دوال‬
‫‪ API‬من ملفات أخري ويتم ذلك بالضــغط علي ‪ Open‬بينما اﻻختيار ‪Optimize‬‬
‫لتصغير حجم الملف التنفيذي أو الملف قيد المسح‬
‫وع ند الضــــغط علي العنوان اﻷدوات والخ يارات ‪ Tools & Options‬تظهر لك‬
‫النافذة التالية ‪:‬‬

‫تحتوي نا فذة اﻷدوات والخ يارات علي واﻷدوات ال خاصـــــة بالملف التنف يذي‬
‫فاﻻختيار ‪ RVA Offset‬ي ستخدم ﻹدخال عنوان معين لمعرفة اﻻوف ست الخاص‬
‫به كما يســــتخدم اﻻختيار ‪ TimeDateCracker‬لتغيير تاريخ البرنامج التنفيذي‬
‫وهو مفيد في حالة البرامج التي لها تاريخ صــــﻼحية محدد تنتهي بعده وفي‬
‫هذه الحالة يتم إدخال تاريخ جديد ‪ New Date‬ثم الضــــغط علي اﻷمر ‪، Write‬‬
‫واﻻختيار ‪ Association‬يتيح لك عرض البرنامج فعند الضــــغط علي الزر اﻷيمن‬
‫‪ Right Click‬علي اســــم الملف المطلوب بدﻻ من الذهاب إلي مجلد البرنامج‬
‫وتشــــغيله في كل مرة ‪ ،‬ويســــتخدم اﻻختيار ‪ Language‬ﻻختيار لغة واجهة‬
‫البرنامج من خﻼل اللغات المتاحة ‪:‬‬
‫‪87‬‬
‫وعند الضغط علي العنوا ن ‪ Plug-Ins‬تظهر النافذة التالية‬

‫تحتوي نا فذة ‪ Plug-ins‬علي خ يارات م ثل خاصــــ ية ‪ Extensions.dll‬وهي‬


‫تســـتخدم في إظهار البرنامج بالضـــغط ‪ Right Click‬والخاصـــية ‪Siceload.dll‬‬
‫خاصــــة ببرنامج ‪ SoftIce‬للملفات المشــــفرة أو المضــــغوطة بينما الخاصــــية‬
‫‪ Zeroseek.dll‬وتستخدم في البحث عن مساحة فارغة مناسبة ﻹدخال مقطع‬
‫أو أوامر وعند الضغط علي العنوان ‪ Processes‬تظهر النافذة التالية‬
‫‪88‬‬
‫وال نا فذة الســـــاب قة تحتوي علي العمل يات أو البرامج التي تع مل حال يا في‬
‫الذاكرة ولتحديث القائمة نضغط اﻻختيار ‪ Refresh‬بينما يستخدم اﻻختيار ‪Scan‬‬
‫لعمل مســح للملف بينما يســتخدم اﻻختيار ‪ Full dump‬يســتخدم لعمل ‪Full‬‬
‫‪ dump‬للملف المحدد وﻹنهاء البرنامج أضغط علي اﻻختيار ‪. Exit‬‬

‫ﺍﻟﱪﻧﺎﻣﺞ ‪PEiD 0.93‬‬


‫يســــتخدم هذا البرنامج في معرفة اللغة المســــتخدمة في تصــــميم الملف‬
‫التنفيــذي للبرنــامج ويراعي قبــل تشــــغيــل هــذا البرنــامج تثبيــت برنــامج‬
‫‪ DelphiFiles‬حتي يمكن تشـــغيل ‪ Plug-ins‬بشـــكل ســـليم وعند تشـــغيل‬
‫لبرنامج تظهر النافذة التالية‬

‫ثم نختار ملف البرنامج‬ ‫ونقوم بالضــــغط علي أداة فتح الملف التنفيذي‬
‫ونﻼحظ في النافذة التالية أن البرنامج مكتوب بلغة ‪Microsoft visual C++‬‬
‫‪89‬‬

‫وع ند الضــــغط علي اﻻخت يار ‪ Multi Scan‬تظهر نا فذة يتم من خﻼل ها اخت يار‬
‫المج لد المطلوب ع مل مســــح لمل فا ته وذ لك ع ند الضــــغط علي اﻻخت يار‬
‫‪ Scan Directory‬ثم اختيار المجلد المرغوب‪:‬‬

‫وبعد اختيار المجلد المرغوب عمل مســــح لملفاته تظهر نافذة تحتوي علي‬
‫مجموعة الملفات التنفيذية للبرامج ‪:‬‬

‫وباﻹشــــارة إلي أي ملف من القائمة والضــــغط ‪ Right Click‬تظهر قائمة وعند‬


‫تم تحم يل الملف من خﻼل بر نامج‬ ‫الضــــغط علي اﻻخت يار‬
‫‪. PeiD‬‬
‫‪90‬‬

‫وع ند تحم يل الملف في بر نامج ‪ PEid‬تظهر ال نافذة ال تال ية التي تحتوي علي‬
‫الملف وﻻحظ اللغة المكتوب بها البرنامج ‪:‬‬

‫كما يمكن من خﻼل القائمة المختصــــرة التي تظهر عند اﻹشــــارة إلي الملف‬
‫وال ضغط علي ‪ Right Click‬أن تعمل ‪ Dump‬للملف المحدد وذلك بال ضغط علي‬
‫اﻻختيــار )‪ Load in PEid (File‬وﻹنهــاء تشــــغيــل الملف نضــــغط اﻻختيــار‬
‫‪ Kill Selected Task‬ولتحديث القائمة نضغط اﻻختيار ‪. Refresh Task List‬‬
‫‪91‬‬

‫وعند الضغط علي زار اﻻختيارات ‪ Options‬تظهر نافذة الخيارات اﻵتية‬

‫وبعد تحديد اﻻختيارات وخصــائص البرنامج نقوم بالضــغط علي ‪ Save‬لحفظ تلك‬
‫من النافذة التالية‬ ‫الخصائص واﻻختيارات ثم عند الضغط علي اﻷداة‬
‫‪92‬‬

‫سوف تظهر لك نافذة أخري كما هو موضح في الشكل التالي ‪:‬‬

‫وعند اختيار ‪ Plugins‬ســــوف تظهر لك قائمة فرعية تحتوي علي مجموعة من‬
‫اﻻختيارات كما في التالي‪:‬‬

‫وعند ال ضغط علي خا صية ‪ CRC32‬سوف تظهر لك نافذة تحتوي علي جزء من‬
‫بيانات البرنامج‬
‫‪93‬‬
‫والخاصية ‪ UPXShit‬تعمل علي فك تشفير ‪UPXShit‬‬
‫والخا صية ‪ Crypto analyzer‬تظهر نافذة تو ضح الت شفير ‪ Crypto‬الموجود علي‬
‫الملف‬

‫بينما الخاصية ‪ PE2HTML‬فتستخدم في تحويل معلومات الملف التنفيذي إلي‬


‫صفحة انترنت‬
‫أما الخا صية ‪ PED Generic Unpacker‬فتظهر نافذة فك ضغط البرامج فإذا كان‬
‫البرنامج مضــغوط باســتخدام برنامج ‪ ASPack‬فيمكنك فك ضــغطه بدون الحاجة‬
‫إلي البرنامج المستخدم في ضغطه‬
‫‪94‬‬
‫وعند الضغط علي اﻻختيار ‪ Plugin Loader for PEid‬سوف تحصل علي النافذة‬
‫التالية ‪:‬‬

‫لتشغيل‬ ‫ومن خﻼل القائمة نختار الخاصية المرغوبة ثم نضغط علي اﻷداة‬
‫تلك الخاصية‬
‫وعند الضغط علي الخاصية ‪ Quick ChSum‬تظهر النافذة التالية‪:‬‬

‫أما الخاصــــية ‪ Rebuild PE‬فتعمل علي إعادة بناء الملف التنفيذي مع تقليص‬
‫حجمه‬
‫أما في حالة الضــغط علي الخاصــية ‪ String Viewer‬فتظهر لك النافذة التالية‬
‫والتي تحتوي علي النصوص الموجودة في البرنامج‬
‫‪95‬‬

‫وبالنســبة للخاصــية ‪ Unpacker for FSG v1.01‬فتســتخدم في فك تشــفير‬


‫البرامج المشفرة باستخدام برنامج ‪FSG‬‬
‫واﻻختيار ‪ Unpacker for UPX‬فيســتخدم في فك تشــفير البرامج المضــغوطة‬
‫باستخدام برنامج ‪UPX‬‬

‫برنامج ‪Stud PE 1.8.1‬‬


‫يستخدم هذا البرنامج في عمل مسح علي الملف التنفيذي للبرنامج لتحديد‬
‫اللغة المستخدمة في تصميم البرنامج أو إذا كان هذا الملف مشفر أو مضغوط‬
‫وعند تشغيل البرنامج تظهر لك النافذة التالية‪:‬‬

‫ولعمل مسح لملف معين نقوم بفتح قائمة ‪ File‬ثم نضغط ‪ Open‬ونقوم باختيار‬
‫الملف المرغوب مسحه‬
‫‪96‬‬

‫وتظهر في النافذة الســـابقة معلومات عن الملف الذي تم فتحه وعند الضـــغط‬


‫علي العنوان ‪ Sections‬تظهر لنا النافذة اﻵتية ‪:‬‬
‫‪97‬‬
‫وتحتوي نافذة الم قاطع علي م قاطع البر نامج وفي حا لة ما إذا كان البر نامج‬
‫مشـــفر ســـوف تﻼحظ أن بعض المقاطع ليس لها عنوان ‪ ،‬وعند الضـــغط علي‬
‫نافذة الوظائف أو الدوال ‪ Functions‬تظهر لنا النافذة التالية ‪:‬‬

‫وتحتوي ال نا فذة الســـــاب قة علي مجمو عة ا لدوال التي تم اســــتيراد ها من‬


‫الملفات الموضحة في القائمة وعند اﻻنتقال إلي اﻻختيار ‪ Resources‬تظهر لنا‬
‫النافذة التالية ‪:‬‬
‫‪98‬‬
‫وتحتوي نافذة مصــــادر البرنامج علي محتويات البرنامج من أيقونات ونصــــوص‬
‫وصور وعند اﻻنتقال إلي نافذة ‪ Signature‬سوف نحصل علي الشكل التالي‪:‬‬

‫وتلك النافذة توضـــح ما إذا كان الملف مشـــفر أو مضـــغوط وعند اﻻنتقال إلي‬
‫اﻻختيار ‪ Proc‬سوف تظهر النافذة التالية ‪:‬‬

‫توضـــح هذه النافذة البرامج التي تعمل حاليا في الذاكرة وعند الضـــغط ‪Right‬‬
‫‪ Click‬علي أي ملف تظهر قائمة مختصرة‬
‫‪99‬‬

‫ويمك نك من خﻼل ت لك ال قائ مة ع مل ‪ Dump‬للملف المحدد أو تحم يل الملف‬


‫في برنامج ‪ Stud_PE‬أو إنهاء تشــــغيل الملف ‪ Kill Process‬أو تحديث قائمة‬
‫الملفات ‪ Refresh‬فربما تكون بعض البرامج قد تم تشــغيلها بعد تحميل برنامج‬
‫‪ ، Stud-PE‬وعند اﻻنتقال إلي قائمة الخيارات ‪ Options‬تعرض النافذة التالية ‪:‬‬

‫وتحتوي تلك النافذة علي خ صائص واختيارات البرنامج مثل اختيار النافذة التي‬
‫يتم فتح البر نامج علي ها مثﻼ وذ لك من خﻼل اﻻخت يار ‪At start display this‬‬
‫‪ page‬واﻻختيار ‪ Stay on top‬الذي يجعل البرنامج علي الســطح دائما وغيرها‬
‫من اﻻعدادات والخصائص اﻷخرى‪.‬‬
‫‪100‬‬

‫ﺃﻭﻻ‪ :‬ﺑﺮﻧﺎﻣﺞ ‪ProcDump 1.6‬‬


‫يســــتخدم هذا البرنامج في فك تشــــفير البرامج المشــــفرة والمضــــغوطة‬
‫ويســــتخدم أيضــــا في عمل ‪ Dump‬أو نســــخه لها وتعديل الملف التنفيذي‬
‫للبرنامج وعند تشغيل البرنامج تظهر النافذة اﻵتية‬

‫ومن خﻼل نافذة البرنامج أضــغط علي اﻻختيار ‪ Unpack‬لفك تشــفير او ضــغط‬
‫احد البرامج وسوف تحصل علي النافذة التالية‬

‫من خﻼل تلك النافذة نقوم باختيار البرنامج المرغوب ا ستخدامه ثم ن ضغط ‪OK‬‬
‫فتظهر النافذة التي يتم من خﻼلها اختيار الملف التنفيذي ثم حدد مكان حفظ‬
‫الملف الذي تم فك تشـــفيره أو ضـــغطه ثم اضـــغط ‪Save‬وعند انتهاء العملية‬
‫سوف تحصل علي رسالة تفيد ذلك‬
‫‪101‬‬

‫وﻹ عادة ب ناء الملف التنف يذي للبر نامج أضــــغط اﻻخت يار ‪ Rebuild PE‬ثم حدد‬
‫الملف الذي ترغب في إعادة ب ناءه ولتحرير الملف التنف يذي اضــــغط اﻻخت يار‬
‫‪ PE Editor‬وفي هذه الحالة سوف تظهر نافذة ﻻختيار الملف التنفيذي‪:‬‬

‫يظهر في النافذة الســابقة نقطة الدخول للبرنامج ‪ Entry Point‬وعند الضــغط‬


‫علي اﻻختيار ‪ Sections‬تظهر النافذة التالية‪:‬‬

‫تحتوي ت لك ل نا فذة علي م قاطع البر نامج وهي التي يتم من خﻼل ها التعرف‬
‫علي البرنامج إذا كان مشفر أم غير ذلك وعند الضغط علي اﻻختيار ‪Directory‬‬
‫تظهر لك النافذة التالية ‪:‬‬
‫‪102‬‬

‫تحتوي هذه ال نا فذة علي معلو مات الملف التنف يذي وال ‪ PE‬أو الملف ال قا بل‬
‫للتنفيذ ‪ Portable Executable‬وإذا رغبت في عمل ‪ Dump‬لملف قم بتشــغيل‬
‫الملف ثم تحول إلي البرنامج وحدد الملف ثم أضــــغط ‪ Right Click‬ومن خﻼل‬
‫القائمة المختصرة أضغط ‪: Dump‬‬
‫‪103‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪Apispy 2.5‬‬


‫يســتخدم هذا البرنامج في التقاط مجموعة دوال ‪ API‬للبرنامج وعند تشــغيل‬
‫البرنامج تظهر النافذة التالية‪:‬‬

‫ﻻختيار ملف البرنامج المطلوب‬ ‫من خﻼل تلك النافذة أضــــغط علي اﻷداة‬
‫ثم أضــــغط ‪ Run‬وبعد لحظات تظهر نافذة تحتوي علي مجموعة ملفات ‪DLL‬‬
‫التي يحتاجها البرنامج‬
‫‪104‬‬
‫وبعد إغﻼق البرنامج سوف تظهر النافذة التالية التي تحتوي علي الدوال التي‬
‫قام البرنامج باســــتدعائها وإذا رغبت في حفظ هذه البيانات أضــــغط اﻻختيار‬
‫‪Save LOG‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪ASCII Table 2.01‬‬


‫يســـــتخــدم هــذا ال برنــامج ل م عرفــة اﻻ كواد ال م خت لفــة ل ل برامج مثــل‪:‬‬
‫‪ Dec , Hex,Oct,Char‬وعند تشغيل البرنامج تظهر النافذة اﻵتية‪:‬‬

‫ك ما تﻼحظ تظهر ال نا فذة الســـــاب قة التحويﻼت بين اﻷنظ مة المختل فة والتي‬


‫يمكن اﻻستفادة منها في عملية فك الحماية ‪.‬‬
‫‪105‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪eXeScope 6.41‬‬


‫يســــتخدم هذا البرنامج في تحرير أو تعديل الملفات التنفيذية للبرامج وعند‬
‫تشغيل البرنامج تحصل علي النافذة التالية‪:‬‬

‫من خﻼل قائمة ‪ File‬نقوم بالضــــغط علي ‪ Open‬ثم نختار الملف التنفيذي ثم‬
‫نضغط ‪ Open‬فتظهر النافذة التالية ‪:‬‬
‫‪106‬‬

‫من خﻼل النافذة الســـابقة نﻼحظ مصـــادر البرنامج ‪ Resources‬التي يحتاجها‬


‫أثناء تشــغيله ولحفظ صــورة أيقونة البرنامج أفتح قائمة ‪ File‬ثم اضــغط اﻻختيار‬
‫‪ Export‬حدد مكان حفظ الصــــورة ولعرض احد ديالو جات البرنامج افتح قائمة‬
‫‪ Dialog‬ثم اختار الديالوج المطلوب ثم اضغط ‪ View‬لعرضه ‪.‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪HexDecOctBin Converter 1.00‬‬


‫يســــتخدم هذا البرنامج في التحويل بين اﻷنظمة المختلفة وعند تشــــغيل‬
‫البرنامج تظهر النافذة اﻵتية‬

‫من خﻼل نافذة التحويل يمكنك كتابة الرقم العشــــري ‪ Decimal‬الذي ترغب‬
‫في تحويله إلي اﻷنظمة اﻷخرى وســــوف تري قيمة هذا الرقم في اﻷنظمة‬
‫الثﻼثة اﻷخرى‬

‫ﺑﺮﻧﺎﻣﺞ ‪ImportREConstructor 1.4.2‬‬


‫هذا البرنامج يســـتخدم في إصـــﻼح الوظائف المســـتوردة ‪Import Functions‬‬
‫للبرامج المشفرة وعند تشغيل البرنامج تظهر النافذة التالية‪:‬‬
‫‪107‬‬

‫من خﻼل القائمة اختر الملف الذي ترغبه ‪:‬‬

‫في خا نة ‪ OEP‬اك تب الرقم ا لذي ظهر لك في الجزء اﻷعلى من ال نا فذة ثم‬


‫فتظهر لك‬ ‫ثم اضــغط اﻻختيار‬ ‫أضــغط اﻻختيار‬
‫نافذة مثل اﻵتية ‪:‬‬
‫‪108‬‬

‫وعند الضــغط علي اﻻختيار ‪ Show Invalid‬ســوف تحصــل علي نافذة‬


‫مثل النافذة اﻵتية‪:‬‬

‫وتحتوي تلك النافذة علي الدوال الغير ســــليمة وبعد ذلك اضــــغط‬
‫‪ Right Click‬علي الدوال السابقة ثم اضغط اﻻختيار )‪Trace Level1(Disasm‬‬

‫ســــوف تﻼحظ ن عدد الدوال الغير ســــليمة أو شــــرعية تقلص عن العدد‬


‫السابق ‪:‬‬
‫‪109‬‬

‫ﺍﻟﱪﻧﺎﻣﺞ ‪Import REConstructor 1.6‬‬


‫يعد هذا البرنامج هو النسخة الحديثة لبرنامج تصليح الوظائف السابق للبرامج‬
‫المشفرة وعند تشغيل البرنامج تظهر النافذة التالية‪:‬‬

‫وكما في البرنامج الســــابق افتح القائمة في علي النافذة ثم حدد البرنامج‬


‫الذي ترغبه‬
‫‪110‬‬
‫وبعد اختيار الملف ضــــع الرقم الذي حصــــلت عليه في الخانة ‪ DEP‬كما في‬
‫وبعد ذلك ا ضغط اﻻختيار‬ ‫البرنامج ال سابق ثم أ ضغط اﻻختيار‬
‫فتحصل علي النافذة اﻵتية‪:‬‬

‫بعد ذلك أضغط اﻻختيار ‪ Show Invalid‬لعرض الدوال الغير شرعية أو سليمة‬

‫بعد ذلك قم بالضــغط ‪ Right Click‬علي الملفات المحددة ثم من خﻼل القائمة‬


‫المختصرة أضغط اﻻختيار )‪: Trace Level1 (Disasm‬‬
‫‪111‬‬
‫بعد ذلك ســوف تجد أن عدد الدوال الغير ســليمة أو شــرعية قد قل كثيرا وبعد‬
‫ذلك نستخدم ‪ Plugins‬الخاصة بالبرنامج كما في الشكل التالي‬

‫ﺍﻟﱪﻧﺎﻣﺞ ‪ProcessKiller 1.1‬‬


‫يســتخدم هذا البرنامج في إنهاء أو إغﻼق البرامج النشــطة حاليا في الذاكرة‬
‫وعند تشغيل البرنامج سوف تﻼحظ ظهور النافذة اﻵتية‪:‬‬
‫‪112‬‬
‫من خﻼل نــافــذة البرنــامج الرئيســــيــة حــدد البرنــامج المطلوب إغﻼقــه ثم‬
‫اضــــغط اﻻخت يار ‪ Kill Selected Process‬ولت حد يث ال قائ مة أضــــغط اﻻخت يار‬
‫‪. Get Process List‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪Revirgin‬‬
‫يســتخدم هذا البرنامج في إصــﻼح الجداول ‪ Import Table‬للبرامج المشــفرة‬
‫وعند تشغيل البرنامج سوف تحصل علي الشكل التالي‪:‬‬

‫خﻼل نافذة البرنامج نقوم أوﻻ بتشــــغيل برنامج ‪ LordPE‬ونقوم بعمل ‪Dump‬‬
‫للملف المشـــفر ‪ ،‬ثم نقوم بتشـــغيل البرنامج المشـــفر ثم من خﻼل برنامج‬
‫‪ Revirgin‬ثم نضــــغط اﻻختيار ‪ Refresh‬ثم نقوم بتحديد الملف المشــــفر وبعد‬
‫اختيار الملف المشفر نضع ‪ OEP‬ثم نضغط ‪ Fetch IAT‬ثم نضغط ‪IAT Resolve‬‬

‫ﺑﺮﻧﺎﻣﺞ ‪Windows Enabler 1.1‬‬


‫ي ستخدم هذا البرنامج في تن شيط أو تفعيل اﻻزار غير الن شطة وعند ت شغيل‬
‫البرنامج سوف يظهر البرنامج بجوار الساعة علي شريط المهام ‪Task Bar‬‬

‫وعند الضغط علي اﻷيقونة مرة واحدة بالفارة سوف يتحول الشكل إلي اﻵتي‬

‫وعند الضــغط علي أي زر غير نشــط ضــغطة واحدة فانه يتم تفعيل أو تنشــيط‬
‫هذا الزر كما في المثال التالي‬
‫‪113‬‬

‫في الشكل السابق تﻼحظ أن الزر ‪ Registry‬غير نشط ولكي يتم تنشيط هذا‬
‫الزر نقوم أوﻻ بكتابة أي نص داخل مربع النص وعندئذ يتم تنشيط الزر ‪:‬‬

‫وعند الضغط علي الزر سوف تحصل علي الرسالة اﻵتية‬


‫‪114‬‬

‫ثم عند الضغط علي ‪ OK‬تظهر بالتالي النافذة التالية ‪:‬‬


‫‪116‬‬

‫ﻓﻚ ﲪﺎﻳﺔ ﺑﺮﺍﻣﺞ ﺍﻟﻔﻴﺠﻮﺍﻝ ﺑﻴﺴﻴﻚ‬


‫من اﻷمور ال شائعة أن برامج الفيجوال بي سيك صعبة الك سر حيث ﻻ‬
‫يمكن أن يســــتخــدم معهــا الــدوال التقليــديــة مثــل ‪ MessageBoxA‬أو‬
‫‪ GetWindowTextA‬وبذلك تكون صعبة اﻻختراق ولكن هذا اﻷمر متاح من خﻼل‬
‫اســـتخدام برنامج ‪ HexWorkshop‬وســـوف نتعرف في الســـطور التالية علي‬
‫كيفية استخدام هذا البرنامج في كسر حماية برامج الفيجوال بيسيك‪.‬‬

‫ﺍﺳﺘﺨﺪﺍﻡ ﺑﺮﻧﺎﻣﺞ ‪HexWorkshop‬‬


‫كما ذكرنا فان برنامج ‪ HexWorkshop‬هو الذي يســتخدم للتعامل مع‬
‫برامج ‪ Visual Basic‬ويتم ذلك بتشغيل البرنامج ثم نحدد أي ملف يحتوي علي‬
‫لغة الفيجوال بيسيك وبعد اختيار الملف أضغط ‪ Ctrl+G‬ثم تحرك إلي اﻻوفست‬
‫‪ 250‬أو ‪238‬‬

‫واﻵن تحول إلي مجلد برنامج ‪ Softice‬ثم أفتح الملف ‪ Winice.dat‬وأضـــف إليه‬
‫السطور التالية‪:‬‬
‫‪Exp=c:\windows\system\msvbm60.dll‬‬
‫‪;Exp=c:\windows\system\msvbvm50.dll‬‬
‫الســـطر اﻷول يدل علي أن برنامج ‪ Softice‬ســـوف يشـــغل هذا الملف لعمل‬
‫نقطة توقف في برنامج الفيجوال بيســـيك الذي يســـتخدم هذا الملف ونفس‬
‫الحال بالنســـبة للســـطر الثاني غير الســـطر الثاني كما تﻼحظ يبدأ بفاصـــلة‬
‫منقوطة ; وهذا معناه أن الملف غير مفعل وتلك الفاصـــلة تســـتخدم في حالة‬
‫الرغبة في اســـتخدام الملف ‪ msvbvm60.dll‬فقط ثم عند إلغاء الفاصـــلة يتم‬
‫تفع يل الملف ‪ msvbvm50.dll‬ولكن ي جب إل غاء تفع يل الملف ‪msvbvm60.dll‬‬
‫بإضافة الفاصلة في أوله حيث ﻻ يمكن تفعيل الملفان في نفس الوقت‪.‬‬
‫قم ب عد ذ لك بإضـــــا فة القي مة ‪ SYM=4096‬في ملف ‪ winice.dat‬وب عد حفظ‬
‫التعديﻼت اعد تشغيل الجهاز ‪ Restart‬حتي يتم تنفيذ تلك التغيرات‪.‬‬
‫معظم برامج فيجوال بيســـيك تســـتخدم الدالة ‪ vbastrcmp‬ﻹيجاد الســـيريال‬
‫وعلي ذلــك لوضــــع نقطــة توقف في برنــامج ‪ Softice‬نكتــب اﻷمر ‪Bpx‬‬
117
(‫ ثم نقوم بتشـــغيل البرنامج وندخل اﻻســـم )أي اســـم‬msvb60_vbastrcmp
.‫والسيريال )أي رقم( ثم نضغط زر التسجيل‬
‫ في إيجاد الســــيريال اســــتخدم برنامج‬Softice ‫في حالة عدم فعالية برنامج‬
‫ وهو يحتوي علي مجموعة‬Functions ‫ ثم انتقل إلي ق سم الدوال‬W32Dasm
:‫الدوال اﻵتية‬

.__vbaBoolVar
.__vbaBoolVarNull
.__vbaCastObjVar
.__vbaChkstk
.__vbaEnd
.__vbaErrorOverflow
.__vbaExceptHandler
.__vbaExitProc
.__vbaFileClose
.__vbaFileOpen
.__vbaForEachCollObj
.__vbaFPException
.__vbaFpI4
.__vbaFpR4
.__vbaFreeObj
.__vbaFreeObjList
.__vbaFreeStr
.__vbaFreeStrList
.__vbaFreeVar
.__vbaFreeVarList
.__vbaHresultCheckObj
.__vbaI2I4
.__vbaI2Str
.__vbaI2Var
.__vbaI4Str
.__vbaI4Var
.__vbaInStr
.__vbaLateIdCall
.__vbaLateIdCallLd
.__vbaLateIdSt
.__vbaLenBstr
.__vbaLenVar
.__vbaLsetFixstr
118
.__vbaNew2
.__vbaNextEachCollObj
.__vbaObjSet
.__vbaObjSetAddref
.__vbaOnError
.__vbaPrintFile
.__vbaPrintObj
.__vbaR4Var
.__vbaR8Str
.__vbaR8Var
.__vbaRecAnsiToUni
.__vbaRecAssign
.__vbaRecUniToAnsi
.__vbaSetSystemError
.__vbaStrBool
.__vbaStrCat
.__vbaStrCmp
.__vbaStrCopy
.__vbaStrI2
.__vbaStrI4
.__vbaStrMove
.__vbaStrR8
.__vbaStrToAnsi
.__vbaStrToUnicode
.__vbaStrVarCopy
.__vbaStrVarMove
.__vbaStrVarVal
.__vbaUI1I2
.__vbaVarAnd
.__vbaVarCat
.__vbaVarCmpEq
.__vbaVarCmpNe
.__vbaVarCopy
.__vbaVarDup
.__vbaVarForInit
.__vbaVarForNext
.__vbaVarMove
.__vbaVarSub
.__vbaVarTstEq
119
.__vbaVarTstNe
._adj_fdiv_m16i
._adj_fdiv_m32
._adj_fdiv_m32i
._adj_fdiv_m64
._adj_fdiv_r
._adj_fdivr_m16i
._adj_fdivr_m32
._adj_fdivr_m32i
._adj_fdivr_m64
._adj_fpatan
._adj_fprem
._adj_fprem1
._adj_fptan
._allmul
._CIatan
._CIcos
._CIexp
._CIlog
._CIsin
._CIsqrt
._CItan
.DllFunctionCall
.EVENT_SINK_AddRef
.EVENT_SINK_QueryInterface
.EVENT_SINK_Release
.rtcAnsiValueBstr
.rtcBeep
.rtcCommandVar
.rtcDoEvents
.rtcErrObj
.rtcGetDayOfMonth
.rtcGetHourOfDay
.rtcGetMinuteOfHour
.rtcGetMonthOfYear
.rtcGetPresentDate
.rtcGetSecondOfMinute
.rtcGetTimer
.rtcGetTimeVar
120
.rtcGetYear
.rtcHexVarFromVar
.rtcInputBox
.rtcIsNumeric
.rtcLeftCharVar
.rtcLowerCaseVar
.rtcMidCharVar
.rtcMonthName
.rtcMsgBox
.rtcReplace
.rtcRightCharVar
.rtcSpaceBstr
.rtcSpaceVar
.rtcStrFromVar
.rtcTrimVar
.rtcUpperCaseVar
.rtcVarBstrFromAnsi
.rtcVarFromError
.rtcVarStrFromVar
.ThunRTMain
d3drm.Direct3DRMCreate
DDraw.DirectDrawCreate
gdi32.BitBlt
gdi32.CreateCompatibleBitmap
gdi32.CreateCompatibleDC
gdi32.CreatePen
gdi32.DeleteDC
gdi32.Polygon
gdi32.Polyline
gdi32.SetBkMode
gdi32.SetPixel
gdi32.StretchBlt
MSVBVM50.__vbaAryConstruct
MSVBVM50.__vbaAryDestruct
MSVBVM50.__vbaAryLock
MSVBVM50.__vbaAryUnlock
MSVBVM50.__vbaBoolVarNull
MSVBVM50.__vbaCastObj
MSVBVM50.__vbaCastObjVar
121
MSVBVM50.__vbaCheckType
MSVBVM50.__vbaChkstk
MSVBVM50.__vbaCopyBytes
MSVBVM50.__vbaEnd
MSVBVM50.__vbaErrorOverflow
MSVBVM50.__vbaExceptHandler
MSVBVM50.__vbaExitEachColl
MSVBVM50.__vbaExitProc
MSVBVM50.__vbaFileClose
MSVBVM50.__vbaFileOpen
MSVBVM50.__vbaForEachCollAd
MSVBVM50.__vbaForEachCollObj
MSVBVM50.__vbaFpCDblR4
MSVBVM50.__vbaFpCDblR8
MSVBVM50.__vbaFpCSngR4
MSVBVM50.__vbaFpCSngR8
MSVBVM50.__vbaFPException
MSVBVM50.__vbaFpI2
MSVBVM50.__vbaFpI4
MSVBVM50.__vbaFPInt
MSVBVM50.__vbaFpR4
MSVBVM50.__vbaFpR8
MSVBVM50.__vbaFreeObj
MSVBVM50.__vbaFreeObjList
MSVBVM50.__vbaFreeStr
MSVBVM50.__vbaFreeStrList
MSVBVM50.__vbaFreeVar
MSVBVM50.__vbaFreeVarList
MSVBVM50.__vbaGenerateBoundsError
MSVBVM50.__vbaGet3
MSVBVM50.__vbaGet4
MSVBVM50.__vbaGetOwner3
MSVBVM50.__vbaHresultCheck
MSVBVM50.__vbaHresultCheckObj
MSVBVM50.__vbaI2I4
MSVBVM50.__vbaI2Var
MSVBVM50.__vbaI4Str
MSVBVM50.__vbaI4Var
MSVBVM50.__vbaInputFile
122
MSVBVM50.__vbaInStr
MSVBVM50.__vbaInStrVar
MSVBVM50.__vbaLateIdCall
MSVBVM50.__vbaLateIdCallLd
MSVBVM50.__vbaLateIdSt
MSVBVM50.__vbaLateMemCall
MSVBVM50.__vbaLateMemCallLd
MSVBVM50.__vbaLateMemSt
MSVBVM50.__vbaLenBstr
MSVBVM50.__vbaNew
MSVBVM50.__vbaNew2
MSVBVM50.__vbaNextEachCollAd
MSVBVM50.__vbaNextEachCollObj
MSVBVM50.__vbaObjIs
MSVBVM50.__vbaObjSet
MSVBVM50.__vbaObjSetAddref
MSVBVM50.__vbaObjVar
MSVBVM50.__vbaOnError
MSVBVM50.__vbaPowerR8
MSVBVM50.__vbaPrintFile
MSVBVM50.__vbaPrintObj
MSVBVM50.__vbaPut3
MSVBVM50.__vbaPut4
MSVBVM50.__vbaPutOwner3
MSVBVM50.__vbaR4ErrVar
MSVBVM50.__vbaR4Str
MSVBVM50.__vbaR4Var
MSVBVM50.__vbaR8IntI4
MSVBVM50.__vbaR8Str
MSVBVM50.__vbaR8Var
MSVBVM50.__vbaRecAssign
MSVBVM50.__vbaRecDestruct
MSVBVM50.__vbaRedim
MSVBVM50.__vbaRedimPreserve
MSVBVM50.__vbaSetSystemError
MSVBVM50.__vbaStrCat
MSVBVM50.__vbaStrCmp
MSVBVM50.__vbaStrCopy
MSVBVM50.__vbaStrI2
123
MSVBVM50.__vbaStrI4
MSVBVM50.__vbaStrMove
MSVBVM50.__vbaStrR4
MSVBVM50.__vbaStrR8
MSVBVM50.__vbaStrToAnsi
MSVBVM50.__vbaStrToUnicode
MSVBVM50.__vbaStrVarMove
MSVBVM50.__vbaStrVarVal
MSVBVM50.__vbaVarAdd
MSVBVM50.__vbaVarAnd
MSVBVM50.__vbaVarCat
MSVBVM50.__vbaVarCmpEq
MSVBVM50.__vbaVarCmpNe
MSVBVM50.__vbaVarDiv
MSVBVM50.__vbaVarDup
MSVBVM50.__vbaVarIdiv
MSVBVM50.__vbaVarMove
MSVBVM50.__vbaVarMul
MSVBVM50.__vbaVarNeg
MSVBVM50.__vbaVarOr
MSVBVM50.__vbaVarSub
MSVBVM50.__vbaVarTstEq
MSVBVM50.__vbaVarTstGt
MSVBVM50.__vbaVarTstLe
MSVBVM50.__vbaVarVargNofree
MSVBVM50._adj_fdiv_m16i
MSVBVM50._adj_fdiv_m32
MSVBVM50._adj_fdiv_m32i
MSVBVM50._adj_fdiv_m64
MSVBVM50._adj_fdiv_r
MSVBVM50._adj_fdivr_m16i
MSVBVM50._adj_fdivr_m32
MSVBVM50._adj_fdivr_m32i
MSVBVM50._adj_fdivr_m64
MSVBVM50._adj_fpatan
MSVBVM50._adj_fprem
MSVBVM50._adj_fprem1
MSVBVM50._adj_fptan
MSVBVM50._allmul
124
MSVBVM50._CIatan
MSVBVM50._CIcos
MSVBVM50._CIexp
MSVBVM50._CIlog
MSVBVM50._CIsin
MSVBVM50._CIsqrt
MSVBVM50._CItan
MSVBVM50.DllFunctionCall
MSVBVM50.EVENT_SINK_AddRef
MSVBVM50.EVENT_SINK_QueryInterface
MSVBVM50.EVENT_SINK_Release
MSVBVM50.GetMem2
MSVBVM50.GetMem4
MSVBVM50.GetMem8
MSVBVM50.GetMemNewObj
MSVBVM50.GetMemObj
MSVBVM50.PutMem2
MSVBVM50.PutMem4
MSVBVM50.PutMem8
MSVBVM50.PutMemNewObj
MSVBVM50.PutMemObj
MSVBVM50.rtcAtn
MSVBVM50.rtcBeep
MSVBVM50.rtcCos
MSVBVM50.rtcDoEvents
MSVBVM50.rtcEndOfFile
MSVBVM50.rtcErrObj
MSVBVM50.rtcFreeFile
MSVBVM50.rtcGetDateVar
MSVBVM50.rtcGetSetting
MSVBVM50.rtcInputBox
MSVBVM50.rtcIsMissing
MSVBVM50.rtcLeftCharVar
MSVBVM50.rtcMidCharBstr
MSVBVM50.rtcMidCharVar
MSVBVM50.rtcMsgBox
MSVBVM50.rtcR8ValFromBstr
MSVBVM50.rtcRgb
MSVBVM50.rtcRightCharVar
‫‪125‬‬
‫‪MSVBVM50.rtcSaveSetting‬‬
‫‪MSVBVM50.rtcSin‬‬
‫‪MSVBVM50.rtcSqr‬‬
‫‪MSVBVM50.rtcTrimVar‬‬
‫‪MSVBVM50.rtcVarBstrFromAnsi‬‬
‫‪MSVBVM50.rtcVarFromFormatVar‬‬
‫‪MSVBVM50.rtcVarStrFromVar‬‬
‫‪MSVBVM50.SetMemNewObj‬‬
‫‪MSVBVM50.SetMemObj‬‬
‫‪MSVBVM50.ThunRTMain‬‬

‫وهنــاك العــديــد من الطرق لكســــر حمــايــة البرامج المكتوبــة بلغــة‬


‫الفيجوال بيسيك سوف نستعرض بعض منها فيما يلي ‪:‬‬

‫ﻣﻘﺎﺭﻧﺔ ﺍﻟﻨﺼﻮﺹ ‪String Compare‬‬


‫من خﻼل ت لك الطري قة يتم م قار نة الســــير يال الحقيقي للبر نامج‬
‫بالسيريال الغير حقيقي الذي ندخله في البرنامج ويتم كتابة الكود كاﻵتي‪:‬‬

‫‪If "Correct Password"="Entered Password" then‬‬


‫‪Goto Correct Message‬‬
‫‪Else‬‬
‫‪Goto Wrong Message‬‬
‫‪End if‬‬

‫ويســــتخدم لهذه المقارنة الدالة ‪ vbastrcmp‬ولكســــر حماية برامج فيجوال‬


‫بيســـيك من اﻹصـــدار الســـادس ضـــع نقطة توقف علي تلك الدالة بالشـــكل‬
‫التالي‪:‬‬
‫‪bpx msvbvm60!_vbvartsteq‬‬

‫أو قم بتشـــغيل برنامج ‪ W32Dasm‬ثم نتقل إلي تلك الدالة ونتحرك ﻷمر القفز‬
‫الموجود في اﻷعلى ثم قم بعكس اﻷمر‬

‫ﻣﻘﺎﺭﻧﺔ ﺍﳌﺘﻐﲑ ‪Variant Compare‬‬


‫يتم في هذه الطريقة المقارنة بين متغيرين وقد تكون المقارنة بين نصـــوص أو‬
‫أرقام ويمكن أن يكود كود المقارنة كما يلي ‪:‬‬

‫‪Dim correct As Variant, entered As Variant‬‬


126
Correct=Correct Password
Entered=Text1.Text
If correct=entered Then
GoTo Correct Message
Else
GoTo Wrong Message
End if

‫ ولكســر حماية برامج‬vbavartsteq ‫والدالة التي تســتخدم لهذه المقارنة هي‬


:‫فيجوال بيسيك ضع نقطة توقف علي هذه الدالة بالشكل التالي‬

Bpx msvbm60!_vbvartsteq

Long Compare ‫ﺍﳌﻘﺎﺭﻧﺔ ﺍﻟﻄﻮﻳﻠﺔ‬


‫في هذه الطري قة تتم الم قار نة بين متغيرين من اﻷر قام فقط وتكون الم قار نة‬
:‫كما يلي‬
Dim correct As Long, entered As Long
Correct=6579
Entered=Text1.Text
If correct=entered Then
GoTo Correct Message
Else
GoTo Wrong Message
End if

‫وفي هذا النوع من الم قار نة ﻻ يتم اســــت خدام دا لة ح يث أن الم قار نة تكون‬
‫داخل الملف التنفيذي‬

Single Compare ‫ﺍﳌﻘﺎﺭﻧﺔ ﺍﻟﻔﺮﺩﻳﺔ‬


‫تتم المقارنة في هذا النوع بين صــــفتين فرديتين من البيانات وتكون المقارنة‬
:‫بين اﻷرقام فقط كما في المثال التالي‬
Dim correct As Single, entered As Single
Correct=Correct Password
Entered=Text1.Text
If correct=entered Then
GoTo Correct Message
Else
‫‪127‬‬
‫‪GoTo Wrong Message‬‬
‫‪End if‬‬
‫ﻻ يســــت خدم في هذه الم قار نة دا لة ح يث أن الم قار نة تكون دا خل الملف‬
‫التنفيذي‬

‫ﺍﳌﻘﺎﺭﻧﺔ ﺍﳌﻀﺎﻋﻔﺔ ‪Double Compare‬‬


‫تتم المقارنة في هذا النوع بين صـــفتين من البيانات المزدوجة وتكون المقارنة‬
‫بين أرقام فقط ويكون الكود كما يلي‪:‬‬

‫‪Dim correct As Double, entered As Double‬‬


‫‪Correct=Correct Password‬‬
‫‪Entered=Text1.Text‬‬
‫‪If correct=entered Then‬‬
‫‪GoTo Correct Message‬‬
‫‪Else‬‬
‫‪GoTo Wrong Message‬‬
‫‪End if‬‬

‫ﻻ يتم اســــتخدام دالة في هذه الطريقة حيث أنها تتم داخل الملف التنفيذي‬
‫أيضا‬

‫ﻣﻘﺎﺭﻧﺔ ﺍﻟﻘﻴﻢ ﺍﻟﺼﺤﻴﺤﺔ‪Integer Compare:‬‬


‫في هــذا النوع من المقــارنــة تتم عمليــة المقــارنــة بين نوعين من اﻷرقــام‬
‫الصــــحيحة و بالطبع تكون المقارنة في هذا النوع بين اﻷرقام فقط ويمكن أن‬
‫يكون الكود كما في المثال التالي‪:‬‬

‫‪Dim correct As Integer, entered As Integer‬‬


‫‪Correct=Correct Password‬‬
‫‪Entered=Text1.Text‬‬
‫‪If correct=entered Then‬‬
‫‪GoTo Correct Message‬‬
‫‪GoTo Wrong Message‬‬
‫‪End if‬‬

‫ﻻ يتم اســــت خدام دا لة مع هذا النوع من الم قار نة ح يث تكون دا خل الملف‬


‫التنفيذي ‪.‬‬
‫‪128‬‬

‫ﻣﻘﺎﺭﻧﺔ ﺍﻟﺒﺎﻳﺖ ‪Byte Compare‬‬


‫تتم المقارنة في هذا النوع بين صــــفتين أو متغيرين من البايت وﻻ يزيد عدد‬
‫الحروف في هذه المقارنة عن ‪ 255‬حرف ويكون الكود كما في المثال التالي‪:‬‬

‫‪Dim correct As Byte, entered As Byte‬‬


‫‪Correct=Correct Password‬‬
‫‪Entered=Text1.Text‬‬
‫‪If correct=entered Then‬‬
‫‪GoTo Correct Message‬‬
‫‪GoTo Wrong Message‬‬
‫‪End if‬‬

‫في هذه المقارنة أيضــــا ﻻ يتم اســــتخدام دالة حيث أنها تتم داخل الملف‬
‫التنفيذي‪.‬‬

‫ﻣﻘﺎﺭﻧﺔ ﺍﻟﻌﻤﻠﺔ ‪Currency Compare‬‬


‫تتم الم قار نة في هذا النوع بين قيمتين من قيم العم لة ‪ Currency‬أو القيم‬
‫النقدية ويكون الكود كما في المثال التالي‪:‬‬

‫‪Dim correct As Currency, entered As Currency‬‬


‫‪Correct=Correct Password‬‬
‫‪Entered=Text1.Text‬‬
‫‪If correct=entered Then‬‬
‫‪GoTo Correct Message‬‬
‫‪GoTo Wrong Message‬‬
‫‪End if‬‬

‫كما ﻻ يســــتخدم مع هذه المقارنة كذلك أية دوال حيث أنها تتم داخل الملف‬
‫التنفيذي‪.‬‬

‫ﺍﺳﺘﺨﺪﺍﻡ ﺑﺮﻧﺎﻣﺞ ‪SmartCheck‬‬


‫في هذه الطريقة يتم أوﻻ ضــبط بعض اﻻعدادات في برنامج ‪ SmartCheck‬قبل‬
‫اســتخدامه في كســر حماية برامج فيجوال بيســيك وقد ذكرنا تلك اﻻعدادات‬
‫‪129‬‬
‫عندما قمنا بشــــرح البرنامج واﻵن قم بتشــــغيل البرنامج ثم من خﻼله أختر‬
‫البرنامج المطلوب كســر حمايته وادخل البيانات التي تريدها ثم أضــغط ‪ OK‬ثم‬
‫اضــغط ‪ End‬ﻹيقاف البرنامج عن العمل ومن ثم أضــغط ‪ View‬وبعد ذلك أضــغط‬
‫اﻻختيار ‪ Show All Events‬لعرض كل الخطوات التي تمت أثناء تشغيل البرنامج‬
‫وقم بالبحث عن الدوال اﻵتية‪:‬‬

‫‪_vbstrcomp‬‬
‫‪_vbstrcmp‬‬
‫‪_vbavastrteq‬‬

‫بالرغم من بحثك داخل الدوال السابقة فربما ﻻ تجد السيريال الحقيقي ويجب‬
‫عليك التنقل بين الســــطور بعناية حتي تجد الســــيريال الحقيقي للبرنامج‬
‫وســوف تجد الســيريال متبوع باﻷمر ‪ _vba‬مثﻼ يمكن أن يكون ‪، _vbafreestr‬‬
‫ولكي تستطيع كسر حماية برامج فيجوال بيسيك المكتوبة باﻹصدار السادس‬
‫فيجب أن يظل الملف ‪ msvbvm60‬في المقدمة‪.‬‬
‫‪132‬‬

‫ﺍﺳﺘﺨﺪﺍﻡ ﺑﺮﻧﺎﻣﺞ ‪eXeScope‬‬


‫كثيرا ما تظهر تلك الشــــاشــــة المزعجة التي تظهر عند تشــــغيل‬
‫البرنامج وتطلب منك التســـجيل وتظهر لبعض الوقت ثم تختفي بعد ذلك ويبدأ‬
‫تشـــغيل البرنامج وســـوف نســـتخدم برنامج ‪ eXeScope‬ﻹزالة تلك الرســـالة‬
‫المزعجة ولتنفيذ ذلك شــــغل برنامج ‪ eXeScope‬ثم حدد البرنامج الذي تظهر‬
‫معه الشاشة المزعجة ثم اضغط ‪ Dialog‬ثم حدد رقم الديالوج المرغوب واكتب‬
‫القيم التالية‪:‬‬

‫بعد ذلك قم بحفظ هذه التغيرات ثم شــــغل البرنامج وســــوف تﻼحظ اختفاء‬
‫الشاشة المزعجة‬

‫ﻃﺮﻕ ﺇﺧﻔﺎء ﺍﻟﺸﺎﺷﺔ ﺍﳌﺰﻋﺠﺔ‬


‫توجد عدة طرق يمكن اســتخدامها ﻹخفاء الشــاشــة المزعجة ســوف نتعرف‬
‫علي بعضها فيما يلي‬
‫الطريقة اﻷولي‪:‬‬
‫شــــغـل بر نامج ‪ Hiew‬ثم أضــــغط مفتـاح الوظيفـة ‪ F7‬ثم نكتـب في خا نة‬
‫‪ ASCII‬كلمة ‪. NAG‬‬

‫ثم ابحث عن الكود ‪ FF FF FF FF 82‬وعند الوصــــول إلي هذه اﻷرقام توقف‬


‫بالمؤ شر عند الرقم ‪ 82‬ثم أ ضغط مفتاح الوظيفة ‪ F3‬لتعديل هذا الرقم إلي ‪90‬‬
‫أو ‪ E7‬ثم أضغط ‪ F9‬لحفظ التغيير ثم اضغط مفتاح ‪ ESC‬ثم قم بتشغيل البرنامج‬
‫وسوف تﻼحظ اختفاء الشاشة المزعجة ‪.‬‬
‫‪133‬‬
‫الطريقة الثانية‪:‬‬
‫في الطريقة الثانية يتم اســـتخدام عداد الوقت إذا كانت الشـــاشـــة المزعجة‬
‫مؤقتة بوقت معين وفي هذه الحالة سوف تكون الشاشة مرتبطة بدالة خاصة‬
‫بالو قت م ثل ا لدا لة ‪ SetTimer‬وفي هذه ال حا لة نقوم بتشــــغ يل بر نامج‬
‫‪ W32Dasm‬ثم نبحث عن مكان الدالة وابحث عن أمر القفز إلي الشــاشــة ثم‬
‫غير أمر القفز ‪.‬‬

‫ﻃﺮﻕ ﺍﻟﺒﺎﺗﺶ ‪Patch‬‬


‫ال باتش هو التغيير في اﻷوامر الموجودة في ملف تنف يذي معين ويكون هذا‬
‫التغيير من خﻼل برامج تحرير خاصـــــة م ثل ‪ HexWorshop‬و ‪ Hiew‬وســــوف‬
‫نستخدم في هذا الخصوص بعض اﻷوامر الخاصة التي يجب أن تعرفها مثل ‪.‬‬

‫‪Jmps=EB‬‬
‫‪je=74‬‬
‫‪jne=C3‬‬
‫‪ret = C3‬‬
‫‪nop = 90‬‬

‫فيمك نك أن تغير اﻷمر ‪ 74‬إلي ‪ EB‬وﻹجراء التغيير ﻻ بد من معر فة اﻻوفســـــت‬


‫الخاص باﻷمر المراد تغييره ويتم معرفة ذلك من خﻼل برنامج ‪ W32Dasm‬وعند‬
‫معرفة اﻻوف ست نقوم بت شغيل برنامج ‪ Hiew‬ثم ن ضغط ‪ F4‬ثم نختار ‪Decode‬‬
‫‪ Mode‬ثم نضــــغط ‪ F5‬ثم نك تب اﻻوفســـــت الذي حصــــلنا عل يه من بر نامج‬
‫‪ W32Dasm‬ثم نذهب إلي اﻷمر المراد تغييره ثم ن ضغط ‪ F3‬ثم نقوم بتغيير أول‬
‫حرفين إلي ‪ EB‬ثم نضــــغط ‪ Enter‬لتغيير اﻷمر ثم نضــــغط ‪ ESC‬ثم ‪ F9‬لحفظ‬
‫التغييرات ثم نضغط ‪ F10‬للخروج‪.‬‬

‫ﺇﻧﺸﺎء ﺍﻟﺒﺎﺗﺶ ﻟﱪﻧﺎﻣﺞ ﻣﺘﺎﺡ ﰲ ﺍﻟﺬﺍﻛﺮﺓ‬


‫المقصــود بعمل باتش لبرنامج في الذاكرة تغيير بعض اﻷوامر الخاصــة بالبرنامج‬
‫وهو يعمل في الذاكرة ويتم تنفيذ ذلك بطريقتين ‪:‬‬

‫الطريقة اﻷولي‪:‬‬
‫نقوم أوﻻ بتشــــغ يل البر نامج المطلوب تغييره ثم نقوم بفتح بر نامج ‪Ollydbg‬‬
‫ومن خﻼل قائمة ‪ File‬نضغط ‪ Attach‬فتظهر النافذة التالية‬
‫‪134‬‬

‫من خﻼل تلك النافذة حدد الملف المطلوب تعديله ثم أضــــغط ‪Double Click‬‬
‫علي الملف للدخول إلي الملف ثم لتغيير نص أو أمر من أوامر البرنامج أضـــغط‬
‫‪ Double Click‬علي النص أو اﻷمر ثم قم بتعديله ‪.‬‬

‫ملحوظة‪:‬‬
‫إذا كان هذا البرنامج مشفر فلن يمكنك حفظ التعديﻼت ومن ثم نقوم‬
‫بالذهاب إلي برنامج ‪ Loader‬لعمل ‪ Loader‬للبرنامج‬

‫الطريقة الثانية‪:‬‬
‫في هذه الطريقة ســوف نســتخدم برنامج ‪ PrincessSandy‬فقم بتشــغيل هذا‬
‫البرنامج ثم أختر البرنامج المطلوب تغيير أوامره ثم اضــغط ‪ Add Item‬ثم أضــف‬
‫اﻷمر المطلوب كما في المثال التالي ‪:‬‬
‫‪135‬‬
‫وﻹضــافة أوامر أخري كرر اﻷمر ‪ Add Item‬مرة أخري ﻹضــافة كل أمر ثم أضــغط‬
‫‪ BUILD‬ﻹنشـــاء ملف ‪ Loader‬وقم بوضـــع هذا الملف في نفس المجلد الذي‬
‫يحتوي علي البرنامج ويتم تشـــغيل البرنامج باســـتخدام ملف ‪ Loader‬وطبعا‬
‫ملف ‪ Loader‬يســــت خدم لع مل باتش للبر نامج في ا لذاكرة بدون تغيير أوامر‬
‫البرنامج اﻷصلية‪.‬‬

‫ﻃﺮﻕ ﻛﺴﺮ ﲪﺎﻳﺔ ‪CD-ROM‬‬


‫عند عمل تثبيت لبعض اﻷلعاب ثم إزالة السي دي من الجهاز ومحاولة تشغيل‬
‫اللعبة سوف تظهر رسالة خطا تفيد عدم وجود السي دي في المشغل ولحل‬
‫تلك المشكلة قم بتشغيل برنامج ‪ W32Dasm‬ثم أفتح الملف التنفيذي للعبة‬
‫وأذهب إلي ق سم الن صوص وابحث عن نص الر سالة التي ظهرت لك وقد تجد‬
‫فوق هذه الرسالة أمر قفز وفي هذه الحالة يجب أن تقوم باﻻتي‬
‫‪ ‬قم بتغيير أمر القفز إلي ‪ EB‬قفزة ق صيرة أو ‪ E9‬قفزة متو سطة أو‬
‫‪ EA‬وهي قفزة بعيدة وﻻ ينطبق هذا علي كل اﻻســـطوانات فقد‬
‫يوجد في مكان اختبار الســــي دي أمر قفز ‪ 7417‬فنقوم بعكس‬
‫هذا اﻷمر إلي ‪ 7517‬ولكن اﻷمر يتوقف أســاســا علي اللعبة فقد‬
‫ﻻ تع مل اللع بة إذا تم تغير أمر قفز من ‪ 74‬إلي ‪ 75‬وفي هذه‬
‫الحالة نقوم بتغيير اﻷمر إلي ‪ EB‬أو ‪ E9‬أو ‪EA‬‬
‫‪ ‬إذا كانت اللعبة تظهر لك رســالة مثل ‪ Please insert CD‬وﻻ تجد‬
‫هذا النص من خﻼل برنامج ‪ W32Dasm‬فيمكن أن تكون الر سالة‬
‫عبــارة عن ‪ MessageBoxA‬ومن ثم نقوم بــاســــتخــدام برنــامج‬
‫‪ Softice‬ونقوم بوضـــع نقطة توقف علي هذه الدالة وبعد معرفة‬
‫عنوانهـا أذهـب إلي برنـامج ‪ W32Dasm‬ثم أذهـب إلي العنوان‬
‫الذي حصــــلت عليه من خﻼل برنامج ‪ Softice‬وقم بتعديل اﻷمر‬
‫كمــا ي م كن اســـــ تخــدام برنــا مج ‪ Apispy‬ل م عرفــة مكــان‬
‫‪MessageBoxA‬‬
‫‪ ‬ودوال ‪ API‬التي تستخدم عادة مع السي دي هي‪:‬‬
‫‪GetDriveTypeA‬‬
‫‪GetVolumeInformationA‬‬
‫‪GetDriveAttributeA‬‬
‫‪SetCurrentDirectoryA‬‬
‫‪GetFileSize‬‬
‫‪CreateFileA‬‬
‫‪GetDiskFreespaceA‬‬
‫‪GetFileAttributeA‬‬
‫‪mciSendCommandA‬‬
‫)‪mciSendStringA (for AudioCD‬‬
‫‪136‬‬
‫وأكثر تلك الدوال استخداما الدالة ‪ GetDriveTypeA‬وسوف تجد مع هذه الدالة‬
‫المقارنة ‪cmp eax, 0000005‬‬
‫ومعني القيم المستخدمة مع الدالة كما يلي‪:‬‬

‫‪0‬‬ ‫‪Drive Cnnot Be Determind‬‬


‫‪1‬‬ ‫‪Root Directory Does Not Exist‬‬
‫‪2‬‬ ‫)‪Drive is Removable (Zip drive ect‬‬
‫‪3‬‬ ‫)‪Afixed Disk (HardDrive‬‬
‫‪4‬‬ ‫)‪Remote Drive(Network‬‬
‫‪5‬‬ ‫‪CD-ROM Drive‬‬
‫‪6‬‬ ‫‪RamDisk‬‬

‫ﻃﺮﻕ ﻣﺮﺍﻗﺒﺔ ‪CD-ROM‬‬


‫ع ند تثب يت اﻷل عاب اختر التثب يت ال كا مل ‪ Full‬إذا كان م تاح وب عد اﻻنت هاء من‬
‫التثبيت قم بإزالة السي دي وقم بتشغيل اللعبة وفي حالة وجود رسالة خطأ‬
‫يمكنك استخدام احد الطرق اﻵتية لكسر حماية السي دي‬
‫‪ .1‬عند تشغيل اللعبة سوف تحصل علي رسالة تفيد بعدم وجود السي‬
‫دي ومن ثم شغل برنامج ‪ W32Dasm‬ثم اذهب إلي ق سم الن صوص‬
‫وابحث عن الرســالة التي ظهرت لك ومن ثم انظر فوق الرســالة تجد‬
‫أمر قفز أو نداء اعرف اﻻوفســـت لهذا اﻷمر ثم من خﻼل برنامج ‪Hiew‬‬
‫اذ هب إلي هذا اﻷمر وإذا كان أمر نداء حو له إلي ‪ NOP‬أي إلي رقم‬
‫‪ 90‬وإذا كان أمر قفز فقم بعكسه كما ذكرنا من قبل‬
‫‪ .2‬عند تشغيل اللعبة وتظهر رسالة عدم وجود السي دي شغل برنامج‬
‫‪ W32Dasm‬ثم من خﻼل قســـم النصـــوص ابحث عن تلك الرســـالة‬
‫وانظر فوقها فإذا وجدت أمر نداء خذ اﻻوف ست لهذا اﻷمر ثم من خﻼل‬
‫برنــامج ‪ Hiew‬أذهــب إلي اﻷمر وحولــه إلي ‪ B801000000‬وهو أمر‬
‫يعني ‪ MOV‬أي التحرك إلي اﻷمر التالي وتجاوز أمر نداء الســــي دي‬
‫وبهذه الطريقة يتم تنفيذ عملية خداع للســـي دي ليبدو أن الســـي‬
‫دي موجود في الجهاز‬
‫‪ .3‬عند تشــغيل اللعبة وظهور الرســالة الخاصــة بعدم وجود الســي دي‬
‫شغل برنامج ‪ W32Dasm‬ثم من خﻼل قسم النصوص ابحث عن نص‬
‫الر سالة ثم أنظر فوقها تجد أمر قفز مثل ‪ je‬أو ‪ jne‬خذ اﻻوف ست لهذا‬
‫اﻷمر ثم من خﻼل برنامج ‪ Hiew‬اذهب إلي هذا اﻷمر واعك سه ليكون‬
‫كأحد الصور اﻵتية ‪:‬‬
‫)‪75 (jne) to 74 (je‬‬
‫)‪85 (jne) to 84 (je‬‬
‫)‪74 (je) to 75 (jne‬‬
‫)‪84 {je) to 85 (jne‬‬
‫‪137‬‬
‫‪ .4‬عند تشغيل اللعبة وظهور رسالة عدم وجود السي دي شغل برنامج‬
‫‪ W32Dasm‬ثم ابحث عن الرســالة "‪ "GetDriveTypeA‬وانظر فوقها أو‬
‫أسفل منها سوف تجد أمر اختبار السي دي كاﻵتي‪:‬‬

‫‪emp eax, 00000005‬‬


‫غير هذا اﻷمر إلي‪:‬‬
‫‪emp eax, 00000003‬‬

‫وهذا اﻷمر معناه تغيير اختبار اللعبة من وجود اللعبة علي الســــي دي إلي‬
‫وجودها علي ‪ Hard Disk‬وبذلك يمكنك تشــــغيل اللعبة بدون الحاجة لوجود‬
‫السي دي وحتي تكون اﻻستفادة كاملة من هذا الجزء إليك قائمة بأهم أوامر‬
‫القفز في لغة اﻻسمبلي‪:‬‬

‫‪jne‬‬ ‫‪jump if not equal‬‬


‫‪je‬‬ ‫‪jump if equal‬‬
‫‪jmp‬‬ ‫‪jump directly to‬‬
‫‪nop‬‬ ‫‪no operation‬‬
‫‪ja‬‬ ‫‪jump if above‬‬
‫‪jna‬‬ ‫‪jump if not above‬‬
‫‪jae‬‬ ‫‪jump if above or equal‬‬
‫‪jnae‬‬ ‫‪jump if not above or equal‬‬
‫‪jb‬‬ ‫‪jump if below‬‬
‫‪jnb‬‬ ‫‪jump if below‬‬
‫‪jbe‬‬ ‫‪jump if below or equal‬‬
‫‪jnbe‬‬ ‫‪jump if not below or equal‬‬
‫‪jg‬‬ ‫‪jump if greater‬‬
‫‪jng‬‬ ‫‪jump if not greater‬‬
‫‪jge‬‬ ‫‪jump if greater or equal‬‬
‫‪jnge‬‬ ‫‪jump if not greater or equal‬‬
‫‪jl‬‬ ‫‪jump if less‬‬
‫‪jnl‬‬ ‫‪jump if not less‬‬
‫‪jle‬‬ ‫‪jump if less or equal‬‬
‫‪jnle‬‬ ‫‪jump if not less or equal‬‬

‫ﻓﻚ ﲪﺎﻳﺔ ﺍﻟﺴﻲ ﺩﻱ ﺍﳌﻐﻠﻖ‪:‬‬


‫إغﻼق الســــي دي أو قف له هو نوع من الح ما ية التي تمن عك من نســــخ‬
‫‪ CD‬وهذا النوع من الحماية يســــتخدم عادة مع اﻷلعاب‪ .‬وعند قيامك بنســــخ‬
‫‪138‬‬
‫الســــي دي وتظهر رســــالة تفيد بعدم إمكانية النســــخ قم بعرض محتويات‬
‫اﻻســـطوانة وســـوف تﻼحظ وجود أربع ملفات كلها تنتهي باﻻمتداد ‪ *.afp‬في‬
‫هذه الحالة قم بتشــــغيل برنامج ‪ W32Dasm‬ثم ابحث عن أي ملف باﻻمتداد‬
‫‪ *.afp‬وعند فتح احد هذه الملفات ســوف تجد أوامر تحدد التعامل مع الســي‬
‫دي ويتم تغيير أوامر القفز‪.‬‬
‫‪140‬‬

‫ﺇﳚﺎﺩ ﺍﻟﺴﲑﻳﺎﻝ‬
‫يتم اســــتخدام برنامج ‪ Softice‬لمعرفة الســــيريال أو الرقم الخاص‬
‫بتثبيت البرنامج ويتم ذلك بتشغيل البرنامج ثم ادخل أي رقم للسيريال ثم قم‬
‫بتشــغيل برنامج ‪ Softice‬ثم ضــع نقطة توقف باســم ‪ Hmemcpy‬وعند الضــغط‬
‫علي ‪ OK‬يظهر برنامج ‪ Softice‬وتلك هي الطريقة المســــتخدمة في إيجاد‬
‫الســــير يال وع ند ظهور بر نامج ‪ Softice‬نقوم بك تا بة اﻷمر *‪ BC‬ل حذف نق طة‬
‫التوقف التي تم وضــعها ثم بالضــغط علي ‪ F12‬فتظهر ‪ Proto32‬ثم نقوم بتتبع‬
‫أوامر البرنامج عن طريق الضــغط علي مفتاح ‪ F10‬وســوف تﻼحظ أوامر مقارنة‬
‫مثــل ‪ Test EAX,EDX‬أو ‪ CMP EAX,EBX‬حيــث يقوم البرنــامج بمقــارنــة بين‬
‫الســيريال الذي قمت بوضــعه مع الســيريال الحقيقي للبرنامج وﻹظهار القيمة‬
‫الموجودة في أي من المسجﻼت ال سابقة فنقوم بالضغط علي ‪ D EAX‬سوف‬
‫تشــاهد الســيريال الذي تم وضــعه وعند تكرار نفس اﻷمر مع المســجل ‪EBX‬‬
‫سوف تشاهد السيريال الحقيقي للبرنامج ‪.‬‬

‫ﺍﺳﺘﺨﺪﺍﻡ ﺑﺮﻧﺎﻣﺞ ‪ Softice‬ﻹﳚﺎﺩ ﺍﻟﺴﲑﻳﺎﻝ‪:‬‬


‫يســــت خدم من خﻼل بر نامج ‪ Softice‬ا لدا لة ‪ Hmemcpy‬وهي دا لة‬
‫خاصة تستخدم للتعامل مع الذاكرة لعمل المقارنة وتخزين النصوص وتأخذ تلك‬
‫الدالة المعلومات التي نقوم بوضــــعها في البرنامج مثل اﻻســــم والســــيريال‬
‫وت ضعها في الذاكرة وتقوم بعمل مقارنة بين ال سيريال الذي أدخلته بال سيريال‬
‫الحقيقي للبرنامج ويتم إرســال تلك المعلومات إلي البرنامج لكي يتم التحقق‬
‫من الرقم ا لذي أدخل ته ويمكن اعت بار ت لك ا لدا لة كحي لة تســــت خدم لمعر فة‬
‫الســــيريال الحقيقي للبرنامج وحتى نتمكن من معرفة الســــيريال الحقيقي‬
‫للبرنامج يجب وضـــع نقطة توقف عن طريق تشـــغيل البرنامج المطلوب معرفة‬
‫الســـيريال الخص به ثم نقوم بالتحول إلي نافذة التســـجيل ثم نكتب اﻻســـم‬
‫والرقم الذي تراه وقبل الضـــغط علي ‪ OK‬نقوم بالضـــغط علي ‪ Ctrl+L‬ثم نقوم‬
‫بوضع نقطة التوقف باستخدام اﻷمر التالي‪:‬‬

‫‪Bpx Hmemcpy‬‬

‫ثم نقوم بالضــــغط علي ‪ F5‬للرجوع إلي البرنامج المطلوب التعرف علي رقمه‬
‫وســـوف تظهر عندئذ نافذة برنامج ‪ Softice‬ومن ثم نقوم بالضـــغط علي مفتاح‬
‫‪ F12‬عدة مرات حتى تظهر كلمة ‪ Proto32‬ونســــتمر في الضــــغط حتي يظهر‬
‫اســــم البرنامج أســــفل نافذة البرنامج وهذا يعني انك داخل كود البرنامج ثم‬
‫نقوم بالضـــغط علي ‪ F10‬حتي تشـــاهد أمر نداء نقوم بتتبعه حتي نعثر علي‬
‫السيريال الحقيقي للبرنامج ‪.‬‬
‫‪141‬‬
‫ويمكنك من خﻼل البرنامج إظهار محتويات أي مســـجل من المســـجﻼت مثل‬
‫‪ EAX‬وذ لك بك تا بة اﻷمر ‪ D EAX‬أو أمر قفز م ثل ‪ jz,jnz,jne,je‬وع ند وجود أمر‬
‫مقارنة مثل ‪ CMP‬يليه أمر قفز فهذا غالبا يكون أمر المقارنة الذي يحتوي علي‬
‫السيريال الحقيقي للبرنامج وقد يظهر كود مثل اﻵتي‪:‬‬
‫‪CALL 0041EF84‬‬
‫‪MOV‬‬ ‫‪EAX,[EBP-14] EAX‬‬
‫السريال الذي تم وضعه تم تخزينه في‬
‫‪MOV‬‬ ‫‪EDX,[004738D4] EDX‬‬
‫‪CALL 00403D8C‬‬
‫وهذا يمثل نداء لدالة أو أمر للمقارنة بين السيريال الحقيقي والموضوع‬
‫وللقفز إلي تسجيل البرنامج إذا كان السيريال الذي تم وضعه حقيقي‬
‫‪JNZ‬‬ ‫‪00466E39‬‬
‫‪MOV‬‬ ‫‪EAX,00466F34‬‬
‫‪CALL 0043C650‬‬
‫وإذا كان السيريال غير حقيقي يظل البرنامج غير مسجل‬
‫‪JMP‬‬ ‫‪00466EA2‬‬
‫‪MOV‬‬ ‫‪EAX,004738D4‬‬
‫‪MOV‬‬ ‫‪EDX,00466F7C‬‬
‫‪CALL 00403A54‬‬
‫ولمعرفة السيريال الحقيقي للبرنامج في اﻷوامر السابقة نقوم بإظهار محتوي‬
‫المسجل ‪ EDX‬بكتابة اﻷمر ‪. D EDX‬‬

‫ﻛﺴﺮ ﺍﻟﺴﲑﻳﺎﻝ‬
‫ســوف نســتخدم هذا المثال المســمي ‪ Brad‬لتوضــيح كيفية معرفة‬
‫الســــيريال وســــوف نســــتخدم برنامج ‪ Ollydbg‬في تنفيذ هذا المثال ونبدأ‬
‫بتشغيل المثال ‪ Brad‬وسوف تحصل علي النافذة التالية ‪:‬‬

‫ادخل الســــيريال الذي تراه في النافذة الســــابقة ثم أضــــغط اﻻختيار ‪Check‬‬


‫لفحص السيريال وفي هذه الحالة سوف تظهر النافذة التالية ‪:‬‬
‫‪142‬‬

‫اضــــغط ‪ OK‬ثم أغلق البرنامج ثم شــــغل برنامج ‪ Ollydbg‬ثم قم بفتح الملف‬


‫التنفيذي من خﻼله ثم اذهب إلي قسم النصوص‬

‫من خﻼل نافذة البرنامج أضـــغط ‪ Ctrl+L‬ثم ابحث عن نص الرســـالة الســـابقة‬


‫التي ظهرت لك وعند الوصول إليها أضغط ‪ Double Click‬عليها‬

‫المثال الثاني‪Crack Me :‬‬


‫هذا المثال يســــمي ‪ Crack Me‬وســــوف نســــتخدم في هذا المثال برنامج‬
‫‪ Ollydbg‬وعند تشغيل البرنامج سوف تحصل علي النافذة التالية‪:‬‬
‫‪143‬‬

‫وعند الضغط على ‪ OK‬سوف تحصل علي النافذة التالية ‪:‬‬

‫أضغط علي الزر ‪ Serial‬ثم ادخل البيانات التالية ‪:‬‬

‫بعد إدخال البيانات أضــغط الزر ‪ Check it Baby‬وســوف تحصــل علي الرســالة‬
‫التالية ‪:‬‬
‫‪144‬‬

‫قم بإغﻼق البرنامج ثم شــــغل برنامج ‪ ollydbg‬وحمل الملف التنفيذي داخله‬


‫ثم تحرك إلي قســم النصــوص وابحث عن الرســالة الســابقة وســوف تجد أنها‬
‫مكررة أكثر من مرة ولذ لك قم بوضــــع نقطة توقف علي كل م كان وردت فيه‬
‫الرسالة‪:‬‬

‫ثم أ ضغط مفتاح ‪F9‬‬ ‫بعد ذلك تحول إلي شا شة ‪ CPU‬بال ضغط علي اﻷداة‬
‫لتشــغيل البرنامج ثم ادخل البيانات الســابقة وفي هذه الحالة ســوف يتوقف‬
‫البرنامج ويذهب إلي العنوان التالي‪.‬‬

‫المثال الثالث‪VRKitchen :‬‬


‫هذا المثال يطلق عليه ‪ VRKitchen‬وســـوف نســـتخدم مع هذا المثال برنامج‬
‫‪ SmartCheck‬شغل البرنامج وادخل البيانات التالية‬
‫‪145‬‬

‫بعد إدخال البيانات أضغط ‪ OK‬فتظهر الرسالة التالية‬

‫قم بإغﻼق البر نامج ثم شــــ غل بر نامج ‪ SmartCheck‬ثم أفتح قائ مة ‪ File‬ثم‬
‫أضغط ‪ Open‬ثم اختار الملف التنفيذي للبرنامج ثم أضغط ‪ F5‬لتشغيل البرنامج‬
‫ثم ادخل البيانات السابقة ثم أ ضغط ‪ OK‬وسوف تظهر نفس الر سالة السابقة‬
‫ثم اكتب الكلمة اﻵتية‬ ‫ويتم إغﻼق البرنامج ثم قم بالضــــغط علي اﻷداة‬
‫وعند إيجاد الر سالة سوف‬ ‫في شريط البحث ثم أ ضغط علي أداة البحث‬
‫تشاهد الرسالة في الجانب اﻷيمن من النافذة ‪.‬‬
‫‪146‬‬

‫عند التحرك إلي ال سطر الخامس اعلي مكان وجود المؤ شر و سوف تﻼحظ أن‬
‫البرنامج ي قارن بين الســــيريال الحقيقي والرقم الذي أدخلناه ثم أذهب إلي‬
‫البرنامج وستجد أن البرنامج قد تم تسجيله‬

‫المثال الرابع‪Acoustica 2.25a:‬‬


‫وســـوف نســـتخدم مع هذا المثال البرامج ‪ W32Dasm,Ollydbg‬أوﻻ قم بعمل‬
‫نسخة احتياطية من البرنامج ثم شغل البرنامج وسوف تري النافذة التالية‪:‬‬
‫‪147‬‬
‫اضغط علي اﻻختيار ‪ Register‬ثم ادخل البيانات اﻵتية‪:‬‬

‫بعد إدخال البيانات السابقة اضغط الزر ‪ Register‬وسوف تحصل علي الرسالة‬
‫اﻵتية ‪:‬‬

‫أضــــغط علي ‪ OK‬ثم أغلق البرنامج وشــــغل برنامج ‪ W32Dasm‬وقم بتحميل‬


‫البرنامج وقم بالبحث عن الرسالة السابقة وسوف تشاهد الشكل التاليك‪:‬‬

‫دون العنوان المشـــار إليه في الصـــورة ثم شـــغل برنامج ‪ Ollydbg‬ثم أضـــغط‬


‫‪ Ctrl+G‬ثم اذهب إلي العنوان ال سابق ثم أ ضغط ‪ F2‬ﻹ ضافة نقطة توقف علي‬
‫العنوان ثم أضــغط ‪ F9‬لتشــغيل البرنامج ثم ادخل البيانات الســابقة ثم أضــغط‬
‫‪ Register‬وســــوف تري أن البر نامج قد توقف عن الع مل ومن ثم أذ هب إلي‬
‫برنامج ‪ Ollydbg‬وسوف تشاهد ظهور السيريال الحقيقي للبرنامج ‪.‬‬
‫‪148‬‬

‫المثال الخامس‪Ace FTP 3.0 :‬‬


‫و سوف ن ستخدم مع هذا المثال برنامج ‪ Ollydbg‬ويبدأ المثال بت شغيل برنامج‬
‫‪ Ace FTP 3.0‬ثم من خﻼل النافذة التالية ادخل البيانات الموضحة‪:‬‬

‫اضغط ‪ OK‬بعد إدخال البيانات السابقة فتظهر لك الرسالة التالية‪:‬‬

‫قم بإغﻼق البرنامج ثم شــغل برنامج ‪ Ollydbg‬ثم حمل البرنامج من خﻼله ثم‬
‫من خﻼل قسم النصوص أبحث عن الرسالة السابقة وعند الوصول إليها أضغط‬
‫عليها ‪ Double Click‬ثم تحرك إلي اعلي حتي ت شاهد أمر قفز وهو ‪ JE‬ا ضغط‬
‫السطر لتحديده ثم اضغط مفتاح ‪ F2‬لوضع نقطة توقف‬
‫‪149‬‬

‫ثم اضــغط ‪ F9‬لتشــغيل البرنامج وادخل البيانات الســابقة ثم اضــغط ‪ OK‬حتي‬


‫يتوقف البرنــامج عن العمــل ثم تحرك إلي برنــامج ‪ Ollydbg‬ثم في الجــانــب‬
‫اﻷيمن للنافذة لتري السيريال‬

‫وهكذا تم الحصول علي السيريال الحقيقي للبرنامج‬

‫المثال السادس‪EXELock :‬‬


‫سوف ي ستخدم مع هذا المثال أي ضا البرنامج ‪ Ollydbg‬وقبل ت شغيل البرنامج‬
‫اعمل نسخه احتياطية منه ثم شعل البرنامج حتي تحصل علي النافذة التالية‬
‫‪:‬‬
‫‪150‬‬

‫قم بالضغط علي العبارة المحددة في الصورة ثم ادخل البيانات اﻵتية‬

‫أضغط ‪ OK‬لتحصل علي الرسالة اﻵتية‪:‬‬

‫أضــــغط ‪ OK‬ثم أغلق البرنامج وأفتح برنامج ‪ Ollydbg‬ثم حمل ملف البرنامج‬
‫التنفيذي من خﻼله ثم من خﻼل قســم النصــوص ابحث عن العبارة الســابقة‬
‫وعند العثور عليها أضغط عليها ‪ Double Click‬للوصول إليها ثم أضغط ‪ F2‬لوضع‬
‫نقطة توقف‬
‫‪151‬‬

‫واﻵن أضــغط مفتاح الوظيفة ‪ F9‬لتشــغيل البرنامج ثم ادخل البيانات الســابقة‬


‫للبرنامج مرة أخري ثم أ ضغط ‪ OK‬فيتوقف البرنامج عن العمل ارجع إلي برنامج‬
‫‪ Ollydbg‬فتري السيريال الحقيقي للبرنامج كما هو واضح في الشكل التالي‬

‫وبهذه الطريقة نكون قد توصلنا إلي السيريال الحقيقي للبرنامج‬


‫‪152‬‬
‫المثال السابع‪MotoCalc 6.05:‬‬
‫البرنامج الذي سوف نستخدمه مع هذا المثال هو ‪ Ollydbg‬واﻵن قم بتشغيل‬
‫البرنامج وسوف تحصل علي النافذة التالية‪:‬‬

‫بعد إدخال البيانات في لخطوة رقم ‪ 2‬أ ضغط الخطوة رقم ‪ 3‬فتظهر لك الر سالة‬
‫التالية‬

‫اضــــغط ‪ OK‬ثم أغلق البرنامج ثم أفتح برنامج ‪ Ollydbg‬ثم قم بتحميل الملف‬


‫التنفيذي للبرنامج داخله ثم من خﻼل قسم النصوص أبحث عن الرسالة التي‬
‫ظهرت لك ثم تحرك إليها‪.‬‬
‫‪153‬‬

‫تحرك اعلي اســـطر الحالي بثﻼث ســـطور حتي تصـــل إلي أمر النداء كما هو‬
‫م شار إليه في النافذة ال سابقة ثم أ ضغط ‪ F2‬لو ضع نقطة توقف ثم أ ضغط ‪F9‬‬
‫لتشـــغيل البرنامج ثم ادخل البيانات الســـابق إدخالها مرة أخري ثم أضـــغط زر‬
‫التســـجيل وفي هذه الحالة ســـوف يتوقف البرنامج ومن ثم تحول إلي برنامج‬
‫‪ Ollydbg‬لتحصل علي الشكل التالي‪:‬‬

‫حدد السطر المشار إليه في الصورة ثم اضغط ‪ Right Click‬ومن خﻼل القائمة‬
‫المختصرة أضغط ‪Modify Register‬‬
‫‪154‬‬

‫وســـوف تﻼحظ ظهور الرقم الذي أدخلته قف في الخانة اﻷولي من النافذة ثم‬
‫أضــغط ;‪ Right Click‬ثم اضــغط ‪ Modify Data‬من القائمة المختصــرة فتحصــل‬
‫علي الشكل التالي‪:‬‬

‫وتﻼحظ في النافذة ال سابقة ظهور ال سيريال الحقيقي للبرنامج وعند ت شغيل‬


‫البرنامج مرة أخري وإدخال هذا الرقم سوف يتم تسجيل البرنامج‬

‫المثال الثامن ‪JayLock‬‬


‫ســوف نســتخدم مع هذا المثال برنامج ‪ Ollydbg‬ولتنفيذ المثال قم بتشــغيل‬
‫البرنامج وسوف تظهر لك النافذة التالية‪:‬‬
‫‪155‬‬
‫ادخل البيانات الموضحة في الصورة ثم أضغط ‪ OK‬فتظهر لك الرسالة اﻵتية‪:‬‬

‫أضــغط ‪ OK‬ثم أغلق البرنامج وشــغل برنامج ‪ Ollydbg‬ومن خﻼل أفتح الملف‬
‫التنفيذي للبرنامج ثم أبحث عن الرســـالة الســـابقة داخل قســـم النصـــوص‬
‫وعندما تصـــل إليها أضـــغط ‪ Double Click‬عليها ثم تحرك إلي أعلي لتري أمر‬
‫المقارنة ‪ CMP EAX,ECX‬وهو يقوم بمقارنة الســــيريال الخطأ مع الســــيريال‬
‫الحقيقي للبرنامج‬

‫حدد أمر المقارنة ثم أضـــغط ‪ F2‬لوضـــع نقطة توقف ثم أضـــغط ‪ F2‬لتشـــغيل‬


‫البرنامج وأدخل البيانات السابقة ثم أضغط ‪ OK‬وسوف يتوقف البرنامج ومن ثم‬
‫أذهب إلي برنامج ‪ Ollydbg‬وسوف تﻼحظ النافذة التالية‬
‫‪156‬‬
‫أضــــغط علي الســــطر المحدد ‪ Right Click‬ثم أضــــغط ‪ Modify register‬من‬
‫القائمة المختصرة فتظهر النافذة التالية‪:‬‬

‫كما تﻼحظ في تلك النافذة فقد ظهر الرقم الذي أدخلناه ثم اشــر إلي الســطر‬
‫اﻷول ثم أ ضغط ‪ Right Click‬ثم أ ضغط اﻻختيار ‪ Modify register‬فترى ال شكل‬
‫التالي‪:‬‬

‫كما تﻼحظ فقد ظهر السيريال الحقيقي للبرنامج ‪.‬‬

‫ﺍﻟﺒﺎﺗﺶ ‪Patch‬‬
‫يحتوي هذا الجزء علي مجموعة من اﻷمثلة التي ت شرح كيفية عمل‬
‫الباتش أو الملف التنفيذي وســــوف نســــتخدم في ذلك مجموعة من البرامج‬
‫المختلفة لكسر الحماية مثل ‪ Ollydbg‬و‪ w32Dsam‬و ‪. Hiew‬‬
‫‪157‬‬
‫المثال اﻷول‪Tester:‬‬
‫سوف نستخدم لهذا المثال برنامج ‪W32Dasm‬‬
‫وعند تقوم بتشغيل البرنامج سوف تﻼحظ ظهور النافذة التالية ‪:‬‬

‫من خﻼل النافذة السابقة ادخل البيانات اﻵتية ثم أضغط ‪OK‬‬

‫بعد إدخال البيانات السابقة أضغط ‪ Check‬فتظهر لك الرسالة التالية‪:‬‬

‫قــم بــإغــﻼق الــبــرنــامــج وأفــتــح بــرنــامــج ‪ W32Dasm‬ثــم أفــتــح الــمــلــف‬


‫التنفيــذي للبرنــامج وذلــك بفتح قــائمــة ‪ File‬ثم الضــــغط علي اﻻختيــار‬
‫‪ Open File to Disassemble‬ثم حدد الملف ثم أضغط ‪Open‬‬
‫‪158‬‬

‫فتظهر لك ال نا فذة‬ ‫وب عد اﻻنت هاء من تجم يل الملف أضــــغط علي اﻷداة‬
‫التالية‬

‫قم بالضــــغط ‪ Double Click‬علي الرســــالة المحددة حتي تظهر لك النافذة‬


‫التالية‪:‬‬

‫قف علي الرقم المحدد ثم أضغط ‪ Right Click‬كما في الشكل التالي‪:‬‬


‫‪159‬‬

‫من خﻼل القائمة المختصــــرة أضــــغط اﻻختيار ‪ Goto Reference‬فتصــــل إلي‬


‫الشاشة التالية‬

‫حدد الرقم الموضح في الشكل ثم أضغط ‪ Right Click‬ثم أضغط ‪Patch‬‬

‫وسوف تظهر النافذة التالية ‪:‬‬


‫‪160‬‬
‫المثال الثاني‪Virtual Vault:‬‬
‫وسوف نستخدم مع هذا المثال برامج ‪Hiew ,Softice‬‬
‫قم أوﻻ بعمل نســـخة من البرنامج ثم شـــغل البرنامج وســـوف تحصـــل علي‬
‫النافذة التالية‪:‬‬

‫ادخل اﻷرقام التي تريدها ثم أضغط ‪ OK‬فتظهر لك النافذة التالية‬

‫بعد ذلك قم بإغﻼق البرنامج ثم شــغل البرنامج مرة أخري وقبل الضــغط علي‬
‫‪ OK‬شغل برنامج ‪ Softice‬ثم اﻷمر ‪ bpx showwindow‬ثم أ ضغط ‪ OK‬و سوف‬
‫تﻼحظ ظهور بر نامج ‪ Softice‬ثم أضــــغط ‪ F12‬حتي تظهر كل مة ‪ Proto32‬في‬
‫الجزء اﻷيمن من النافذة وتري اﻷمر‪:‬‬
‫‪161‬‬
‫‪002412A‬‬ ‫‪JMP‬‬ ‫‪0042411C‬‬

‫وهذا مجرد أمر نداء ولذلك أســتمر في الضــغط علي مفتاح ‪ F12‬وبعد الضــغط‬
‫ثﻼث مرات سوف تصل إلي اﻷمر اﻵتي‪:‬‬

‫‪0042FFA4‬‬ ‫‪E8B33FFFFF‬‬ ‫‪CALL‬‬ ‫‪00423F5C‬‬

‫اذهب إلي برنامج ‪ Hiew‬ثم ضـــع اﻻوفســـت الخاص بهذا اﻷمر وهو ‪ 2F3A4‬ثم‬
‫اعكس اﻷمر إلي ‪ NOP‬وســــوف يصــــبح اﻷمر ‪ 9090909090‬وبعـد ذلـك قم‬
‫بتشــــغيل البرنامج ســــوف تﻼحظ عدم ظهور الصــــندوق الحواري أو الديالوج‬
‫السابق وهذا معناه أننا كسرنا حماية البرنامج‬

‫المثال الثالث‪Xara 3D 2.11:‬‬


‫ســــوف نســــتخدم مع هذا المثال اﻷدوات ‪ Hiew,W32Dasm‬وعند تشــــغيل‬
‫البرنامج سوف تﻼحظ ظهور الرسالة التالية‪:‬‬

‫من خﻼل النافذة السابقة أضغط اﻻختيار ‪ Purchase‬ثم ادخل البيانات اﻵتية‬
‫‪162‬‬
‫بعد إدخال البيانات أضــــغط اﻻختيار ‪ Unlock software‬فتظهر لك الرســـــالة‬
‫التالية ‪:‬‬

‫أ ضغط ‪ OK‬ثم أغلق البرنامج ثم شغل برنامج ‪ W32Dasm‬وابحث عن الر سالة‬


‫السابقة كما في الشكل التالي‪:‬‬

‫تحرك إلي كل أمر من اﻷوامر الم حددة ثم أعكســـــه وب هذه الطريقة تكون قد‬
‫كسرت حماية البرنامج‬

‫المثال الرابع‪eXeScope 6.41:‬‬


‫ســــوف نســــتخدم مع هذا المثال البرامج ‪ Hiew,W32Dasm‬ولكن قم بعمل‬
‫نســـخة احتياطية من البرنامج أوﻻ ثم شـــغل البرنامج ثم أفتح قائمة ‪ Help‬ثم‬
‫أضغط ‪ Regist‬ومن ثم ادخل البيانات اﻵتية‪:‬‬
‫‪163‬‬
‫بعد إدخال البيانات أضغط ‪ OK‬فتظهر لك الرسالة التالية‪:‬‬

‫أضــــغط ‪ OK‬ثم أغلق البرنامج ثم شــــغل برنامج ‪ W32Dasm‬ومن خﻼل افتح‬


‫الملف التنفيذي ثم بحث عن الرسالة التي ظهرت ‪.‬‬

‫أذهب إلي أمر القفز الم شار إليه في الشكل ال سابق ثم أعكس أمر القفز ثم‬
‫شــغل البرنامج ثم أدخل البيانات الســابقة وســوف ﻻ يظهر البرنامج الرســالة‬
‫وهذا معناه أن البرنامج قد تم تسجيله‬

‫المثال الخامس‪E-BOOK CRAETOR:‬‬


‫هذا المثال ســوف نســتخدم معه اﻷدوات ‪ W32Dasm , Hiew‬وعند تشــغيل‬
‫البرنامج تظهر لك النافذة التالية‪:‬‬
‫‪164‬‬
‫ادخل البيانات السابقة ثم أضغط ‪ Register‬فتظهر لك الرسالة التالية ‪:‬‬

‫اضــــغط ‪ OK‬ثم شــــغل برنامج ‪ W32Dasm‬ومن خﻼله أفتح الملف التنفيذي‬


‫للبرامج ثم من خﻼل اﻻختيار ‪ String data items‬أبحث عن الر سالة ال سابقة‬
‫وعند العثور عليها أضغط ‪ Double Click‬للوصول إليها‬

‫اعكس أمر القفز المحدد في الصــورة الســابقة ثم شــغل البرنامج وادخل أي‬
‫رقم ثم أضــغط ‪ Register‬وســوف تري أن الرســالة اختفت ولكن عند تشــغيل‬
‫البرنامج مرة ثانية ســوف تﻼحظ انه يطلب منك التســجيل ومن ثم أذهب إلي‬
‫برنامج ‪ W32Dasm‬ثم ابحث عن الجملة ‪:‬‬
‫‪Your user number is 52701‬‬
‫‪Enter the registration number‬‬

‫ابحث عن الرقم الموجود في الرسالة مع مﻼحظة أن هذا الرقم قد يختلف من‬


‫جهاز لﻶخر وعند العثور علي الرقم قم بعكس أمر القفز المرفق به ثم شــــغل‬
‫البرنامج مرة أخري وأدخل أي رقم ثم أضـــغط ‪ Register‬وســـوف يتم تســـجيل‬
‫البرنامج‬

‫المثال السادس‪PDF2TXT 2.65:‬‬


‫ســـوف نســـتخدم مع هذا المثال اﻷدوات ‪ ، W32Dasm , Hiew‬قم بتشـــغيل‬
‫البرنامج وسوف تحصل علي الشكل التالي‪:‬‬
‫‪165‬‬

‫ادخل البيانات الموضحة في الصورة ثم أضغط ‪ OK‬فتري الرسالة التالية‪:‬‬

‫أغلق البرنامج ثم شــغل برنامج ‪ W32Dasm‬ثم أفتح الملف التنفيذي للبرنامج‬


‫ثم أبحث عن هذه الرســالة ولكنك لن تجد الرســالة ولذلك قم بتحميل الملف‬
‫‪ verypdf.dll‬ثم أ عد الب حث عن الرســـــا لة وع ند العثور علي ها أذ هب إلي أمر‬
‫القفز ثم أعكســـه إلي ‪ jne‬ثم شـــغل البرنامج وأدخل البيانات الســـابقة مرة‬
‫أخري ثم أ ضغط ‪ OK‬فتجد أن البرنامج تم ت سجيله ولكن عند ت شغيل البرنامج‬
‫مرة أخري يظهر نفس الديالوج مرة أخري وابحث ســــوف تجد أمر القفز الذي‬
‫عكســــته فوقه أمر نداء ‪ Call‬خذ اﻻوفســــت الخاص بأمر النداء ثم من خﻼل‬
‫برنامج ‪ Hiew‬أذهب إلي هذا اﻻوفســـت ثم أضـــغط ‪ F3‬ثم مفتاح ‪ F2‬ثم اكتب‬
‫اﻷوامر‬
‫‪Push 00000001‬‬
‫‪Pop eax‬‬
‫‪Ret‬‬
‫قم بتشغيل البرنامج وبذلك يكون قد كسرت حمايته‬

‫المثال السابع‪PUBLISH-It PRO 3.3:‬‬


‫ســـوف نســـتخدم مع هذا المثال البرامج ‪ W32Dasm , Hiew‬وعند تشـــغيل‬
‫البرنامج سوف تري الشكل التالي‪:‬‬
‫‪166‬‬

‫عند ظهور نافذة البرنامج أفتح قائمة ‪ Help‬ثم أضــــغط اﻻختيار ‪Registration‬‬
‫‪ Code‬ثم أدخل البيانات اﻵتية‪:‬‬

‫بعد إدخال البيانات أضغط ‪ OK‬وسوف تظهر لك الرسالة اﻵتية‪:‬‬


‫‪167‬‬
‫أضــــغط ‪ OK‬ثم أغلق البرنــامج ثم افتح ملف البرنــامج من خﻼل برنــامج‬
‫‪ W32Dasm‬ثم أبحث عن الرسالة التي ظهرت وعند عثورك عليها أضغط عليها‬
‫‪ Double Click‬مرتين وكل مرة تذهب إلي مكان مختلف فاذهب إلي المكان‬
‫الثاني‬

‫اذهب إلي اﻷمرين المحددين في الصورة ثم اعكسهما إلي ‪ jne‬ثم تحرك إلي‬
‫الرسالة الثالثة‬

‫اعكس اﻷمر إلي ‪ je‬ثم شــــغل البرنامج وادخل أي رقم وﻻحظ ظهور رســــالة‬
‫الشكر واختفاء كل الرسائل السابقة‬

‫المثال الثامن‪TempClean 3.04:‬‬

‫اﻷدوات المســـتخدمة مع هذا المثال هي ‪ W32Dasm , Hiew‬وعند تشـــغيل‬


‫البرنامج تظهر لك النافذة اﻵتية‬
‫‪168‬‬

‫أضغط ‪ Register‬ثم أدخل البيانات التالية‪:‬‬

‫بعد إدخال البيانات اضغط ‪ OK‬وسوف تظهر لك الرسالة التالية‬

‫أضغط ‪ OK‬ثم من خﻼل برنامج ‪ W32Dasm‬ابحث عن الرسالة‬


‫‪169‬‬

‫اعكس أمر القفز الموجود في الشــــكل ثم شــــغل البرنامج وادخل البيانات‬


‫الســـابقة ثم أضـــغط ‪ OK‬وســـوف تظهر رســـالة التســـجيل ولكن عند إغﻼق‬
‫البرنامج وإعادة تشــــغيله مرة أخري تجد أن البرنامج لم يتم تســــجيله وارجع‬
‫إلي أمر القفز الذي عكسته وتحرك أعﻼه بمسافة سطرين ستجد أمر النداء‬

‫تتبع أمر النداء حتي تصل إلي اﻷمر التالي‬

‫ويمكنك إتباع طريقتين الطريقة اﻷولي هي أن تأخذ اﻻوفســــت لهذا اﻷمر ثم‬
‫شغل برنامج ‪ Hiew‬وأضغط ‪ F3‬ثم ‪ F2‬وادخل الكود التالي‪:‬‬

‫‪Push‬‬ ‫‪00000001‬‬
‫‪Pop‬‬ ‫‪EAX‬‬
‫‪Ret‬‬

‫والطريقة الثانية ارجع أمر القفز كما كان ثم تتبع أمر النداء وأدخل الكود التالي‪:‬‬
‫‪170‬‬
‫‪Mov‬‬ ‫‪a1,01‬‬
‫‪Ret‬‬

‫وهذا الكود يعني إ ضافة القيمة ‪ 1‬إلي ‪ a1‬حيث أن ال سطر ال سابق ﻷمر القفز‬
‫يحتوي علي القيمة ‪ test a1,a1‬فإذا كانت القيمة ‪ a1=1‬يتم ت سجيل البرنامج‬
‫أما إذا كانت القيمة ‪ a1=0‬فلن يتم التســــجيل واﻷمر ‪ ret‬يعني الرجوع إلي‬
‫اﻷمر الذي يلي أمر النداء وهو ‪ test a1,a1‬وقد أضــــفنا ‪ 1‬إلي المســــجل ‪a1‬‬
‫وعلي ذلك عند المقارنة يجد البرنامج أن قيمة المسجل ‪ a1=1‬فيتم التسجيل‬
‫‪.‬‬

‫المثال التاسع‪SweetLittle Piano:‬‬


‫سوف نستخدم مع هذا المثال اﻷدوات ‪W32Dasm , Hiew , Ollydbg‬‬
‫أوﻻ قم بعمل نســخة احتياطية من البرنامج ثم شــغل البرنامج وادخل البيانات‬
‫اﻵتية‪:‬‬

‫بعد إدخال البيانات السابقة أضغط ‪ OK‬فتظهر لك الرسالة التالية‬

‫أضغط ‪ OK‬ثم أغلق البرنامج وشغب برنامج ‪ W32Dasm‬وافتح الملف التنفيذي‬


‫وأبحث عن الرسـالة السـابقة ولكنك لن تجدها فقم بتشـغيل برنامج ‪Ollydbg‬‬
‫ثم حمل الملف التنفيذي للبرنامج اضـــغط علي قســـم اﻷوامر ‪ Right Click‬ثم‬
‫نفذ اﻻختيار اﻵتي ‪:‬‬
‫‪171‬‬

‫تكون نتيجة تنفيذ اﻻختيار ال سابق الو صول إلي ق سم الن صوص ومن ثم أ ضغط‬
‫مفتاح ‪ Home‬للتحرك إلي أول الصــفحة ثم أضــغط ‪ Right Click‬ثم نفذ اﻻختيار‬
‫‪ Search for text‬ثم أكتب نص الرسالة السابقة‪.‬‬
‫‪172‬‬
‫عند الوصــول إلي الرســالة أضــغط عليها ‪ Double Click‬للوصــول إلي العنوان‬
‫الخاص بها ‪.‬‬

‫دون العنوان السابق ثم اذهب به إلي برنامج ‪ W32Dasm‬ثم أذهب إلي ذلك‬
‫العنوان ‪.‬‬

‫تحرك أي اﻷمر المشـــار إليه ثم خذ اﻻوفســـت ‪ @offset‬الخاص به ثم شـــغل‬


‫برنامج ‪ Hiew‬واعكســه إلي ‪ jne‬ثم اضــغط ‪ F9‬لحفظ التغيرات ثم ‪ F10‬للخروج‬
‫ثم شغل البرنامج وادخل أي رقم وسوف تحصل علي رسالة الشكر‪.‬‬
‫‪174‬‬

‫ﻓﻚ ﺍﻟﺘﺸﻔﲑ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻧﻈﺎﻡ ‪ASPack‬‬


‫سوف نستخدم مع هذا المثال مجموعة من البرامج أو اﻷدوات وهي ‪:‬‬
‫‪PEiD‬‬
‫‪ImportREConstructor 1.6‬‬
‫‪Ollydbg‬‬

‫قم بتشغيل البرنامج وسوف تري عند عمل مسح علي الملف النافذة التالية‬

‫شغل برنامج ‪ Ollydbg‬ثم حمل الملف المشفر من خﻼله ‪:‬‬

‫اضـــغط مفتاح ‪ F8‬ثم تحول إلي قســـم المســـجﻼت ثم توقف عند المســـجل‬
‫‪ ESP‬ثم أضغط ‪ Right Click‬ثم أضغط اﻻختيار ‪: Follow in Dump‬‬
‫‪175‬‬

‫تحرك إلي نافذة ‪ Dump‬ثم حدد اﻷربع ‪ Byte‬اﻷولي ثم أضــغط ‪ Right click‬ثم‬
‫اﻻختيار ‪:‬‬

‫ثم اضغط مفتاح ‪ F9‬لتشغيل البرنامج وسوف يتوقف البرنامج عند هذا العنوان‬
‫‪176‬‬

‫أضغط مفتاح ‪ F8‬وسوف تشاهد النافذة التالية‪:‬‬

‫بهذه الطريقة فقد تم التوصل إلي ‪ OEP‬الحقيقي للبرنامج‬

‫ﻓﻚ ﺍﻟﺘﺸﻔﲑ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻧﻈﺎﻡ ‪ASProtect‬‬


‫إليك مجموعة من اﻷمثلة لفك التشفير بنظام ‪ASProtect‬‬
‫المثال‪Alchemy Ping 1.0:‬‬
‫اﻷدوات المستخدمة مع هذا المثال هي ‪:‬‬
‫‪177‬‬
‫‪PEiD‬‬
‫‪ImportREConstructor 1.4.2‬‬
‫‪Ollydbg‬‬
‫هذا البرنامج تم عمل تشــــفير له باســــتخدام برنامج ‪ ASProtect‬وعند عمل‬
‫مسح للبرنامج بواسطة برنامج ‪ PEiD‬سوف تظهر النافذة التالية‬

‫شــــ غل بر نامج ‪ Ollydbg‬ثم ح مل الملف التنف يذي للبر نامج ثم أضــــغط ‪F9‬‬
‫لتشغيل البرنامج وسوف تري النافذة التالية‬

‫ثم أضغط ‪ Shift+F9‬حتي تشاهد النافذة التالية‬


‫‪178‬‬

‫النافذة الســـــابقة تحتوي علي مجموعة أوامر تســــتخدم عادة في البرامج‬


‫المشـــفرة باســـتخدام برنامج ‪ ASProtect‬ثم أضـــغط ‪ ALT+M‬ثم نفذ اﻻختيار‬
‫التالي ‪:‬‬

‫بعد الضــــغط علي اﻻختيار ‪ Set memory breakpoint on access‬تحرك إلي‬


‫نافذة ‪ CPU‬ثم أضغط ‪ Shift+F9‬وسوف تري ‪ OEP‬الحقيقي للبرنامج‬
‫‪179‬‬

‫المثال الثاني‪robonanny 1.1:‬‬


‫ســــوف نســــتخــدم في هــذا المثــال البرامج ‪PEiD, Ollydbg‬‬
‫‪ ,ImportREConstructor 1.6‬وهذا البرنامج مشفر بواسطة برنامج ‪ASProtect‬‬
‫وعند مســـح البرنامج باســـتخدام برنامج ‪ PEiD‬ســـوف تحصـــل علي النتيجة‬
‫التالية‪:‬‬
‫‪180‬‬
‫شــغل برنامج ‪ Ollydbg‬ثم حمل الملف التنفيذي المشــفر للبرنامج من خﻼله‬
‫ثم أضغط ‪ F9‬لتشغيل البرنامج ثم أضغط ‪ Shift+F9‬فتظهر النافذة التالية‪:‬‬

‫عند الوصـــول إلي هذه النافذة أضـــغط ‪ Alt+M‬ثم أشـــر إلي العنوان الموضـــح‬
‫وأضغط ‪ Right Click‬ثم أضغط اﻻختيار ‪Set memory breakpoint on access‬‬

‫اذ هب إلي نا فذة ‪ CPU‬ثم أضــــغط ‪ Shift+F9‬وســــوف تري ‪ OEP‬الحقيقي‬


‫للبرنامج‬
‫‪181‬‬
‫ثم أذهب إلي المجلد الذي يحتوى علي البرنامج وشــــغله ثم شــــغل برنامج‬
‫‪ ImportREConstructor 1.6‬ثم أختر البرنامج ثم أضغط ‪ AT Autosearch‬وعند‬
‫ظهر الرســـالة أضـــغط عليها ‪ OK‬ثم أضـــغط اﻻختيار ‪ Get Imports‬ثم اضـــغط‬
‫‪Show Invalid‬‬

‫ثم اضغط ‪ Right Click‬علي ‪ Imports‬الغير شرعية‬


‫‪182‬‬
‫من خﻼل القائمة المختصرة اضغط اﻻختيار )‪Trace Level1 (Disasm‬‬

‫ثم اضغط ‪ Right Click‬علي ‪ Import Functions‬الغير شرعية ثم أضغط ‪Plugin‬‬


‫‪183‬‬
‫المثال الثالث‪PDF to HTML 1.5:‬‬
‫سوف نستخدم مع هذا المثال اﻷدوات اﻵتية‪:‬‬

‫‪PEiD,‬‬ ‫‪ImportREConstructor 1.6, Ollydbg , Hiew‬‬

‫قم بعمل نســــخة احتياطية من البرنامج وهذا البرنامج مشــــفر باســــتخدام‬


‫‪ ASProtect‬وعند عمل م سح له با ستخدام برنامج ‪ PEiD‬نح صل علي النتيجة‬
‫التالية‪:‬‬

‫شغل برنامج ‪ Ollydbg‬ثم افتح الملف التنفيذي للبرنامج من خﻼله ‪.‬‬

‫اضغط مفتاح ‪ Shift+F9‬ثم أضغط ‪ Ctrl + B‬ثم أدخل البيانات اﻵتية‪:‬‬


‫‪184‬‬

‫ثم اضغط ‪ OK‬ثم تحرك إلي اعلي سطر واحد ثم ضع نقطة توقف ‪Breakpoint‬‬
‫علي أمر النداء الثاني‪:‬‬

‫يســـمي أمر النداء هذا بالنداء الســـحري ﻷنه ســـوف يتحرك إلي مكان ‪OEP‬‬
‫الصــــحيح في معظم البرامج وبعد وضــــع ‪ Breakpoint‬علي أمر النداء اضــــغط‬
‫‪ Right Click‬علي هذا اﻷمر ثم نفذ اﻻختيار ‪ Fill with NOPs‬من خﻼل قائمة‬
‫‪: Binary‬‬
‫‪185‬‬
‫وبعد تنفيذ ‪ NOP‬أضــغط ‪ Shift+F9‬ثم اضــغط "‪ "-‬ثم حدد أوامر ‪ NOP‬ثم اضــغط‬
‫‪ ALT+BackSpace‬و سوف يرجع اﻷمر كما كان ثم ا ضغط ‪ Shift+F9‬حتي ت صل‬
‫إلي اﻷمر التالي‪:‬‬

‫اضغط ‪ Alt +M‬ثم نفذ اﻷمر كما هو واضح في الشكل التالي‪:‬‬

‫ثم أضــــغط ‪ Shift + F9‬وســــوف تصــــل إلي ‪ OEP‬ولكن هذا المكان ليس هو‬
‫المكان الصحيح حيث أن المسجل ‪ EAX‬ﻻ يساوي المسجل ‪EIP‬‬
‫‪186‬‬

‫و لذ لك حدد المســــ جل ‪ ECX‬ثم اضــــغط ‪ Right Click‬ثم أضــــغط اﻻخت يار‬


‫‪: Follow in Dump‬‬

‫ثم اذهب إلي نافذة ‪ Dump‬ثم نفذ اﻻختيار اﻷتى ‪:‬‬


‫‪187‬‬

‫وبعد تنفيذ اﻻختيار سوف تحصل علي الشكل التالي ‪:‬‬

‫تحرك إلي اعلى حتى تصل إلي هذا الجزء ‪:‬‬

‫وكما هو واضح فقد ظهر ‪ OEP‬الحقيقي وهو ‪. PUSH EBP‬‬


‫‪188‬‬

‫ﻓﻚ ﺍﻟﺘﺸﻔﲑ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻧﻈﺎﻡ ‪Neolitet‬‬


‫في هذا الجزء نتعرف علي أمثلة ل‪Neolite‬‬

‫المثال اﻷول‪Notepad 5.1:‬‬


‫اﻷدوات التي تســــت خدم مع هذا الم ثال هي ‪ImportREConstructor 1.6‬‬
‫و‪ Hiew‬و ‪ Ollydbg‬وعند عمل مسح للملف التنفيذي للبرنامج تشاهد النافذة‬
‫التالية‪:‬‬

‫شغل برنامج ‪ Ollydbg‬ثم افتح الملف التنفيذي من خﻼله ثم أضغط ‪ F8‬حتي‬


‫تحصل علي رسالة أضغط ‪. NO‬‬

‫اضغط مفتاح ‪ F8‬مرتين حتي وسوف تحصل علي الشكل التالي‪:‬‬


‫‪189‬‬

‫كما يظهر في الشــكل تم العثور علي ‪ OEP‬الحقيقي للبرنامج ويدل علي ذلك‬
‫تســـاوي ‪ OEP‬مع ‪ EIP‬ثم شـــغل برنامج ‪ ImportREConstructor 1.6‬ثم افتح‬
‫الملف التنفيــذي ثم ضــــع القيمــة ‪ 10CC‬في خــانــة ‪ OEP‬ثم أضــــغط ‪IAT‬‬
‫‪ AutoSearch‬ثم أضــــغط ‪ Get Imports‬ثم أضــــغط ‪ Fix Dump‬ثم اختر الملف‬
‫الناتج من برنامج ‪ Ollydbg‬وسوف تجد أن البرنامج يعمل بدون مشاكل ‪.‬‬

‫المثال الثاني‪SpeedConnect 5.0.4 :‬‬


‫البرامج المســـتخدمة مع هذا المثال هي ‪ImportREConstructor :‬‬
‫‪1.6‬و‪ Hiew‬و ‪ Ollydbg‬وعند مســـح الملف باســـتخدام برنامج ‪ PEiD‬ســـوف‬
‫تﻼحظ النافذة التالية ‪:‬‬

‫شغل برنامج ‪ Ollydbg‬ثم حمل الملف التنفيذي للبرنامج من خﻼله ثم ا ضغط‬


‫مفتاح ‪ F8‬خمس مرات حتى تصل إلي الكل التالي‬
‫‪190‬‬

‫كما تﻼحظ فإن المســـجل ‪ EAX‬يحتوي ‪ OEP‬الحقيقي للبرنامج ثم أضـــغط ‪F8‬‬


‫للدخول إلي أمر القفز ‪.‬‬

‫ﻻحظ أن المســجل ‪ EIP‬متســاوي مع العنوان الذي نقف عليه وهذا يدل علي‬
‫أننا في المكان ال صحيح ومن ثم قف علي هذا اﻷمر ثم أ ضغط ‪ Right Click‬ثم‬
‫أضغط اﻻختيار ‪ Dump‬ثم احفظ الملف الناتج تحت اسم ‪ sample.exe‬ثم أغلق‬
‫بر نامج ‪ Ollydbg‬ثم شــــ غل بر نامج ‪ ImportREConstructor 1.6‬ثم أد خل‬
‫القي مة ‪ 1E54‬في خانة ‪ OEP‬ثم اضــــغط ‪ IAT AutoSearch‬ثم اضــــغط ‪Get‬‬
‫‪ Imports‬ثم أضــــغط ‪ Fix Dump‬ثم حدد الملف ال ناتج من بر نامج ‪Ollydbg‬‬
‫وسوف تجد أن البرنامج يعمل بدون مشاكل‬

‫ﻓﻚ ﺍﻟﺘﺸﻔﲑ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻧﻈﺎﻡ ‪PECompact‬‬


‫وسوف نستعرض في هذا القسم مجموعة من اﻷمثلة‬
‫المثال اﻷول‪Notepad 5.1:‬‬
‫سوف نستخدم مع هذا المثال اﻷدوات‪:‬‬
‫‪191‬‬
‫‪Ollydbg , PEiD , ImportREConstructor 1.6 , LordPE‬‬
‫قم بعمل م سح للبرنامج من خﻼل برنامج ‪ PEiD‬و سوف تح صل علي ال شكل‬
‫التالي‬

‫شغل برنامج ‪ Ollydbg‬ثم حمل الملف التنفيذي للبرنامج المشفر داخله‬

‫يظهر في الشــــكل الســــابق أن أمر القفز هو الذي وصــــل إليه البرنامج بعد‬
‫تحميله واﻷمر التالي هو ‪ OEP‬الحقيقي للبرنامج ويمكن الوصــول إليه بالضــغط‬
‫علي مفتاح ‪ F8‬مرتين ‪:‬‬
‫‪192‬‬

‫قف علي المسجل ‪ ESP‬ثم اضغط ‪ Right Click‬ثم اضغط اﻻختيار اﻵتي‪:‬‬

‫تحرك إلي نافذة ‪ Dump‬ثم قف علي اﻷربع ‪ Bit‬اﻷولي ثم أضـــغط ‪Right Click‬‬
‫ثم نفذ اﻻختيار ‪:‬‬

‫أضغط ‪ Shift+F9‬لتحصل علي النافذة التالية‪:‬‬


‫‪193‬‬

‫كما هو واضــح من الشــكل التالي ال‪ OEP‬الحقيقي للبرنامج حدده ثم أضــغط‬


‫‪ Alt+M‬ثم قف علي مقطع الكود ثم أضغط ‪ Right Click‬ثم نفذ اﻻختيار اﻵتي‪:‬‬
‫‪194‬‬
‫واﻵن أضغط مفتاح ‪ Shift+F9‬لتحصل على الشكل التالي‬

‫واﻵن شغل برنامج ‪ LordPE‬ثم أضغط ‪ Right Click‬علي الملف المشفر ثم نفذ‬
‫اﻻختيار ‪ Dump Full‬كما هو واضح من الشكل التالي ‪:‬‬

‫قم بحفظ الملف تحت اﻻســــم ‪ Dumped.exe‬مع مﻼحظة عدم إغﻼق برنامج‬
‫‪ Ollydbg‬واﻵن شــــ غل بر نامج ‪ ImportREConstructor 1.6‬ثم أختر الملف‬
‫المشفر ثم ضع ‪ OEP‬كما في الشكل التالي‪:‬‬
‫‪195‬‬

‫أضغط ‪ IAT AutoSearch‬ثم أضغط ‪ Get Imports‬لتحصل علي الشكل التالي‪:‬‬

‫ا ضغط اﻻختيار ‪ Fix Dump‬ثم أختر الملف الناتج من برنامج ‪ Ollydbg‬ثم شغل‬
‫البرنامج وسوف تﻼحظ انع يعمل بدون مشاكل‬
‫‪196‬‬

‫ﻓﻚ ﺍﻟﺘﺸﻔﲑ ﺑﺎﺳﺨﺪﺍﻡ ﻧﻈﺎﻡ ‪Petit‬‬


‫واليك مجموعة من اﻷمثلة لشرح طريقة ‪. Petit‬‬

‫المثال اﻷول‪API Spy 2.5:‬‬


‫البرامج المستخدمة مع هذا المثال هي‪:‬‬
‫‪Ollydbg , PEiD, ImportREConstrutor 1.6‬‬
‫شــغل برنامج ‪ PEiD‬ثم اعمل مســح للملف التنفيذي للبرنامج وســوف تحصــل‬
‫علي الشكل التالي‪:‬‬

‫قم بتشغيل برنامج ‪ Ollydbg‬ثم أفتح الملف التنفيذي للبرنامج من خﻼله‬


‫‪197‬‬
‫اضـــغط مفتاح الوظيفة ‪ F8‬مرة واحدة ثم قف علي المســـجل ‪ ESP‬ثم أضـــغط‬
‫‪ Right Click‬ثم أضغط اﻻختيار ‪. Follow in Dump‬‬

‫تحول إلي نافذة ‪ Dump‬ثم حدد أول رقمين ثم اضـــغط ‪ Right Click‬ثم أضـــغط‬
‫اﻻختيار الموضح بالشكل‬

‫أضغط ‪ Shift+F9‬حتي يظهر الشكل التالي‪:‬‬


‫‪198‬‬

‫واﻵن أضغط مفتاح ‪ F8‬للدخول في اﻷمر‬

‫واضـــح في الصـــورة ال‪ OEP‬الحقيقي للبرنامج توقف عند هذا اﻷمر ثم أضـــغط‬
‫‪ Right Click‬ثم اضغط اﻻختيار ‪ Dump debugged process‬ثم احفظ الملف‬
‫ماهي لغة اﻻسمبلي‪8 ...................................................................... :‬‬
‫المسجﻼت‪8 ...................................................................... Registers:‬‬
‫مسجﻼت اﻷغراض العامة ‪8 .......................... General Purpose Registers‬‬
‫مسجﻼت اﻷقسام‪9 .............................................. Segment Registers:‬‬
‫مسجﻼت التأشير‪10 ................................................ Pointer Registers:‬‬
‫مسجﻼت الحالة والتحكم‪11 ..................... Control and Status Registers:‬‬
‫إعﻼم التحكم‪11 ............................................................ Control Flags:‬‬
‫أعﻼم الحالة‪11 .............................................................. Status Flags:‬‬
‫مسجﻼت التحكم للمعالج والذاكرة‪12 ................................................... :‬‬
‫أوامر وتعليمات لغة اﻻسمبلي ‪12 ..........................................................‬‬
‫أنواع الوسائط‪13 .............................................................................. :‬‬
‫استخدام ‪13 ...................................................................... Debugger‬‬
‫كيفية إدخال كود البرنامج‪14 ............................................................... :‬‬
‫تنفيذ العمليات الحسابية ‪16 .................................................................‬‬
‫التحكم في البرنامج ‪18 .......................................................................‬‬
‫الجملة الشرطية‪18 ....................................................... IF Statement:‬‬
‫الدالة ‪18 ................................................................................... CMP‬‬
‫الدالة‪18 ................................................................................. TEST:‬‬
‫الدورات ‪19 .............................................................................. Loops‬‬
‫دوال التعامل مع النصوص ‪20 ................................................................‬‬
‫اﻹجراءات ‪25 .................................................................... Procedures‬‬
‫كيفية عمل اﻹجراءات‪25 .................................................................... :‬‬
‫إنشاء اﻹجراء‪25 ............................................................................... :‬‬
‫التعليمة ‪25 ............................................................................. :MOV‬‬
‫التعليمة ‪26 .............................................................................. :ADD‬‬
‫التعليمة‪26 .............................................................................. :AND:‬‬
‫التعليمة‪26 .............................................................................. CALL:‬‬
‫التعليمة‪26 ................................................................................RET:‬‬
‫التعليمة‪26 ............................................................................... CMP:‬‬
‫التعليمة‪27 ................................................................................ INT:‬‬
‫التعليمة‪27 ............................................................................... NOP:‬‬
‫التعليمة‪27 ................................................................................. OR:‬‬
‫التعليمة‪27 ............................................................................. PUSH:‬‬
‫‪200‬‬
‫التعليمة‪27 ............................................................................... POP:‬‬
‫التعليمة‪27 ................................................................................ REP:‬‬
‫التعليمة‪27 ................................................................................ INC:‬‬
‫التعليمة‪28 ............................................................................... DEC:‬‬
‫التعليمة‪28 ............................................................................... SUB:‬‬
‫التعليمة‪28 .............................................................................. TEST:‬‬
‫التعليمة‪28 ............................................................................... XOR:‬‬
‫تعليمات القفز‪28 .............................................................................. :‬‬
‫التحويﻼت بين اﻷنظمة الرقمية ‪30 .........................................................‬‬
‫النظام العشري ‪30 ................................................ Decimal Numbers :‬‬
‫النظم الثنائي‪30 ...................................................... Binary Numbers :‬‬
‫النظام السداسي عشر‪31 ............................... Hexadecimal Numbers :‬‬
‫التحويل من الثنائي إلي العشري‪32 .................................................... :‬‬
‫التحويل من العشري إلي السادس عشر‪32 .......................................... :‬‬

‫فك حماية أول برنامج‪36 ......................................................................‬‬


‫برنامج ‪39 ..................................................................... OllyDbg 1.10‬‬
‫قائمة ملف ‪39 ............................................................................. File‬‬
‫قائمة العرض ‪40 .........................................................................View‬‬
‫قائمة ‪41 ................................................................................Debug‬‬
‫قائمة الخيارات ‪42 .................................................................. Options‬‬
‫المظهر ‪42 ...................................................................... Appearance‬‬
‫خيارات ‪43 ....................................................................... Debugging‬‬
‫الخاصية‪44 .................................................... Just-in-time debugging:‬‬
‫الخاصية ‪44 ............................................................... Add to explorer‬‬
‫برنامج ‪48 ............................................................... SmartCheck 6.03‬‬
‫برنامج ‪51 .................................................................. W32Dasm 8.93‬‬
‫قائمة ‪52 .................................................................................... File‬‬
‫قائمة ‪53 ....................................................................................Edit‬‬
‫قائمة ‪54 .............................................................................. Options‬‬
‫قائمة ‪54 ................................................................................Debug‬‬
‫قائمة ‪55 .................................................................................. Goto‬‬
‫قائمة ‪55 ................................................................... PE Information‬‬
201
56 .............................................................................. SoftIce ‫برنامج‬
58 ............................................................. DeDe3.50.04.1635 ‫برنامج‬
59 ............................................................. Hex Workshop 3.1 ‫برنامج‬
61 ......................................................................... Hiew 7.01 ‫برنامج‬
63 ................................................................. API Monitor 1.5 ‫برنامج‬
65 ................................................................ RegMonitor 6.03 ‫برنامج‬
67 ................................................................. CodeFusion 3.0 ‫برنامج‬
71 .................................... Diablo2002's Universal Patcher2.03 ‫برنامج‬
74 ...............................................................PatchEngine 1.32 ‫برنامج‬
75 .......................... Predator's Extreme Loader Generator 0.3 ‫البرنامج‬
77 ............................................................. PrincessSandy 1.0 ‫برنامج‬
79 .............................................................................. LordPE ‫برنامج‬
81 ........................................................................ PEditor 1.7 ‫برنامج‬
83 .............................................................. File insPEctor XL ‫البرنامج‬
88 ........................................................................ PEiD 0.93 ‫البرنامج‬
95 .................................................................... Stud PE 1.8.1 ‫برنامج‬
100 ........................................................... ProcDump 1.6 ‫ برنامج‬:‫أوﻻ‬
103 ....................................................................... Apispy 2.5 ‫برنامج‬
104 ............................................................. ASCII Table 2.01 ‫برنامج‬
105 ................................................................ eXeScope 6.41 ‫برنامج‬
106 .......................................... HexDecOctBin Converter 1.00 ‫برنامج‬
106 ............................................... ImportREConstructor 1.4.2 ‫برنامج‬
109 .............................................. Import REConstructor 1.6 ‫البرنامج‬
111 ............................................................ ProcessKiller 1.1 ‫البرنامج‬
112 .......................................................................... Revirgin ‫برنامج‬
112 ....................................................... Windows Enabler 1.1 ‫برنامج‬

116 ................................................... ‫فك حماية برامج الفيجوال بيسيك‬


116 ..................................................... HexWorkshop ‫استخدام برنامج‬
125 ................................................... String Compare ‫مقارنة النصوص‬
125 ................................................... Variant Compare ‫مقارنة المتغير‬
126 .................................................... Long Compare ‫المقارنة الطويلة‬
126 ...................................................Single Compare ‫المقارنة الفردية‬
‫‪202‬‬
‫المقارنة المضاعفة ‪127 ............................................. Double Compare‬‬
‫مقارنة القيم الصحيحة‪127 ........................................ Integer Compare:‬‬
‫مقارنة البايت ‪128 ........................................................ Byte Compare‬‬
‫مقارنة العملة ‪128 ................................................. Currency Compare‬‬
‫استخدام برنامج ‪128 ...................................................... SmartCheck‬‬

‫استخدام برنامج ‪132 ........................................................... eXeScope‬‬


‫طرق إخفاء الشاشة المزعجة ‪132 ........................................................‬‬
‫طرق الباتش ‪133 ......................................................................Patch‬‬
‫إنشاء الباتش لبرنامج متاح في الذاكرة‪133 .............................................‬‬
‫طرق كسر حماية ‪135 ........................................................... CD-ROM‬‬
‫طرق مراقبة ‪136 .................................................................. CD-ROM‬‬
‫فك حماية السي دي المغلق‪137 ....................................................... :‬‬

‫إيجاد السيريال ‪140 ............................................................................‬‬


‫استخدام برنامج ‪ Softice‬ﻹيجاد السيريال‪140 ........................................ :‬‬
‫كسر السيريال ‪141 ............................................................................‬‬
‫الباتش ‪156 ............................................................................. Patch‬‬

‫باستخدام نظام ‪174 .............................................. ASPack‬‬ ‫التشفير‬ ‫فك‬


‫باستخدام نظام ‪176 ........................................... ASProtect‬‬ ‫التشفير‬ ‫فك‬
‫باستخدام نظام ‪188 .............................................. Neolitet‬‬ ‫التشفير‬ ‫فك‬
‫باستخدام نظام ‪190 .........................................PECompact‬‬ ‫التشفير‬ ‫فك‬
‫باسخدام نظام ‪196 .................................................... Petit‬‬ ‫التشفير‬ ‫فك‬
‫ن تظرك بموقعنا ﳌز د من اﻹصدارات‬
‫‪www.easytut.net‬‬
(EAN/JAN-13)
6224007896266

You might also like