كسر برنامج iWisoft Flash - نسخة قابلة للطباعة +- الفريق العربي للهندسة العكسية (https://www.at4re.net/f) +-- قسم : منتديات الهندسة العكسية - Reverse Engineering Forums (https://www.at4re.net/f/forum-4.html) +--- قسم : الهندسة العكسية - Reverse Code Engineering (https://www.at4re.net/f/forum-19.html) +--- الموضوع : كسر برنامج iWisoft Flash (/thread-2154.html) |
كسر برنامج iWisoft Flash - Cyros - 15-10-2020 كسر برنامج iWisoft Flash SWF to Video Converter البرنامج يعمل على بيئة x32 البرنامج غير محمي لغة برمجته: C++ المنقح المستخدم : x64dbg رابط موقع البرنامج : http://flash-swf-converter.com لنقم بتشغيل البرنامج لنرى رسالة خطأ التسجيل عندما ندخل سيريال خاطئ نحمل البرنامج في المنقح نبحث عن رسالة الخطا سنراها عند العنوان 004391A8 وسنلاحظ في قسم التعليقات يخبرنا المنقح بانه هنالك قفزة تقفز اليها Jump from sub_439070+E1 وسنلاحظ قبل القفزة هنالك فحص قيمة AL اذا كان 0 فسيقفز وان لم يكن كذلك فلن يقفز وسينفذ رسالة التسجيل نجح اذا قمنا بعكس القفزة سنلاحظ انه يعطي رسالة السجل نجح ولكن لن يكون مسجل بالفعل بالنبة للدوال الاخرى التي تتحقق من تسجيل البرنامج لانها لا تستخدم هذه الدالة للتحقق حسنا لنقم بالدخول بالاستدعاء الذي قبل القفزة الذي يستدعي دالة التحقق من التسجيل نرى انه يتحق من قيمة AL ايضا ولا يوجد شيئ يؤثر في قيمة AL في هذه الدالة لذا لنجرب الدخول بالدالة التي تستدعيها هذه الدالة عند العنوان 004151AC نلاحظ اول تحقق ياتي في هذه الدالة هو طول السيريال 18 محول من hex الى نظام العد العشري نجد انها تساوي 24 اذا كان 24 حرف فسيقفز وان لم يكن كذلك فسينفذ التعليمات التي اسفل القفزة والتي سنرى ان هناك ايضا تحقق بعد هذا يقفز اليه اذا جربنا تتبع هذه التعليمات عند العنوان 00414A22سنراها ترجع قيمة AL = 0 حسنا الان اما ان نعيد كتابة سيريال ب 24 حرف او تغير نوع القفزة من jge الى jmp بالنزول قليلا سنلاحظ تعليمة فحص al ذا كان 0 ام لا نلاحظ انه يستدعي دالة قبل ذلك هذه الدالة تقوم بفحص اول حرفين ادخلناهم بالسيريال الحقيقي اذا كانو خطا فسترجع AL=0 في حال القفز سنرى تحقق يتلو التحقق السابق عند العنوان 00414AB5 هذا التحقق يتحقق من قيمة al اذا كان فيمة al = 0 فسيقفز وان لم يكن كذلك فسنرى انه سيقفز الى 00414A22 وهي نفسها االتعليمات التي ذكرتها سابقا ( تعليمات تؤدي الى ارجاع 0 ل AL) ايضا هنا لنقم بتغير نوع القفزة الى JMP عند العنوان 00414AB5 حسنا الان لنقم بالنزول للاسفل نرى انه هناك الكثير من القفزات لا داعي لاعطائها اهمية لانها لاتحتوي على قفزة لتلك التعليمات التي ترجع AL=0 اثناء نزولنا سنرى تعليمة مقارنة 00414D96 | 395424 38 | cmp dword ptr ss:[esp+38],edx | وسنرى قبلها استدعاء لدالة عند العنوان 00414D80 هذه الدالة لا داعي للتعمق فيها فهي تتحقق من السيريال الصحيح وتقارنه بالخطأ سنلاحظ القفزة بعد تعليمة المقارنة لن تؤخذ في حالتنا السيريال خطأ وسنلاحظ هذه القفزة الوحيدة التي تتخطى القفزة الاجبارية التي تقود الى ارجاع AL=0 لذا سنغيرها الى JMP بعد ان نقفز سنرى انه هناك ايضا تحقق ثاني وقفزة ونرى انه في حال عدم القفز سيقودنا لتلك التعليمات التي تجعل من البرنامج غير مسجل وفي حالتنا لن يقفز لذلك سنغيرها ل JMP ثم سنلاحظ انه ارجع قيمة AL>0 مما يعني ان اي دالة ستستدعي دالة التحقق سيرجع للدالة AL>0 مما يعني ان البرنامج سيكون مسجل بالنسبة لجميع الدوال . RE: كسر برنامج iWisoft Flash - PowerUser - 15-10-2020 السلام عليكم ورحمة الله وبركاته بارك الله فيك اخي الكريم من الافضل ان تجعل الشرح على شكل PDF وترفعه في المرفقات حتى لا يكون الموضوع مخالف لقوانين المنتدى الجديدة |