الهندسة العكسية على تطبيقات apk للاندرويد - Reverse Engineering

نوراليقين
اشتهر الريسكين كثيرا في المجتمع العربي مؤخرا باعتباره اسهل طريقة لانتاج تطبيقات اندرويد والربح منها، حيث يعتمد فقط على التعديل على اكواد مصدرية Code Source يتم شراؤها او الحصول عليها مجانا، وقد تحدثنا في مقالات سابقة عن الريسكين ومتطلبات بدأ العمل على إنشاء التطبيقات، إلا أن الحديث أصبح يروج اكثر عن الهندسة العكسية او  تعديل تطبيقات الاندرويد و انشاء تطبيق خاص من ملف apk ذاته دون الحصول على الكود المصدري، وهذا هو مقال اليوم حيث سنتعرف عن الهندسة العكسية تطبيقات apk وشرح استعمال advanced apktool والادوات الاخرى التي تستعمل في تفكيك تطبيقات الاندرويد، التعديل عليها وإعادة جمعها.

الهندسة العكسية على تطبيقات apk للاندرويد - Reverse Engineering

لست من اصحاب الدورات او عرض التفاصيل الكثيرة حول المواضيع التي يحتاج الشباب العربي تعلمها، لكني وفي مقال واحد اقدم لكم كل ما تحتاجونه لبدء العمل دون الحاجة الى آلاف الفيديوهات والدورات والتي يمكنك اللجوء إليها بعد كسب بعض المال، لدى في هذا المقال أيضا أقدم لكم الدرس الشامل عن الهندسة العكسية لتطبيقات أندرويد عبر برنامج Advanced apktool

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

في الأصل، نعلم جميعا ان برمجة التطبيقات تتم عبر كتابة اكواد، تصميم صور وجمعها لتصدير ملف قابل للتثبيت سواء كان بصيغة apk لهواتف اندرويد، او exe لنظام ويندوز... وهي العملية الاصلية لانتاج التطبيقات والألعاب.

لماذا الهندسة العكسية
من اسم الهندسة العكسية نستنتج اننا نقوم بالعكس، حيث نبدأ من حيث توقف الآخرون، اي من الملف الناتج والذي هو ملف apk بالنسبة لتطبيقات أندرويد، نقوم بتفكيكه والتعديل على بعض البيانات مثل الاسم والصور وكل ما نريد تعديله ثم نقوم بتجميعه مرة أخرى الى ملف مضغوط APK، وتدخل العملية في صنف الاختراق والحماية علميا.

لماذا الهندسة العكسية على برامج أندرويد؟

كي نتجنب النقد من طرف اصحاب التطبيقات الاصلية، ولكي نضمن انحياد مسؤوليتنا عن كل عمل غير لائق وغير قانوني، نريد ان نوضح ان هناك هدفان اساسيان للهندسة العكسية، ونحن نقدم هذا الدرس كدرس تعليمي لا غير، وكل من استغله في أمور أخرى ليتحمل كامل مسؤوليته D:

على أي، يمكن التعديل على الكود المصدري أما لسرقة فكرة التطبيق واستغلال مجهودات الآخرين لانشاء تطبيق بسهولة ورفعه على المتجر للربح منه، كما يمكن استغلال العملية للكشف عن الثغرات في التطبيقات والابلاغ عنها او الكشف عن اهداف التطبيقات الخبيثة والحد منها، او كاختبار لمدى قوة التطبيق ضد الهندسة العكسية.

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

كما هو الحال مع الريسكين والذي يحتاج برنامج Android Studio او  Eclipse، الهندسة العكسية أيضا تحتاج الى برامج خاصة يعتمد عليها، وهذه قائمة كل المتطلبات:
  • كمبيوتر بنظام ويندوز، ماك او لينكس (يفضل استعمال لينكس لتوفره على كل الأدوات افتراضيا وهو الافضل في كل مجالات الاختراق)
  • برنامج apktool: وهو البرنامج الذي يمكنك من تفكيك وجمع ملف apk المضغوط (يمكن استعمال advanced apktool وهو اسهل نوعا ما).
  • برنامج Replace Text: يقوم بالبحث في جميع الملفات لمجلد معين وتغير كلمة معينة في جميع الملفات إلى كلمة أخرى، يستعمل في تغيير package name او كود Admob (يمكن استعمال notepad++ لهذا الغرض)
  • محرر نصوص، يمكن استعمال notepad او notepad++ او اي برنامج لتعديل النصوص البرمجية.
  • محرر صور: يمكن التعديل على الصور الخاصة بالتطبيق، لذا فانت بحاجة الى الفوتوشوب او احد البرامج المماثلة.
  • برنامج apk signer: لعمل توقيع وشهادة لملف apk النهائي حتى نتمكن من رفعه على المتجر.
يمكنك ايضا عمل الهندسة العكسية على تطبيقات أندرويد apk من خلال هواتف اندرويد نفسها، وهو موضوع سنتحدث عنه لاحقا ان كان له اهتمام.

خطوات الهندسة العكسية على تطبيقات apk بالترتيب:

1. الحصول على التطبيق الخاص بك:

الخطوة الأولى في الهندسة العكسية هي الحصول على ملف apk للتطبيق الذي تريد عمل الهندسة عليه، وهو مجرد ملف مضغوط مثل ملفات ZIP، ويمكنك الحصول عليه بالعديد من الطرق والتي منها:
1. يمكنك بعد تثبيته على هاتفك من المتجر ان تقوم باستخدام مدير الملفات مثل أسترو Astro file manager او Astro file manager لحفظ نسخة احتياطية من التطبيق على شكل apk الى بطاقة الذاكرة الخارجية وبعدها نقله الى الكمبيوتر.
2. يمكنك أيضا ربط الهاتف بالحاسوب باستعمال اوامر ADB (Android Debug Bridge) عبر الأمرين:

 adb shell pm list packages
adb pull /data/app/package-name.apk
حيث يقوم الأمر الأول بعرض التطبيقات المثبتة على الهاتف، بينما يقوم الثاني باستخراج ملف apk للتطبيق، حيث package-name هو اسم حزمة التطبيق كاملة
3. يمكنك استعمال بعض المواقع التي تقوم بتحميل ملفات apk مباشرة من رابط التطبيق على المتجر، وهي الطريقة الاسهل للمبتدئين، ومن المواقع المتخصصة في هذا المجال، يمكنك تجربية:

2. تفكيك ملف apk او Disassembling:

تسمى العملية ب Disassembling وهي تعني تفكيك ملف apk الى الملفات المخزنة داخله حتى يتسنى لنا التعديل عليه، و للإشارة، صيغة كل تطبيقات اندرودي هي .APK وهي احدى الصيغ شبيهة التركيب بال JAR التي عرفناها مع هواتف Symbian قديما وهي صيغة الكود المترجم للجافا مضغوط مع جميع الملفات اللازمة لتشغيل البرنامج، ويمكن فتح ملفات ال apk عبر اي برنامج ضغط/فك ضغط الملفات مثل Winrar او 7zip.

لكن هنا نستعمل اشهر برنامج لهذا الغرض وهو apktool، ويمكنك تحميله حسب نظام التشغيل لديك متبعا طريقة التثبيت المشروحة في هذا الرابط: https://ibotpeaches.github.io/Apktool/install

يمكنك التأكد من أن البرنامج يعمل جيدا وقد تم تثبيته بنجاح، بكتابة الأمر التالي في سطر الاوامر cmd، وهو الامر الذي يطبع لك اصدار البرنامج المثبت، فان ظهر الاصدار يعني ان البرنامج مثبت بنجاح.
apktool -version
تفكيك ملف apk او Disassembling
بعد التأكد من عمل البرنامج، كل ما عليك فعله هو وضع ملف apk الذي تريد عمل الهندسة العكسية عليه في مجلد جديد يفضل ان يكون فارغا، ثم الدخول على هذا المجلد عبر سطر الأوامر cmd، يمكنك الدخول الى المجلد باتباع أحد الطرق التالية (في المثال التالي، اسم المجلد هو arabphones):
1. كتابة الامر cd متبوع بـ مسار المجلد (لجميع الأنظمة).
2. كتابة امر cd ثم سحب المجلد إلى واجهة cmd ويتم كتابة المسار آليا (جميع الانظمة).
تفكيك ملف apk او Disassembling
3. الدخول الى المجلد وكتابة كلمة cmd في خانة المسار في الأعلى (ويندوز).
4. الضغط المطول على زر Shift ثم الضغط على زر الفأرة الايمن واختيار "فتح نافذة سطر الأوامر هنا" او Open Command Window here (ويندوز).

تفكيك ملف apk او Disassembling

بعد الدخول الى مجلد العمل والذي يحتوي على ملف apk هذا، مباشرة نكتب امر التفكيك التالي:
apktool d arabphones.apk
تفكيك ملف apk او Disassembling
  • حيث ان arabphones.apk هو اسم التطبيق.
يتم التفكيك مباشرة إلى مجلد جديد يحمل اسم التطبيق، للحصول على المجلدات والملفات التالية:

apk للاندرويد - Reverse Engineering

وللمزيد من التفاصيل عن هذه الملفات، اطلع على الجدول التالي:

apktool d name.apk
بعد الحصول على هذه الملفات، نكون قد انتهينا من التفكيك لننتقل الى مرحلة التعديل، حيث نقوم بالتعديل على الملفات والصور التي تريدها.

3. التعديل على ملفات الكود:

وصلنا الآن الى ما نريده، وهو التعديل على التطبيق، إلا ان التعديل هنا صعب قليلا مقارنة مع التعديل في منصات البرمجة الأخرى مثل android studio و  Eclipse، حيث اننا هنا نستعمل فقط محرر النصوص للتعديل على ملفات الاكواد، بالاضافة الى تعديل الصور من داخل المجلدات.

لن نكثر الحديث هنا، لأن الامر يعتمد على طريقة التعديل وما يريد كل فرد تعديله، لكننا نقدم لكن هذه النقاط الهامة والتي يمكنك الاستفادة منها كثيرا لتعديل التطبيق وعمل هندسة عكسية صحيحة:
  • تعديل اسم الحزمة package name: من اهم ما يلزمنا تعديله هو اسم الحزمة او باكيج نام، ولتغييره، افتح ملف AndroidManifest.xml والذي ستجد به اسم الحزم بعد كلمة package="، قم بنسخ اسم الحزمة هذا (يكون على شكل ثلاث كلمات مفصولة بنقاط مثل net.arabphones.app) استعمل برنامج NotePad++ او replace text للبحث في كامل المجلد عن هذا الاسم وقم بتغييره في كل الملفات.
  • التعديل على الصور: يمكنك التعديل على الصور بالدخول الى مجدل res والذي يضم العديد من المجلدات التي تبدأ اسماؤها ب drawable، وهي المسؤلة عن الصور المستعملة في التطبيق، وكل مجلد منها يضم صور محددة حسب الشاشات، يعني ان كل مجلد من مجلدات drawable يضم نفص الصور بأحجام مختلفة، يجب عليك التعديل عليها في كل المجلدات لكن دون تغيير في حجم الصورة.
  • التعديل على المتغيرات: في نفس مجلد res تجد العديد من ملفات المتغيرات داخل مجلد values او يمكن ان تجد العديد من مجلدات values-xx حيث ان xx  يدل على اللغة، وفي هذه الحالة عليك التغيير في كل المجلدات اذا كنت تريد تغيير المتغيرات، نقصد بالمتغيرات كل الكلمات والأزرار التي تظهر في التطبيق، مثلا اذا كان التطبيق عندما يفتح يكتب مباشرة "اهلا بك في تطبيق عرب فون" ستجد هذه الجملة على شكل متغير يمكنك تغييرها الى "اهلا بك في تطبيقنا الجديد"، ومن جهة اخرى في ملفات اللغات المختلفة مثلا بالانجليزية ستجد Welcome to Arabphones App، يجب ان تغيرها ايضا، والا ان تطبيقك سيعرض اسم arabphones على الهواتف التي لغتها هي الانجليزية.
  • التعديد على Admob: قد يكون هذا اهم امر لدى البعض، على اي، للتعديل على كود admob استعمل نفس الطريقة مع package nam، اي البحث في مجلد التطبيق ككل باستعمال خيار البحث في برنامج NotePad++ او عبر برنامج  replace text الذي يبحث في جميع الملفات النصية عن كلمة معينة، ابحث عن ca-app-pub حيث ان هذا الرمز يسبق اي كود ادموب، وبالتالي ستجد جميع اكواد ادموب التي تستطيع التعديل عليها مباشرة.
  • التعديل على اكواد الجافا: ليس الامر سهلا بالنسبة للتعديل على اكواد الجافا، حيث يجب عليك فك تشفير ملف Classes.dex عبر اداة Dex2jar ثم التعديل على الملفات الناتجة عبر احد الادوات الاخرى مثل JD-GUI، لن ندخل في الكثير من هذه التفاصل، وربما نظع لها موضوع منفصل على موقعنا عرب فون هنا.
مثال لمجلد rex الذي يضم الصور والمتغيرات.

4. جمع ملف apk او Assemble:

الآن وصلنا الى النهاية تقريبا، وهنا نقوم بجمع الملفات ككل الى ملف apk واحد يمكن تثبيته على اندرويد، فعلى عكس ما قمنا به في الرحلة السابقة Disassembling وهي العملية التي يتم عبرها تفكيك التطبيق، بعد ان قمنا بالتعديل عليه، يمكننا اعادة جمع تطبيقنا الجديد عبر الأمر التالي:


apktool b arabphones
  • حيث arabphones هو اسم المجلة الذي يضم جميع الملفات
الى هنا وصلنا الى انتاج ملف apk، والذي يمكنك تثبيته على هاتفك اختباره والتأكد من أن كل التعديلات تمت بنجاح، او ان التطبيق مازال في حاجة الى تعديلات اخرى، فمن الافضل التأكد هنا قبل المرور الى المرحلة النهائية.

توقيع ملف  apk او عملية Sign:

الى حدود المرحلة السابقة، فقد حصلنا على ملف apk جاهز للاستعمال، لكننا لن نكون قادرين على رفعه على متجر التطبيقات الرسمي Google Play، باعتبار ان جوجل تطلب ملف apk يحمل شهادة تم توقيعها لأسباب امنية، لدى علينا انشاء شهادة خاصة بالتطبيق والتوقيع عليه.

لعمل Sign على ملف apk الخاص بنا، يمكننا استعمال برنامج apk signer الذي ذكرناه في المتطلبات اعلاه، كما يمكن استعمال أوامر فقط لهذه العملية الا انها اكثر تعقيدا.

قم بفتح برنامج apk signer على الكمبيوتر، وقم بانشاء شهادة خاصة بك وحفظها في أحد المجلدات عبر خيار key generator.


بعدها من البرنامج نفسه اضغط زر signer لدمج الشهادة في ملف apk، فقط اختر ملف الشهادة وملف apk ثم اضغط على زر  Sign ليتم دمج الشهادة/ ستلاحظ ان التطبيق قد تمت إعادة تسميته إلى اسم مثل Signed...وهو الملف الذي يمكنك رفعه على جوجل بلاي.


الى هذا نكون قد وصلنا الى نهاية هذا المقال حول الهندسة العكسية لتطبيقات apk الخاصة بهواتف اندرويد، وقد تحدثنا في كامل المقال عن كيفية تحميل ملفات apk لأي تطبيق، تفكيك ملفات apk ، ثم التعديل على الصور و الملفات التي نريد تغييرها وتعديل اسم الحزمة و admob، بعد ذلك قمنا بجمع الملفات الى ملف apk واضافة الإمضاء الخاص اله حتى يتسنى لنا رفعه على جوجل بلاي، وبهذا قمنا بانشاء تطبيق جديد يحمل المعلومات الجديدة كليا.

في حالة واجهتك اية مشاكل في اتباع الشرح، او كان لديك اي سؤال او استفسار او حتى ملاحظة او ابلاغ عن خطأ في الشرح، لا تتردد في مراسلتنا او كتابة تعليق اسفل المقال ليبقى هذا الشرح محدثا طوال الوقت، كما نطلب منك مشاركة هذا الموضوع مع اي صديق لك تظن انه يمكن ان يستفيد منه، ومرحبا بك في صفحتنا عرب فون على الفيسبوك.
google-playkhamsatmostaqltradent