بعد فشلي في الحصول على مساعدة من شخصين من أعضاء هذا المنتدى (جدا محبط على فكرة) , اضطررت أخيراً إلى نشر نداء "استغاثة" للحصول على جزء من مساعدة أو حتى تلميحات لفهم كيف يمكن كسر ذلك البرنامج العنيد . . .
تجنباً لتجاوز قوانين هذا المنتدى فإنه لا توجد إشارة من قريب أو بعيد في موضوعي أو الفيديو أو الملفات المرفقة إلى اسم البرنامج أو الشركة المنتجة له
للحصول على تفاصيل البرنامج , بالامكان مراسلتي على الخاص
الفكرة باختصار أن ا لشركة المنتجة للبرنامج تطلب من المشترين أن يشغلوا برنامج معين في جهازهم ويضعون فيه البيانات التي أعطتها الشركة للمشتري وقت الشراء .
هذا البرنامج يقوم بقراءة السيريال نمبر حق جهاز ال PPC ويخزنه مع بعض المعلومات التي أدخلها المستخدم في ملف بصيغة مشفرة مع معلومات أخرى
بعد ذلك يقوم المشتري بإرسال الملف المحتوي على معلومات مشفرة إلى الشركة وتقوم الشركة بعد ذلك بإرسال نسخة كاملة من البرنامج إليه مع ملف مشفر ثان
هذا الملف يسمى Licence File (تجدون نسختان منهما لجهازين مختلفين أملكهما)
كل مرة يشتغل فيها البرنامج يقوم بالبحث عن هذا الملف , قراءته , مقارنة السيريال نمبر بالسيريال نمبر حق الجهاز اللي مثبت فيه البرنامج , وإذا كانا متشابهين , فإن البرنامج يعمل بصورة صحيحة , في كل الحالات الأخرى , لا يعمل البرنامج.
في البداية ظننت أنه يمكن ببساطة تجاوز الحماية بأحد هذه الطرق:
1- التغيير بالجزء الذي يعمل المقارنة بين السيريال نمبر حق الجهاز , والسيريال نمبر المخزن بالملف وجعل نتيجة المقارنة دائماً True
2- تجاوز الجزء الذي يستدعي قراءة الملف Licence File
فكرة كسر الحماية بسيطة جداً ولكنها في نظري صعبة التطبيق حيث أنني و إلى الآن لم أستطع تتبع الجزء الذي يعمل المقارنة , ولا حتى الجزء الذي يقوم بفك تشفير الملف.
بعض المشاكل التي واجهتني:
بعد البحث اكتشفت أن دالة kerneliocontrol أساسية للحصول على السيريال نمبر للجهاز
بعد تتبع عمل البرنامج عن طريق أدوات Embedded Visual C++ (كما هو ظاهر في ملف الفيديو المرفق بنهاية الموضوع) لاحظت أن البرنامج لا يصل لتلك الدالة بصورة مباشرة
بمعنى أني لم أستطع الوصول إلى الجزء من البرنامج الذي ينادي تلك الدالة
أيضا هناك أجزاء إن حاولت وضع Breakpoint عندها فإن ال eVC++ يعطي Exception ويتوقع عمبل الديبقر Debugger
سأرسل رابط يحتوي على ملف مضغوط يضم فيديو لخطوات الDebugging في 2 سيناريو:
Licenced:
بمعنى أن البرنامج مستخدم مع ملف Licence File يحتوي على سيريال نمبر الجهاز اللي مثبت عليه البرنامج (يعمل البرنامج في هذه الحالة)
Not Licenced:
الجهاز يحتوي على Licence File ولكن الملف لا يحتوي على السيريال نمبر حق الجهاز بل على سيريال نمبر لجهاز آخر (في هذه الحالة لا يعمل البرنامج)
أيضاً لمن لديهم برنامج IDA Pro فقد أدخلت معظم ملفات الDLL التي يحتاجها أي شخص للتعرف على أسماء الدوال المستخدمة بالبرنامج