بسم الله الرحمن الرحيم
اولا لماذا نقوم بعمل هندسة عكسية لتطبيقات الاندرويد ؟
هنالك هدفان لنقوم بهذه العملية :الهدف التخريبي :
- المخترقون يريدون الحصول على الكود المصدري ليسرقو فكره البرنامج و يقومو بتطوير تطبيق مشابه مع ميزات اقوى وهذه العمليه ستوفر عليهم الوقت الكثير ليكتشفو طريقه العمل بانفسهم .
- المخترقون يريدون سرقه الكود المصدري ليقومو باضافه كود خبيث اليه ثم يرفعوه الى المتجر باسم شبيه بالتطبيق المخترق .
الهدف الجيد :
- محللو التطبيقات الخبيثه يقومون بهذه العملية لفهم سلوك التطبيق الخبيث او التطبيق الذي يشتبه بقيامه بامور تخريبيه .
- المبرمجون يقومون بهذه العمليه لاختبار قوه التطبيق ضد الهندسة العكسية حتى يقومو بحمايتها .
ثانيا معلومات عن تطبيقات الاندرويد :
تطبيقات الاندرويد يتم بنائها باستخدام لغه الجافا .صيغه التطبيق هي .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