نظام الاندرويد من اكثر الانظمه المستخدمة حول العالم , فبينما تقرأ هذه المقالة اكثر من مليون مستخدم قاموا بتحميل تطبيقات الاندرويد . غالبية تطبيقات الاندرويد يتم تحميلها من المتجر الرسمي لشركه جوجل (google play ) لكن بعض المستخدمين يقومون باستخدام مصادر خارجية ليحصلو على التطبيقات المدفوعه مجانا , التي تشكل خطرا كبيرا على مستخدمي هذه التطبيقات لانها على الاغلب يتم تضمينها باضافات خبيثه تمكن المخترق من السيطره على جهاز الضحية .
اولا لماذا نقوم بعمل هندسة عكسية لتطبيقات الاندرويد ؟
هنالك هدفان لنقوم بهذه العملية :
الهدف التخريبي :
المخترقون يريدون الحصول على الكود المصدري ليسرقو فكره البرنامج و يقومو بتطوير تطبيق مشابه مع ميزات اقوى وهذه العمليه ستوفر عليهم الوقت الكثير ليكتشفو طريقه العمل بانفسهم .
المخترقون يريدون سرقه الكود المصدري ليقومو باضافه كود خبيث اليه ثم يرفعوه الى المتجر باسم شبيه بالتطبيق المخترق .
الهدف الجيد :
محللو التطبيقات الخبيثه يقومون بهذه العملية لفهم سلوك التطبيق الخبيث او التطبيق الذي يشتبه بقيامه بامور تخريبيه .
المبرمجون يقومون بهذه العمليه لاختبار قوه التطبيق ضد الهندسة العكسية حتى يقومو بحمايتها .
ثانيا معلومات عن تطبيقات الاندرويد :
تطبيقات الاندرويد يتم بنائها باستخدام لغه الجافا .
صيغه التطبيق هي .APK وهي احدى الصيغ شبيهة التركيب بال JAR المعروف ( صيغه الكود المترجم للجافا مضغوط مع جميع الملفات اللازمه لتشغيل البرنامج ) .
ال APK يحوي غالبا هذه المجلدات :
META-INF
RES
مع مجموعه من الملفات منها :
AndroidManifest.xml classes.dex resources.arsc
اهم ملفين نريد التركيز عليهما هما AndroidManifest.xml و ملف classes.dex
ملف classes.dex يحوي على الكود المترجم (dalvik bytecode ) الذي سنقوم بعمل هندسه عكسيه له واستخراج الكود وايضا استخراج كود التشغيل على مستوى الاله .smali
ملف AndroidManifest.xml يحوي على الpackage التي سيستخدمها التطبيق والصلاحيات التي سيطلبها التطبيق و اقل نسخه لنظام الاندرويد اللازمه لعمل التطبيق ويحوي جميع المكاتب التي تم وصل التطبيق معها .
ثالثا كيف سنقوم بعمل هندسة عكسيه لتطبيقات الاندرويد ؟
الطريقة الاولى هي اخذ الكود المصدري بلغه الجافا لكن ستحتاج لبناء التطبيق عن طريق استخدام احد IDE مثل eclipse
حسنات هذه الطريقه : ستحصل على الكود المصدري
سيئات هذه الطريقه : ستحتاج الى الكثير من العمل لبناء التطبيق لانك ساتخذ الكود المصدري وتحاول اعاده بنائه من الصفر الا اذا كنت تريد اجزاء منه .
الطريقه الثانيه هي عكس ترجمه ملف .dex الى ملفات .smali التي يمكنك من خلالها التعديل المباشر على التطبيق بدون استخدام IDE
حسنات هذه الطريقه : يمكنك عكس ترجمة الكود ثم ترجمته عن طريق جمله واحده في سطر الاوامر
سيئات هذه الطريقه : يجب ان تكون على علم بملفات .smali التي هي عباره عن لغه الاسمبلي الخاصه بالاندرويد .
البرامج التي سوف نستخدمها في الشرح التوضيحي :
Dex2jar هذه الاده تقوم بعكس ترجمه تطبيق الاندرويد و تحويله من .apk الى .jar . يمكنك تحمليه من هنا : dex2jar
java decomplier هذه الاداه تقوم بتحويل ال.jar الى .java حتى تستطيع الحصول على الكود المصدري للبرنامج . يمكنك تحميله من هنا : Java Decompiler
APKTool : هذه الاداه تقوم بعمل عكس ترجمه للتطبيق لتنتج كود .smali و تستخرج مكونات التطبيق من صور وغيرها . يمكنك تحميله من هنا : APKTool
JavaSign : هذه الاداه تقوم بختم التطبيق الذي تم اعاده ترجمته حتى يعمل على نظام الاندرويد . يمكنك تحميله من هنا :Javasign
Genymotion : هذا البرنامج يقوم بعمل انظمه اندرويد وهميه حتى تستطيع تجربه التطبيقات عليها . يمكنك تحميله من هنا : GenyMotion