السلام عليكم ورحمة الله وبركاته...
هل تريد أن تصبح كراكر؟! أنا متأكد من أن العديد من الأعضاء يريدون ذالك لكنهم لا يعرفون كيف يبدأون ولا يجدون دروس ومواضيع عن ذالك. ونظراً لعدم وجود مواضيع في هذا المنتدى تتحدث عن كيفية صناعة الكراك وللحاجة الضرورية لمثل هذه المواضيع، قررت إنشاء مجموعة دروس من إعدادي الخاص لتعليم طريقة صنع الكراكات وللتحدث عن طريقة استعمال أشهر برامج صنع الكراك وأساليبها. فلا بد أن ننهض من الجهل إلى المعرفة والنهضة التي سبقنا إليها الكثيرون، وللأسف بسبب كسل الأخوة العرب المبرمجين المحترفين (إن وجدوا) على القيام بكتابة مواضيع مهمة ومفيدة ما زلنا متأخرين كثيراً عن الغرب، لذا قررت كتابة هذا الموضوع لنشر الفائدة والمعرفة ومشاركة خبرتي مع الأعضاء مع أنني مازلت طالب مدرسة (تصوروا أن المبرمجين العرب الكبار لم يكتبوا مواضيع عن الكراك والبرمجة بينما طالب مدرسة مثلي يقوم بهذا الأمر!)، لم أصل بعد إلى درجة الإحتراف، لكن إن شاء الله سأصل إليها وسنصل جميعنا إلى الإحتراف!
في الحقيقة كنت أود أن أنشر هذا الموضوع منذ أشهر لأشارك أعضاء هذا المنتدى الرائع خبرتي في صنع الكراكات، لكني تأخرت بسبب الدراسة المكثفة هذه السنة والإمتحانات الكثيرة، عموماً أرجو أن تستفيدوا من هذا الموضوع ولا تنسوا الدعاء لي!
الدرس الأول:
1. فكرة سريعة عن الكراك:
الكراك في عالم الكراكرز (الكاسرون – مخترقوا حماية البرامج) هو ملف يقوم بكسر حماية برنامج أو لعبة. مثال على ذالك برنامج Download Accelerator والذي يعرفه الجميع بلا شك، يوجد له كراك Crack تمت برمجته عن طريق الكراكر Cracker من أجل:
1. التخلص من الوقت الزمني للبرامج التجريبية والتي لا يمكن استخدامها بعد انتهاء الفترة المحددة.
2. تسجيل البرامج التي تطالب بإسم مستخدم وكلمة مرور.
3. تسجيل البرامج التي تطالب بالرقم التسلسلي Serial Number.
4. التخلص من الشاشات المزعجة التي تظهر في البرامج لتذكيرك باقتراب انتهاء فترة تجربة البرنامج وضرورة التسجيل.
6. بعض الكراكت تقوم بإضافة قوائم وميزات وأوامر للبرامج و الألعاب.
5. للتخلص من رسالة الخطأ التي تظهرها بعض الألعاب التي تطالب بوجود سيدي اللعبة مع أن اللعبة لا تحتاج إلى سيدي لأن جميع الملفات الضرورية موجودة على القرص الصلب (Hard Disk) ، لكنها حركة برمجتها الشركة المنتجة للعبة لتضمن أنك قمت بشراء السيدي الأصلي للعبة أو أن السيدي غير مقرصن أو من هذا القبيل.
قمت بالفعل بشراء سيدي لعبة أصلي وكأن يطلب مني السيدي في كل مرة أريد أن ألعب اللعبة، لكني قمت بالتخلص من هذه الرسالة المزعجة بصناعة كراك للعبة!
و قمت مرة بتنزيل برنامج لتسجيل الصوت (نسيت اسمه) لكنه كان لا يسمح لي بحفظ الملف لأنه نسخة تجريبية، لكن أين المشكلة؟ قمت بصناعة كراك لإعادة تفعيل أمر حفظ الملف!
ملاحظة: هناك استخدامات عديدة أخرى للكراك في عالم الكراكرز لكني لن أتحدث عنها بسبب تعقيدها.
2. ما الذي أحتاجه كي أصبح كراكر:
أعتقد أن الفكرة وصلت، والآن حإن الوقت لنتعرف على الذي نحتاجه لنصبح كراكرز، يحتاج الكراكر إلى الصبر الطويل وبعض برامج الكراكينغ (والتي سأتحدث عنها قريباً) وإتقان على الأقل البرمجة بشكل بسيط في لغة الAssembly Language أو لغة التجميع والتي يعتبرها الكثيرون أقوى من لغة البرمجة ال C و ال C++ الغنية عن التعريف، والسبب يكمن في أن لغة الC هي إحدى لغات الHigh Level Language أو لغات البرمجة العليا والتي تقوم بمعالجة المعلومات التي يحتاجها التطبيق أو البرنامج ليعمل، ونادراً جداً ما تتطرق إلى البيوس والذاكرة وقطع الكومبيوتر.
أما لغة الAssembly Language فهي لغة من لغات الLow Level Language أو لغات البرمجة السفلة والتي تتطرق إلى البيوس والذاكرة وقطع الكومبيوتر وتأخذك في عالم الBinary أي لغة الآلة "0 و 1 " وتقوم بإطلاعك على ما يجري في الخفاء فتكون أنت المتحكم بكل شيء، لذا فهي من أكثر اللغات تعقيداً وروعة في الوقت ذاته!
قد تقول الآن لنفسك "وما أدراني أنا بلغة الAssembly المعقدة ولن أستطيع صناعة كراك"، لكن لا تخف فأنا معك حتى النهاية ولن تحتاج إلى إتقان هذه اللغة تمامًا في البداية!
3. فلنبدأ بالحديث عن أهم برامج الكراكينغ:
أشهر وأهم برامج الكراكينغ: Win32dasm, Hiew600, Softice
4. البرامج التي سوف نستخدمها:
البرامج التي سوف أقوم بشرح طريقة عملها واستخدامها في كسر حماية البرامج:
Win32dasm: برنامج رائع ومهم، يقوم بعدة عمليات مثل فك تجميع التطبيق أو البرنامج وعدة أمور أخرى. اسم البرنامج يرمز إلى Windows 32 Disassembler والذي يعني "مفكك تجميع تطبيقات ويندوز 32" والرقم 32 يرمز إلى تطبيقات ويندوز للبرامج المشفرة تحت بيئات ويندوز 98 وما يليه من إصدارات. وهناك برنامج مشابه وهو Win16dasm والذي يعمل تحت بيئة ويندوز 95 لكننا لن نحتاجه لأنه قديم.حمل البرنامج win32dasm بعمل نقرة يمين عليه واختيار Save Target As أو حفظ المسار، وإن لم يعمل حمله بنفس الطريقة من هنا.
Hiew600: برنامج رائع وظيفته تشبه وظيفة البرنامج السابق لكنه يعمل تحت بيئة الDOS ومن إحدى ميزاته السماح للكراكر بتعديل شفرة التطبيق بطريقة برمجية وعرض الملف بصيغة ASCII أو Hex أو Assembly. اسم البرنامج يرمز إلى Hackers View أي وجهة نظر الهاكر! و الرقم 600 يدل على الإصدار السادس منه وليس الست مئة!
حمل البرنامج بعمل نقرة يمين عليه واختيار Save Target As أو حفظ المسار. وإن لم يعمل حمله بنفس الطريقة من هنا.
Soft-Ice: برنامج مذهل ومن أشهر البرامج التي يستخدمها الكراكر ويساعد كثيراً جداً في كسر البرامج المحمية بكلمة سر أو سيريال، ويمكن القول أنه أفضل برنامج للكراكينغ! لن أقوم بوضع رابط التحميل له الآن لأننا لن نحتاجه في هذه الفترة، ولا أريد أن أعقدكم به من البداية! كما أن كل شيء في وقته حلو!
أصبحت متحمساً أليس كذالك؟! الموضوع شيّق ومفيد لذا أنصحكم بقراءة الموضوع لآخره!
5. كيف أتحسن في الكراكينغ:
سؤال مهم، نصيحتي لكم هي قراءة مواضيع كثيرة عن الكراكرز والكراكينغ، ومتابعة آخر أخبارهم وبرامجهم، وبما أن 95% من هذه المواضيع على الإنترنت هي باللغة الإنجليزية أنصحكم بتعلم هذه اللغة لمن لا يتقنها، والحمد أنا أتقن اللغة الإنجليزية تماماً لفظاً وكتابةً، تعلموا أيضاً بعضاً من لغة الAssembly فهي مهمة للكراكينغ. ويجب أن تصبروا كثيراً؛ فأنا قضيت فترة طويلة في تعلم البرمجة والكراكينغ حتى تقدمت فيهما مع أنني لم أصل إلى الإحتراف بعد، وأنا لا أقصد أن "أشوف حالي عليكم" لا والله، ولكني أقول لكم أن تصبروا وتتعلموا هذه الأمور أكثر وأكثر حتى تتقنوها!
6. شرح برنامج Win32dasm:
نتوكل على الله سبحانه وتعالى ونبدأ بشرح برنامج Win32dasm:
(إذا لم تظهر الصورة، اعمل نقرة يمين عليها واختار Show Picture أو أنظر إلى الصورة المرفقة)
*سأشرح لكم أولاً وظائف القوائم:
Disassembler: قائمة لاختيار ملف لفك تجميعه (disassemble) وعرض شفرته أو حفظ مشروع (ملف) قد تم فكه، بالإضافة إلى تغيير خصائص الخط التي تظهر فيه الشفرة وطباعة الصفحة واختيار بعض خيارات التفكيك.
Project: قائمة لفتح مشروع لبرنامج كان قد تم تفكيكه سابقاً.
Debug: قائمة مهمة وتتضمن خيارات مهمة مثل اكتشاف ثغرة أمنية في برنامج لاستخدامها في صنع الكراك.
Search: قائمة للبحث عن نص معين ضمن شفرة البرنامج المفكك.
Goto: قائمة للإنتقال إلى مكان محدد في الشفرة.
Execute Text: قائمة لتحرير أو تشغيل السطر المحدد.
Functions: قائمة الوظائف وتعتبر مهمة.
HexData: قائمة لعرض الشفرة بلغة الهكس ديسيمال Hexadecimal أي نظام الست العشري في اللغة العربية والذي يميز بالحرف H وهي في عالم البرمجة والأسمبلي تعتبر من أشهر وأفضل أنظمة الرياضيات في تمثيل الشفرة والمعلومات المكتوبة بالBinary. و نظام الHexadecimal يستخدم ستة عشر Digit وهي: 0, 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,A ,B ,C ,D ,E ,F .
Refs: والتي ترمز إلى References وهي قائمة المراجع أو الإشارات وهي مهمة جداً وسوف نرى عملها في الدروس القادمة عندما نطبق العمل على البرامج الضحية إن شاء الله.
Help: قائمة المساعدة في البرنامج.
شريط الحالة: انظر أسفل الصورة إلى ذالك الشريط(Select a file...)،احفظ هذا الإسم جيداً لأنه مهم وسأستخدمه في الدروس القادمة.
*سأشرح لكم الآن وظائف الأزرار وكل زر وضعت تحته رقم لتسهيل تعريفه:
1. زر لفتح ملف (برنامج) كي تم تفكيكه.
2. زر لحفظ الشفرة للبرنامج المفكك بصيغة ASCII والتي ترمز إلى American Standard Code for Information Interchange والتي تعني بالعربية "الرموز الأمريكية القياسية لمبادلة المعلومات"، حيث أن كل حرف أو رمز في لوحة المفاتيح له رقم خاص به في الكومبيوتر أو الحاسب.
3. زر للبحث عن شيء معين في الشفرة.
4. زر لنسخ سطر تم تحديده في الشفرة.
5. زر للإنتقال إلى بداية الشفرة.
6. زر للإنتقال إلى نقطة بداية البرنامج.
7. زر للإنتقال إلى صفحة معينة.
8. زر للإنتقال إلى منطقة الكود الذي سيقوم المستخدم (أنت) بإدخاله.
9. زر لا يمكن استخدامه أو تفعيله إلا عند الوقوف على أمر قفز Jump واختصاره المستخدم له هو jmp وعندما تنقر عليه سيتم نقلك إلى مكان معين في الشفرة محدد بهذا الأمر. سأتحدث عن الأوامر قريباً.
10. زر لا يمكن استخدامه إلا بعد القفز إلى منطقة محددة في الشفرة باستخدام أمر القفز jmp وهذا الزر يقوم بالعودة بك إلى منطقة القفز.
11. زر لا يمكن استخدامه إلا عند الوقوف على أمر استدعاء Call وعند النقر عليه يتم استدعاء أمر آخر موجود على السطر المحدد بأمر الاستدعاء Call.
12. رز لا يمكن استخدامه إلا بعد استدعاء أمر من منطقة محددة في الشفرة باستخدام أمر Call وهذا الزر يعود بك إلى منطقة أمر الاستدعاء Call.
13. زر لاستدعاء قائمة الوظائف المستوردة Imported Functions أو المدخلة من نظام التشغيل إلى البرنامج.
14. زر لاستدعاء قائمة الوظائف المصدرة Exported Functions أو الخارجة من البرنامج إلى نظام التشغيل.
15. زر يتعلق بقائمة نظام الHexadecimal، ولا داعي لشرحه الآن.
16. زر وظيفته تشبه وظيفة الزر السابق تقريباً.
17. زر لعرض مراجع القوائم Menu References.
18. رز لعرض مراجع صناديق الحوار Dialog References.
19. زر لعرض مراجع صفوف المعطيات String Data References وهو مهم جداً.
20. رز لطباعة الشفرة.
21. شريط الحالة: ليس زراً، انظر أسفل الصورة إلى ذالك الشريط (Select a file...)، احفظ هذا الإسم جيداً لأنه مهم وسأستخدمه في الدروس القادمة.
7. شرح الأوامر:
الأوامر هي كلمات لتنفيذ أمر ما في البرنامج وتكون في الشفرة، وسوف نجدها عندما نفكك برنامج.
CALL:
هذا الأمر يقوم باستدعاء عنوان في الشفرة لتشغيل وظيفة ما موجودة في ذلك العنوان. مثال CALL 00401154: يقوم هذا الأمر بتنفيذ أمر ما موجود في السطر المحدد بالعنوان، وبعد الانتهاء من تنفيذ هذا الأمر فإن الشفرة تتابع بالسطر الذي يلي أمر الاستدعاء CALL 00401154 وليس بالسطر الذي يلي ذالك الأمر الذي تم تنفيذه.
CMP:
هذا الأمر يقوم بالمقارنة بين قيمتين وأحيانًا إجراء عملية حسابية بينهما. مثال CMP ebp, ebx: يقوم هذا الأمر بإجراء عملية حسابية بطرح ebx من ebp وتحديث العلامات Flags. هذا الأمر مهم جداً للكراكرز لأنه في شيفرات بعض البرامج يقوم هذا الأمر بمقارنة الرقم التسلسليSerial Number الذي أدخلناه مع الرقم التسلسلي الصحيح، أو التحقق من أن البرنامج مسجل أم لا وهكذا. وهذا الأمر غالباً ما يتبع بأمر من أوامر القفز JMP.
JMP:هذا الأمر يقوم بالقفز إلى عنوان محدد في الشفرة، وله ملحقات مثلJE وJNE ، وهو أمر مشابه لكلمة GOTO. مثال JMP 00602502: يقوم هذا الأمر بالقفز إلى السطر المحدد في الشفرة. ويسبق أمر القفز عادةً بأمر مقارنة CMP حيث تقارن قيمتان ثم ينفذ أمر القفز، مثال:
CMP stored serial, entered serial
JE correct serial
حيث تتم هنا مقارنة السيريال المدخل مع السيريال المحفوظ في شيفرة البرنامج (الصحيح)، وإذا كان السيريال المدخل مطابق للسيريال المحفوظ JE (jump if equal) فإن البرنامج سيخبرك بأن السيريال الذي أدخلته صحيح!
بعض لاحقات الامر JMP:
jne “jump if not equal: اقفز إن لم تكن القيمة المخزنة مسأوية للمدخلة.
je “jump if equal: اقفز إن كانت القيمة المخزنة مسأوية للمدخلة.
jmp “jump directly to: اقفز مباشرة إلى مكان معيّن.
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 not 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 “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: اقفز إن كانت القيمة المدخلة ليست أقل أو تساوي المخزنة.
nop “no operation: بدون عملية أو وظيفة،عندما تكون في سطر ما فلا تنفذ أي عملية عليه.
كان هذا الدرس الأول من "تعلم صنع الكراك" الذي أعده بنفسي، أنصحكم بقراءة الموضوع مرتان أو ثلاثة كي تفهموه جيداً وتحفظوا الأوامر والقوائم المهمة جداً في الكراكينغ فهي ليست صعبة جداً، وإن شاء الله في الدرس القادم سنتعلم كيف نكسر حماية برنامج ونصنع كراك له، لكن قد أتأخر حتى أنشر الدرس الثاني بسبب ضيق وقتي وبسبب اقتراب الفصل الثاني في المدرسة ولأنني أحتاج أن أراجع الموضوع كي أتاكد من دقة المعلومات والشرح.
كما أرجو من المراقبين الأعزاء تثبيت الموضوع لنشر الفائدة، وأنا بانتظار ردودكم وآرائكم، ولا تنسوا الدعاء لي!