مقال : تحليل ذاكرة التطبيقات في نظام الأندرويد
في هذه المقالة سوف نشرح عن كيفية إلتقاط صورة لذاكرة تطبيق معين بإستخدام ميزة إالتقاط الصور لـ Android Studio’s heap . وسوف نستعرض أيضا EclipseMemoryAnalyzer(MAT) لتحليل صورة ال heap التي سوف نحصل عليها.
من الممكن إنشاء صور ال heap لل heap التابعة للتطبيق على الأندرويد. يمكننا أن نأخذ صورة لل heap وإستخدامها لتحليلات لاحقة بإستخدام أداة مثل EclipseMemoryAnalyzer .لكن هذه الصور تكون بالصيغة الثنائية اي Binary لكن لايمكن ان تحلل مباشرة بإستخدام أداة EclipseMemoryAnalyzer. نحتاج لتحويل هذه الملفات الى صيغة معيارية ليمكن تحليلها بواسطة EclipseMemoryAnalyzer. يمكن القيام بذلك بإستخدام أداة تدعى hprof-conv التي تأتي مع Android SDK.
لنبدأ!
لنقم أولا بأخذ تطبيق هدف, نقم بتنصيبه على محاكي وإدخال بعض البيانات كما هو موضح.
هذ التطبيق يستخدم SharedPreferences لحفظ البيانات المدخلة من قبل المستخدم.
الأن نفتح Android Studio ونذهب الى Tools -> Android -> Android Device Monitor.
هذا سوف يفتح نافذة Android Device Monitor . الأن نحدد على المحاكي حيث يعمل التطبيق المستهدف وبعدها نحدد الحزمة المستهدفة. الأن نضغط على أيقونات “Update Heap” و “Dump HPROF File” على التوالي.
بالضغط على أيقونة “Dump HPROF File” سوف تظهر نافذة تسألك حفظ صورة heap كما هو مبين
الأن, حمل أداة EclipseMemoryAnalyzer من الرابط التالي وقم بتشغيلها.
http://www.eclipse.org/mat/downloads.php
الأن, قم بفتح ملف hprof الذي حصلنا عليه من Android Studio. أداة EclipseMemoryAnalyzer لن تكون قادرة على تحليله و سوف تظهر لنا خطأ كما هو موضح.
بإستخدام سطر الأوامر لأداة hprof-conv, يمكننا تحويل ملف hprof هذا الى صيغة معيارية يمكن تحليها بواسطة MAT.
كما وضحنا سابقا, أداة hprof-conv تأتي مع Android SDK, وتكون متاحة في مسار platform-tools.
يمكننا إستخدام الأمر التالي لتحويل ملف hprof الى صيغة معيارية.
$ hprof-conv <in file> <out file>
يلحقه الامر التالي وهو في حالتنا
$ hprof-conv com.example.m1_shared.hprof memory.hprof
واذا سار كل شئ بشكل صحيح, سوف يمكننا فتح هذا الملف بإستخدام MAT.
نفتح الملف في MAT.
الأن, نضغط على أيقونة “Dominator tree” لرؤية الصورة, كما هو موضح.
كما ترى في الأعلى, لدينا خيار لتنفيذ بحث regex . يمكننا أن نبحث على كلمات محددة بإستخدام خيار البحث هذا.
لنبدأ بالبحث بإستخدام إسم الحزمة للتطبيق المستهدف خاصتنا ورؤية اذا كنا قادرين على إيجاد اي شئ مثير للإهتمام.
كما ترى في الأسفل على اليسار, فإننا نرى بعض objects المتعلقوة بالتطبيق مثل bankname, cardnumber, save, username, الخ.
في بداية هذا المقال, قمنا بإدخال بعض التفاصيل الى التطبيق. لنرى اذا سنجد اي شئ بالذاكرة بالبحث عن الكلمات التي أدخلناها.
كما ترون فإننا نقوم بالبحث عن كلمة “srini.”.
الصورة في الأعلى أظهرت كلمة “srini.” في الذاكرة. هذه طريقة لإستكشاف معلومات مثيرة للإهتمام في ذاكرة التطبيق.
ترجمة مقال : Android Hacking: Dumping and Analyzing Application’s Memory لصاحبها Srinivas.