عمل هندسة عكسيه لتطبيقات الاندرويد

بسم الله الرحمن الرحيم

نظام الاندرويد من اكثر الانظمه المستخدمة حول العالم , فبينما تقرأ هذه المقالة اكثر من مليون مستخدم قاموا بتحميل تطبيقات الاندرويد . غالبية تطبيقات الاندرويد يتم تحميلها من المتجر الرسمي لشركه جوجل (google play ) لكن بعض المستخدمين يقومون باستخدام مصادر خارجية ليحصلو على التطبيقات المدفوعه مجانا , التي تشكل خطرا كبيرا على مستخدمي هذه التطبيقات لانها على الاغلب يتم تضمينها باضافات خبيثه تمكن المخترق من السيطره على جهاز الضحية .

 

اولا لماذا نقوم بعمل هندسة عكسية لتطبيقات الاندرويد ؟

هنالك هدفان لنقوم بهذه العملية :

الهدف التخريبي :

  1. المخترقون يريدون الحصول على الكود المصدري ليسرقو فكره البرنامج و يقومو بتطوير تطبيق مشابه مع ميزات اقوى وهذه العمليه ستوفر عليهم الوقت الكثير ليكتشفو طريقه العمل بانفسهم .
  2. المخترقون يريدون سرقه الكود المصدري ليقومو باضافه كود خبيث اليه ثم يرفعوه الى المتجر باسم شبيه بالتطبيق المخترق .

 

الهدف الجيد :

  1. محللو التطبيقات الخبيثه يقومون بهذه العملية لفهم سلوك التطبيق الخبيث او التطبيق الذي يشتبه بقيامه بامور تخريبيه .
  2. المبرمجون يقومون بهذه العمليه لاختبار قوه التطبيق ضد الهندسة العكسية حتى يقومو بحمايتها .

 

ثانيا معلومات عن تطبيقات الاندرويد :

تطبيقات الاندرويد يتم بنائها باستخدام لغه الجافا .

صيغه التطبيق هي .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 التي هي عباره عن لغه الاسمبلي الخاصه بالاندرويد .

 

البرامج التي سوف نستخدمها في الشرح التوضيحي :

  1. Dex2jar هذه الاده تقوم بعكس ترجمه تطبيق الاندرويد و تحويله من .apk الى .jar .   يمكنك تحمليه من هنا : dex2jar
  2. java decomplier هذه الاداه تقوم بتحويل ال.jar الى .java  حتى تستطيع الحصول على الكود المصدري للبرنامج .  يمكنك تحميله من هنا : Java Decompiler
  3. APKTool : هذه الاداه تقوم بعمل عكس ترجمه للتطبيق لتنتج كود .smali و تستخرج مكونات التطبيق من صور وغيرها .  يمكنك تحميله من هنا : APKTool
  4. JavaSign : هذه الاداه تقوم بختم التطبيق الذي تم اعاده ترجمته حتى يعمل على نظام الاندرويد . يمكنك تحميله من هنا : Javasign
  5. Genymotion : هذا البرنامج يقوم بعمل انظمه اندرويد وهميه حتى تستطيع تجربه التطبيقات عليها . يمكنك تحميله من هنا : GenyMotion

 

الان اترككم مع الشرح التوضيحي :

[youtube https://www.youtube.com/watch?v=tpva5TzTCSU]