الجمعة، 21 أبريل 2017

الجمعة، 21 أبريل 2017

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

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


نظام الاندرويد من اكثر الانظمه المستخدمة حول العالم , فبينما تقرأ هذه المقالة اكثر من مليون مستخدم قاموا بتحميل تطبيقات الاندرويد . غالبية تطبيقات الاندرويد يتم تحميلها من المتجر الرسمي لشركه جوجل (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
جميع الحقوق محفوظة لــ One Pro 2019 ©