2018-04-06

حماية مصدر كود تطبيق الاندرويد من الهاكر

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

والصلاة والسلام على أشرف المرسلين

سيدنا محمد وعلى آله وصحبه أجمعين

خطأ شائع بين العديد من مطوري التطبيقات المبتدئين وهو نشر التطبيقات بدون تأمينها ، فقد يفاجأ المطور بإستخدام الهكر لمصادر أكواد تطبيقاته ويعدل عليها وينسبها لنفسه دون مراعاة أى حقوق ملكية ، يتم ذلك للأسف بسهولة بإستخدام تقنية الهندسة العكسية ، لذلك سأناقش معكم فى هذا الموضوع بعض النقاط:
  1. فكرة سريعة عن الهندسة العكسية
  2. كيف يستخدم الهاكر الهندسة العكسية لمعرفة مصدر كود تطبيقك؟
  3. ما هى الأدوات التى يمكن استخدامها لحماية تطبيقاتك ؟
حماية مصدر كود تطبيق الأندرويد

ما هى الهندسة العكسية Reverse Engineering ؟ 

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

مدى قانونية الهندسة العكسية:

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

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

منع الهاكر من الاختراق
بمقارنة الوقت والمجهود الذى قد تتخذه فى بناء وبرمجة تطبيق ، قد يأتى شخص آخر فى دقائق يسرق مجهودك وبإستخدام بعض الأدوات مثل Advanced ApkTool يقوم بتفكيك هذا التطبيق و التعديل عليه بأى محرر أكواد بتغيير الـ Package name الذى يميز التطبيق  أو إجراء أى تعديل عليه ، ونشره مرة أخرى .

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

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

 آلية عمل أداة ProGuard :

تقوم هذه الأداة بتغيير أسماء الـ Classes , methods وإستبدالها برموز غير مفهومة يصعب قراءتها ، ليس ذلك فقط ولكن هناك ميزة أخرى لهذه الأداة وهى  تقليل حجم التطبيق وذلك عن طريق حذف الأكواد الغير مستخدمة فى التطبيق.

كيفية إستخدام Proguard ببرنامج أندرويد ستوديو

  • توجه الى ملف build.gradle وقم بتغير قيمة minifyEnabled  الى  true
android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
    ...
}


build.gradle

  • إذا أردت اضافة ميزة تصغير حجم الكود ، قم بإضافة هذا السطر أيضا بعد minifyEnabled true

shrinkResources true
لاحظ فى الكود أعلاه ملف proguard-android.txt ، هذا الملف موجود فى SDK وهو المسئول عن التشفير وستجده فى هذا المسار :
tools/proguard/proguard-android-optimize.txt
  • إذا أردت منع تشفير Class معين داخل مشروعك يمكنك التعديل على ملف  proguard-android.txt و تقوم بإضافة هذا السطر:

-keep public class <myclass>
مع إستبدال myclass بإسم الكلاس الذى لا تريد تشفيره

أو يمكنك أيضًا إضافة بعض القواعد إلى  ملف proguard-rules.pro 
وذلك لتفادى مشكلة حذف الأكواد المهمة التى يحتاجها تطبيقك.

 -keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
 
-keep public class * extends android.view.View {
    public <init>(android.content.Context);
    public void set*(...);
}
 
-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}
  
فى النهاية:
 ليس هناك ما يعرف بالحماية الكاملة أى أنه من الصعب أن تؤمن التطبيق بنسبة  100% ، لكن هذه الطرق تصعب على الهكر عملية القرصنة ، وتحمى تطبيقك بنسبة كبيرة من السرقة.
مصادر : 1 , 2 , 3
تنبيه : المرجو عدم نسخ الموضوع بدون ذكر مصدره المرفق بالرابط المباشر للموضوع الأصلي وإسم المدونة وشكرا

هناك تعليق واحد

يمنع نشر التعليقات ذات الروابط الدعائية أو تعليقات بإسلوب غير لائق أو التى تحتوى على معلومات شخصية كالبريد الإلكترونى .
لتصلك إشعارات ردود هذا الموضوع على البريد الإلكترونى أضف علامة بالمربع بجوار كلمة "إعلامى"

Privacy-Policy | إعلن لدينا
جميع الحقوق محفوظة لــ كن داعيا للخير 2011-2017 ©

تصميم كن مدون