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

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