السلام عليكم من جديد ,
سنقوم بإنجاز باتش جديد وهده المرة للبرنامج Hex Workshop 4.1
نثبت البرنامج , كالعادة نزيد في الوقت ونجرب البرنامج حتى نتأكد بأن البرنامج لم يعد شغالا في هده الحالة يعطينا 3 خيرات , إما أن ندخل رقم التسجيل أو نشتري الرقم أو نغادر.نغادر ولنا معه عودة.
CTRL +D حتى تضهر نافدة سوفتايس ونضع نقطة التوقف التالية:
BPX CreateDialogIndirectParamA
F5 لتغيب النافدة ونعيد تشغيل البرنامج. لن أعيد التفاصيل التي أكون قد جئت بها في الكتابات الفائتة.
تظهر سوفتايس عند النقطة المختارة . F12 لنصل إلى BpsRegWd انظر اللون الأخضر. مرة أخرى F12 لتظهر لنا النافدة , ننقر Cancel ونضغط مرتين F12 حتى نصل إلى برنامجنا hworks32 حيث نجد شيئا كالتالي:
457B27 jz 457B31
[457B29 push dword [esp + 08
457B2D call eax
457B2F mov esi ,eax <-------------
هنا يمكن أن نقول أن call eax هو الدي يعطينا النافدة ونرى في 457B27 هناك jz 457B31 .يعني لو يتم القفز هنا فسوف لن نمر على call وربما نتجنب النافدة , لن نخسر شيئا دعنا نجرب. نضع نقطة توقف فوق jz , نضغط F5 ونعيد التشغيل.
نتوقف الآن عند هده النقطة ونغير EIP ليصبح 457B31 و F5 .
نرى أننا فعلا تجنبنا النافدة الأولى وكل النوافد لأن البرنامج لم يشتغل.
نعيد مرة أخرى وعندما نغير EIP=457B31 نضغط F12 مرات متتابعة ونحسب كم مرة ضغطنا حتى تغيب نافدة البرنامج من وراء نافدة سوفتايس.نلاحظ أنه في المرة الرابعة تغيب نافدة برنامجنا.
نعاود مرة أخرى من جديد مثل المرة السابقة إلا أن هده المرة نضغط 3 مرات فقط على F12 وتكون الحالة كالتالي:
4E2C61 test eax,eax
4E2C63 jnz 4E2C7A
4E2C65 mov ecx,[esi+1c]
4E2C68 test ecx,ecx
4E2C6A jz 4E2C71
4E2C6C mov eax,[ecx]
4E2C6E call [eax + 58]
هنا نشغل البرنامج خطوة خطوة بالضغط على F10 ونلاحظ متى تغيب نافدة البرنامج . نرى أنه حين نصل إلى 4E2C6E ونضغط F10 هنا تغيب هده النافدة , يمكن القول إدن أن call هو المسؤول عن دلك . كالعادة نرى هل بإمكاننا تجنب هدا call .نرى قبل هدا أن jz و jnz الفوق يمكنان دلك. لإختيار أي منهما , نجرب الإثنين. نضع نقطة توقف في 4E2C61 .نعيد التشغيل كالسابق حتى نصل إلى هده النقطة ,نتمشى ب F10 حتى نصل إلى 4E2C6A هنا نرغم البرنامج على القفز إلى 4E2C71 ودلك بتغيير EIP و F5 لكن لم ننجح في اختيارنا.
نعيد نفس الشيء مع 4E2C63 ونلاحظ هده المرة أن البرنامج اشتغل.
إدا أردنا أن نزيد شيئا من الدقة , فحين يقف البنامج في النقطة الأولى 457B27 ونبدل EIP نضغط على F12 لنصل إلى 41CDD5 وكالصابق قبله يوجد call النافدة وفي 41CDC6 هناك jnz 41CDEC الدي يبعدنا عن call وفي هده الحالة لن ندخل النافدة لا من قريب ولا من بعيد.
في الملخص يجب على البرنامج أن يقفز في الحالتين:
41CDC6 jnz 41CDEC وفي 4E2C63 jnz 4E2C7A .
من أجل الكراك يجب تبديل القفز الضرفي jnz بالقفز المطلق jmp .
لفعل دلك نفتح برنامجنا في برنامج الهيكس , ندهب إلى offset E2C63وكدلك offset 1CDC6 وفي كلتا الحالتين نبدل الرقم 75 ب EB ف 75 هو رمز jnz فيما EB هو رمز jmp .
أتمنى أن يزيدكم هدا إفادة وأنا في انتظار اقتراحاتكم وآرائكم.
إدا كان عندكم الإصدار V3.11 يمكنكم اتباع نفس الشيء لكن طبعا الأرقام ستكون مختلفة. فمثلا عوض الأرقام الأخيرة 1CDC6 و E2C63 تكون الأرقام التالية 14EC5 و 9A7EF .