في هذه المقالة سوف نشرح عن كيفية إلتقاط صورة لذاكرة تطبيق معين بإستخدام ميزة إالتقاط الصور لـ Android Studio’s heap . وسوف نستعرض أيضا EclipseMemoryAnalyzer(MAT) لتحليل صورة ال heap التي سوف نحصل عليها.

من الممكن إنشاء صور ال heap لل heap التابعة للتطبيق على الأندرويد. يمكننا أن نأخذ صورة لل heap وإستخدامها لتحليلات لاحقة بإستخدام أداة مثل EclipseMemoryAnalyzer .لكن هذه الصور تكون بالصيغة الثنائية اي Binary لكن لايمكن ان تحلل مباشرة بإستخدام أداة EclipseMemoryAnalyzer. نحتاج لتحويل هذه الملفات الى صيغة معيارية ليمكن تحليلها  بواسطة EclipseMemoryAnalyzer. يمكن القيام بذلك بإستخدام أداة تدعى hprof-conv التي تأتي مع Android SDK.

لنبدأ!

لنقم أولا بأخذ تطبيق هدف, نقم بتنصيبه على محاكي وإدخال بعض البيانات كما هو موضح.

051416_1149_AndroidHack1

هذ التطبيق يستخدم SharedPreferences لحفظ البيانات المدخلة من قبل المستخدم.

الأن نفتح Android Studio ونذهب الى Tools -> Android -> Android Device Monitor.

051416_1149_AndroidHack1

هذا سوف يفتح نافذة  Android Device Monitor . الأن نحدد على المحاكي حيث يعمل التطبيق المستهدف وبعدها نحدد الحزمة المستهدفة. الأن نضغط على أيقونات “Update Heap” و “Dump HPROF File” على التوالي.

051416_1149_AndroidHack1

بالضغط على أيقونة “Dump HPROF File” سوف تظهر نافذة تسألك حفظ صورة heap كما هو مبين

051416_1149_AndroidHack1

الأن, حمل أداة EclipseMemoryAnalyzer من الرابط التالي وقم بتشغيلها.

http://www.eclipse.org/mat/downloads.php
الأن, قم بفتح ملف hprof  الذي حصلنا عليه من Android Studio. أداة EclipseMemoryAnalyzer لن تكون قادرة على تحليله و سوف تظهر لنا خطأ كما هو موضح.

051416_1149_AndroidHack1

بإستخدام سطر الأوامر لأداة 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.

051416_1149_AndroidHack1

الأن, نضغط على أيقونة “Dominator tree” لرؤية الصورة, كما هو موضح.

051416_1149_AndroidHack1

كما ترى في الأعلى, لدينا خيار لتنفيذ بحث regex . يمكننا أن نبحث على كلمات محددة بإستخدام خيار البحث هذا.

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

051416_1149_AndroidHack1

كما ترى في الأسفل على اليسار, فإننا نرى بعض objects المتعلقوة بالتطبيق مثل bankname, cardnumber, save, username, الخ.

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

051416_1149_AndroidHack1

كما ترون فإننا نقوم بالبحث عن كلمة “srini.”.

051416_1149_AndroidHack1

الصورة في الأعلى أظهرت كلمة “srini.” في الذاكرة. هذه طريقة لإستكشاف معلومات مثيرة للإهتمام في ذاكرة التطبيق.

ترجمة مقال : Android Hacking: Dumping and Analyzing Application’s Memory لصاحبها Srinivas.