برنامج لتغيير apk. أساسيات تحرير تطبيقات نظام أندرويد (apk). ترتيب حزم APK واستلامها

APK هو تنسيق يستخدم في نظام التشغيل Android لملفات التطبيقات القابلة للتنفيذ المؤرشفة. التناظرية، على سبيل المثال، في Windows هي .msi، في Symbian - .sis، في Linux - .rpm أو .deb. في هذه المقالة سوف نفهم بأكبر قدر ممكن من التفاصيل جميع المشكلات المتعلقة بتنسيق الملف هذا.

تسمى عملية التفكيك والتحرير والتجميع "بشكل صحيح" بالهندسة العكسية. ما هو المطلوب لهذا؟ الأدوات التالية مطلوبة:

Apktool. إنه أكثر ملاءمة للاستخدام مع SmartApktool Shell، ويمكنك أيضًا استخدام الملفات الدفعية الجاهزة، على سبيل المثال ApktoolBAT.

برنامج Notepad++ - غير مطلوب، ولكن يوصى به بشدة.

7zip أو WinRar أو أي برنامج أرشيفي آخر، ولكن يوصى بأحد هذه البرامج.

البرامج الثابتة Deodexed.

هناك عدة طرق لتثبيت التطبيقات على نظام التشغيل Android. الأول، وهو أيضًا الرئيسي، يمر مباشرة من خلال تطبيقات جوجل(Android Market) أي من مصدر رسمي ويتطلب حساب جوجل. يتم دفع العديد من التطبيقات، إذا كنت لا ترغب في البحث عن نسخة مخترقة على المواقع المقرصنة، فسيتعين عليك دفع ثمن الشراء. لكننا سنتحدث عن كيفية القيام بذلك. والثاني هو من مصادر غير رسمية بخلاف Google Play، حيث سيتعين عليك تمكين خيار "السماح بتثبيت التطبيقات من مصادر غير رسمية" في إعدادات هاتفك الذكي أو جهازك اللوحي، وبعد ذلك يجب كتابة ملف تثبيت APK على الذاكرة بطاقة.

من الممكن أيضًا تثبيت تطبيقات APK بكميات كبيرة. للقيام بذلك، ستحتاج إلى Astro File Manager - مدير ملفات خاص. بعد تثبيته قم بنقل التطبيقات:

من الهاتف الذكي/الكمبيوتر اللوحي: في com.mntsdcardackupsapp(بمعنى آخر، بطاقة الذاكرة، ثم مجلد النسخ الاحتياطية، ومجلد التطبيق)

من جهاز كمبيوتر شخصي (لا تنس تمكين اتصال جهاز Android في وضع محرك أقراص USB البسيط): بطاقة الذاكرةالنسخ الاحتياطيةبرنامج

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

من السهل جدًا معرفة بنية ملف APK. افتح ملف APK المطلوب باستخدام برنامج أرشيفي، على سبيل المثال، WinRar. وهنا ما نراه في الداخل:

AndroidManifest.xmlهو نوع من “جواز السفر” الذي يصف ما هو موجود في التطبيق، بما في ذلك: متطلبات النظامللتطبيق وبنيته وإصداره.

ميتا-INF– المجلد الذي يحتوي على الملف البيان.MF(يمكن فتحه بواسطة أي شخص تقريبًا محرر النص، يوصى باستخدام Notepad ++) ، حيث يمكنك فتح المجموع الاختباري SHA-1 ومسارات البيانات، وإصدار Manifest-Version القياسي، أو ملفات شهادات RSA أو DSA، ويحتوي ملف SF على مسارات إلى موارد مختلفة ومجاميعها الاختبارية. بشكل عام، META-INF عبارة عن ملفات بيانات وصفية، أي بيانات حول البيانات.

الدقة- مجلد يحتوي على جميع موارد "حشو البرامج"، مرتبة في مجلدات فرعية. على سبيل المثال، يوجد في المجلد ~drawable~ عناصر رسومية للتطبيقات (حالات وأيقونات مختلفة وما إلى ذلك)، وفي دليل التخطيط توجد ملفات XML تشير إلى موضع العناصر الرسومية واجهة المستخدم(واجهة المستخدم الرسومية).

classs.dex- كود البرنامج الذي يتم تنفيذه بواسطة الجهاز الظاهري Dalvik VM. دعونا نتذكر أن نظام التشغيل Android عبارة عن مزيج من Linux kernel وجهاز Java الظاهري.

الموارد.arsc– ملف XML المترجم. أنه يحتوي على بيانات حول جميع الموارد التي يستخدمها البرنامج.

أصول- مجلد يحتوي أيضًا على موارد متنوعة، وقد لا يكون موجودًا في APK على الإطلاق.

ليب- مجلد يحتوي على "libs" أو، ببساطة، المكتبات الأصلية، إذا كان البرنامج مكتوبًا باستخدام NDK، على سبيل المثال مع العناصر عند C++. قد لا يكون هذا الدليل موجودًا في APK.

com- قد لا يكون موجودًا في APK.

ORG- قد لا يكون موجودًا في APK.

udk- قد لا يكون موجودًا في APK.

لقد تعاملنا مع محتويات تطبيق APK، والآن دعنا ننتقل إلى تفكيكه التفصيلي. لفك التجميع، ستحتاج إلى Apktool وJava، بالإضافة إلى ملف APK نفسه. يوصى بتفكيك Apktool في الدليل ج:شبابيك(هذا ليس ضروريا، لكنه سيكون أكثر ملاءمة. لماذا – اقرأ أدناه قليلا).

لتشغيل Apktool، تحتاج إلى الدخول إلى قائمة "تشغيل" بجهاز الكمبيوتر الخاص بك. في نظام التشغيل Windows XP، انقر فوق ابدأ -> تشغيل، في نظام التشغيل Windows 7: مدير المهام ( السيطرة +البديل+ديل)، في الجزء العلوي من القائمة المنسدلة ملف -> مهمة جديدة (تشغيل...)، أو ببساطة اتصل به باستخدام اختصار لوحة المفاتيح فوز+ر.

الاتصال سطر الأوامر- نحن نكتب كمدوبعد ذلك نطلق Apktool - اكتب apktool(ولهذا الغرض كان من الضروري وضعه فيه مجلد ويندوز). علاوة على ذلك، تتم كل عمليات التحكم من خلال سطر الأوامر باستخدام المعلمات.

إذا كنت لا تريد أن تهتم بإدخال الأوامر النصية باستمرار، فيمكنك استخدامها واجهة المستخدم الرسومية– على سبيل المثال SmartApkTool المذكورة. قم بتشغيل SmartApkTool.exe، ثم حدد تطبيق APK المطلوب في علامة التبويب Unpack/Pack (من المهم ألا يحتوي اسم الملف على مسافات أو سيريلية أو أحرف خاصة وعلامات ترقيم).

بعد التفريغ، سيقوم البرنامج بإنشاء مجلد بنفس اسم ملف APK. بداخله سيكون جميع محتويات التطبيق.

يمكن أيضًا ترجمة APK. قبل أن نبدأ في القيام بذلك، نقوم بتشغيل برنامج Notepad++ المثبت مسبقًا ونقوم بتكوينه على النحو التالي. افتتاح الإعدادات -> التكوين -> مستند جديد.

بعد هذه الخطوات، افتح مجلد التطبيق الذي تم فك حزمه (المفكك). الدقة/قيم.

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

الآن يمكنك فتح سلاسل.xmlباستخدام برنامج Notepad++، قم بإجراء الترجمة وحفظ الملف الذي تم تغييره.

في الملف AndroidManifest.xmlيمكنك تحديد مكان تثبيت تطبيقات APK. انتبه، هذا ينطبق فقط على الإصدار 2.2 من Android والإصدارات الأحدث. لذا، افتح الملف المحدد باستخدام برنامج Notepad++. في البداية تقريبًا يمكنك رؤية المعلمة:

هنا يمكنك تحديد الخيارات التالية (بعد الرمز "="):

الداخلية فقط– سيتم تثبيت التطبيق فقط الذاكرة الداخليةالأجهزة

آلي– يوفر للمستخدم خيار تثبيت التطبيق على الذاكرة الداخلية أو على بطاقة الذاكرة

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

خدمات- أي الخدمات

خدمات الإنذار- الخدمات التي تستخدم الوقت، مثل المنبهات

محركات أسلوب الإدخال- تطبيقات الإدخال، بما في ذلك لوحات المفاتيح المختلفة

خلفيات حية- خلفية متحركة "حية".

يعيشالمجلدات- على التوالي، الدلائل المتحركة

برنامجالحاجيات- "الحاجيات" المختلفة

حسابالمديرين- مدراء الحسابات المختلفة، بما في ذلك عملاء ICQ وعملاء الشبكات الاجتماعيةوما إلى ذلك وهلم جرا

محولات المزامنة- البرامج التي تتطلب مزامنة مستمرة

جهازالمسؤولين– التطبيقات المستخدمة للإدارة

حماية النسخ- التطبيقات المحمية من النسخ.

في التطبيق، يمكنك تحرير واستبدال الرموز والعناصر الرسومية المختلفة لواجهة المستخدم برموزك الخاصة. للقيام بذلك، افتح المجلد الدقةفي المجلد الذي يحتوي على تطبيق APK الذي تم فك ترجمته، هنا يمكنك رؤية المجلدات:

drawable-HDPI

drawable-ldpi

تحتوي هذه المجلدات على كافة الرموز والعناصر الرسومية الأخرى للبرنامج. الحرف الموجود قبل "dpi" يعني حجم العناصر الرسومية، على التوالي:

اتش بي اي -نقاط عالية الكثافة في البوصة، بحجم 72x72 بكسل

مدبي -متوسط ​​كثافة النقاط في البوصة، الحجم 48 × 48 بكسل

لنقطة في البوصة -كثافة النقاط منخفضة في البوصة، الحجم 36x36 بكسل

ولتغيير رمز التطبيق على سبيل المثال، افتح الملف AndroidManifest.xmlباستخدام برنامج Notepad ++، ابحث عن السطر الذي يُشار فيه إلى الرمز، وانظر إلى اسمه الدقيق (لاحظ أن امتداد الملف غير مكتوب، فقط اسم الملف).

افتح المجلد المقابل قابل للرسم-*نقطة في البوصة,الصق الملف الذي تم تحريره أو رمز جديد، لا تنس التحقق مرة أخرى من العنوان الأصلي AndroidManifest.xml. يجب أن تكون الصورة بتنسيق png. وأن تكون لها نفس كثافة البكسل تمامًا مثل الملف المصدر، على سبيل المثال hdpiإنها 72 × 72 بكسل.

إذا كنت تريد استبدال اسم الرمز باسمك، فاحفظ الصورة باسم الملف المطلوب فيه قابل للرسم-*نقطة في البوصة، وبعد ذلك نشير إلى نفس الاسم تمامًا AndroidManifest.xml(على سبيل المثال android:icon=”@drawable/امتحان"). بنفس الطريقة، يمكنك تغيير أي عناصر رسومية أخرى، لكن المتطلبات هي نفسها - يجب أن يكون الامتداد .png وأن تكون كثافة النقاط في البوصة هي نفس الملف المصدر.

في التطبيق الذي تم فك حزمته، يمكنك التحقق مرة أخرى من الحقوق التي يتمتع بها. يعد هذا مفيدًا إذا تم تثبيت APK من مصدر غير معروف، ولتجنب الموقف الذي يبدأ فيه مصباح يدوي أو تقويم جميل فجأة في إرسال رسائل SMS مدفوعة إلى رقم مجهول. افتتاح AndroidManifest.xmlبرنامج Notepad++ وابحث عن الأسطر المقابلة. للإرسال رسائل نصيةعلى سبيل المثال، تستجيب المعلمة أرسل رسالة نصية قصيرة. يمكنك قراءة المزيد عن كافة الحقوق التي قد تكون متاحة لأحد التطبيقات في.

يمكن استخراج تطبيقات APK المثبتة من النظام. ويمكن القيام بذلك بعدة طرق. أولاً، يمكنك تثبيت Astro File Manager. افتح التطبيق، ثم حدد "مدير التطبيقات" من قائمة السياق. يبحثون عن التطبيق المطلوب، ضع علامة اختيار عليها وقم بعمل نسخة احتياطية. بعد المعالجة، سيتم تحديد موقع التطبيق المحدد على طول المسار:

com.mntsdcardackupsapp

com.sdcardackupsapp

التالي، يمكنك استخدام برنامج الجذربرنامج إلغاء التثبيت. بعد تشغيل التطبيق، سيحدد كل شيء تلقائيًا ملفات APK المثبتةوسوف يقوم تلقائيًا بعمل نسخة احتياطية منها جميعًا. وفقًا لذلك، يمكنك، إذا رغبت في ذلك، نسخ هذه النسخ الاحتياطية لمزيد من التفكيك، فهي موجودة على طول المسار:

mntsdcardRootUnistallerautobackups(عند العرض مباشرة من جهاز Android)

sdcardRootUnistallerautobackups(عند العرض من خلال جهاز كمبيوتر، بينما يكون جهاز Android متصلاً كمحرك أقراص USB).

هناك طريقة أخرى وهي استخدام Root Browser Lite، بالطبع ستحتاج إلى حقوق الجذر لهذا الغرض. افتتاح هذا التطبيق، نتبع المسار:

نظامبرنامج(إذا كنت مهتمًا بتطبيقات النظام).

نقوم بنسخ التطبيقات اللازمة إلى بطاقة الذاكرة، وبعد ذلك يمكنك إجراء أي معالجة معهم.

يمكنك أيضًا تنزيل تطبيقات APK التي تهمك من Google Play (Android Market) مباشرة إلى كمبيوتر شخصي. سوف تحتاج إلى متصفح لهذا الغرض جوجل كروم(الإصدار لا يقل عن 17)، والبرنامج المساعد لذلك تنزيل APK. بعد تنزيل البرنامج الإضافي المحدد وتثبيته، قم بإنشاء نسخة من الاختصار متصفح جوجل Chrome حيث نكتب السطر التالي بعد مسافة :

-تجاهل-أخطاء-الشهادة

مع مسار تثبيت المتصفح القياسي، يجب أن يبدو السطر كما يلي:

"C: ملفات البرنامجGoogleChromeApplicationchrome.exe" - تجاهل أخطاء الشهادة

بعد ذلك، أدخل في طالب الهاتف الذكي:

*#*#8255#*#*

نقوم بإعادة كتابة معرف الجهاز الذي يتكون من 16 حرفًا. افتح Google Chrome باستخدام الاختصار الذي تم إنشاؤه باستخدام المعلمة المحددة -تجاهل-أخطاء-الشهادة، لنذهب إلى الأدوات -> الامتدادات(يمكنك أيضًا إدخال "chrome://settings/extensions" في شريط العناوين)، وافتح إعدادات المكون الإضافي APK Downloader. في الخيارات، أدخل عنوان البريد الإلكتروني وكلمة المرور حساب Google، بالإضافة إلى معرف الجهاز المستلم. انتقل الآن إلى Google Play (Android Market)، وافتح الصفحة باستخدام التطبيق المطلوب، نحن في انتظار تحميله بالكامل. ستظهر أيقونة APK Downloader - بعد النقر عليها، سيتم تنزيل التطبيق على جهاز الكمبيوتر الخاص بك.

سيسمح لك تطبيق Apk Editor pro، والذي يمكنك تنزيله لنظام Android على موقعنا الإلكتروني، باختراق/تغيير محتويات ملفات أي تطبيق أجهزة محمولةوتخصيصها حسب رغبتك.

الخصائص

يعد البرنامج أداة مساعدة احترافية يمكن أن تصبح في أيدي المستخدمين المتقدمين أداة قوية لتحرير تطبيقات Android. الوظيفة لا تختلف عمليا عن الوظيفة المماثلة برمجةلأجهزة الكمبيوتر الشخصية.

ماذا يمكن أن تفعل هذه الأداة؟

  1. تغيير (ترجمة) أسماء التطبيقات الأخرى.
  2. تغيير تخطيطات الهندسة المعمارية والألوان وقوالب إعدادات الرسوم (على سبيل المثال، حجم الرمز).
  3. تغيير تصميم الصوت وملفات الوسائط.
  4. إزالة الإعلانات.
  5. تجاوز حظر المحتوى المدفوع.
  6. نقل تطبيق من الذاكرة الداخلية للجهاز إلى بطاقة SD.
  7. تغيير القرار وأكثر من ذلك بكثير.

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

  • موارد التحرير؛
  • استبدال الملفات؛
  • التحرير العام؛
  • تحرير البيانات.

سيعرض البرنامج تثبيت النسخة المعدلة. هذا لا يعمل في جميع الحالات، لذلك نسخة قديمةيجب إزالته يدويًا وتثبيت واحدة جديدة. بعد الحذف، يجب عليك تحديد مجلد محرر APK (للراحة، يمكنك استخدام ES Explorer) من بين البرامج الموجودة على Android والعثور على ملف التطبيق المعدل وتثبيته على الجهاز.

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

المميزات والعيوب

  1. يفتح البرنامج للمستخدم مجموعة واسعة من الخيارات لتخصيص التطبيقات.
  2. تحتوي القائمة على قسم تعليمات، والذي يصف ببساطة وبالتفصيل عددًا كبيرًا من إمكانيات برنامج المحرر. لذلك، لن يتعين على المستخدمين البعيدين عن البرمجة البحث عن أمثلة وتعليمات التحرير على موارد الطرف الثالث.
  3. يمكنك تنزيل البرنامج مجانًا على موقعنا.

يتطلب استخدام هذه الأداة بعض المهارات والمعرفة. في أيدي مستخدم عديم الخبرة، يمكن أن يؤدي التحرير إلى انتهاكات لسلامة نظام الملفات، الأمر الذي سيؤدي في النهاية إلى فشل التطبيق. توجد في القائمة الموجودة في عنصر المساعدة أمثلة تحويل مع صور ونصائح حول كيفية استخدام apk Editor pro بشكل صحيح على Android. لذلك، إذا كنت تريد فهم هذا البرنامج، فما عليك سوى اتباع التعليمات.

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

ستتعرف من هذه المقالة على مكونات تطبيق Android وكيفية فتح ملف APK وبأي برامج.

ما هو ملف APK؟

APK - تنسيق التشغيل أنظمة أندرويد، يُستخدم لملفات التطبيق القابلة للتنفيذ المؤرشفة، ويمكن أن يكون اسم الملف نفسه أي شيء، ولكن يجب أن يبدو الامتداد فقط مثل هذا.apk. نظائرها APK في أنظمة التشغيل الأخرى هي .msi في Windows، أو .sis في Symbian، أو .rpm أو .deb في Linux.

دعونا نرى ما هو في الداخل
في الواقع، .apk هو أرشيف ZIP، لذا يمكنك الاطلاع على البنية الداخلية باستخدام أي ملف مدير الملفاتأو أرشيفي مثل WinRAR أو تطبيق الهاتف المحمول X-plore.





ومن الجدير بالذكر أنك لا تحصل إلا على إمكانية الوصول المرئي إلى الموارد الداخلية، وأن إمكانيات التحرير محدودة للغاية.
دعونا ننظر إلى الهيكل
داخل ملف .apk، نرى عددًا من الملفات والمجلدات، فلنتعرف على الغرض منها:
  • AndroidManifest.xml هو نوع من "جواز السفر" للتطبيق الذي يمكنك من خلاله معرفة جميع النقاط الرئيسية والمتطلبات والإصدار والأذونات وما إلى ذلك.
  • META-INF يحتوي هذا الملف على بيانات وصفية، أي بيانات حول البيانات والمجاميع الاختبارية ومسارات البيانات والمسارات والمجاميع الاختبارية للموارد والشهادات. يمكنك فتح هذا الملف باستخدام أي محرر نصوص، لكن يوصى باستخدام برنامج Notepad++.
  • يحتوي المجلد res على كافة موارد البرنامج والرسومية مثل الأيقونات والصور والنصوص وعناصر الواجهة الرسومية. يمكنك أيضًا الوصول بسهولة إلى المجلد.
  • Classes.dex هو رمز برنامج التطبيق المباشر الذي يتم تنفيذه بواسطة الجهاز الظاهري Dalvik VM؛ لا يمكنك رؤية ما بداخل هذا الملف إلا عن طريق فك ترجمته لـ .apk؛ وسنتحدث عن هذا في مقالات أخرى. Resources.arsc - ملف XML مترجم، يحتوي هذا الملف على بيانات حول كافة الموارد المشاركة في البرنامج.
  • lib - مجلد يحتوي على مكتبات أصلية، لا يمكن الوصول إلى موارده إلا عند استخدام البرامج المتخصصة. قد يحتوي ملف APK أيضًا على ملفات ومجلدات مثل com، وorg، وudk، ولكن ليس دائمًا.

الآن دعونا نلقي نظرة على البنية الداخلية بمزيد من التفاصيل؛ ولهذا نحتاج إلى برنامج فك الترجمة وجافا وملف APK. الأداة الرئيسية لتفكيك .apk هي Apktool، ولكن هذا البرنامجإنه يعمل فقط من خلال خط، وهو أمر غير مريح للغاية. للحصول على تحليل أسرع وأكثر ملاءمة، يمكنك استخدام APKing، وهي نفس أداة Apktool، ولكن مع إمكانية العمل من قائمة السياق.
وهكذا نقوم بتثبيت APKing مثل أي تطبيق لنظام Windows، وبعد تحديد .apk، نضغط عليه بزر الفأرة الأيمن ونضغط Shift في نفس الوقت، وبعد ذلك سنرى ما يلي:


و اختار تصرف ضروريعلى سبيل المثال، قم بفك الترجمة بالكامل، ثم سيقوم البرنامج بإكمال العملية وإنشاء مجلد بنفس الاسم.


من خلال فتح المجلد سيكون لدينا إمكانية الوصول إلى جميع موارد ملف APK.


هذا كل شيء ملفات نصيةيمكن تحريرها، مع مراعاة القواعد الأساسية، يمكنك استخدام برنامج Notepad++ الشهير، على سبيل المثال، فكر في AndroidManifest.xml

إنه أنا مرة أخرى وتعليماتي لأباريق الشاي وأواني القهوة بالصور.

سأتحدث هذه المرة بالتفصيل عن استبدال مكونات نظام التشغيل Android باستخدام مثال تثبيت تعديل شريط الحالة.

الروبوت هو لينكس قليلا. ومن الضروري اتباع عدد من القواعد عند استبدال الملفات حتى لا يتحول الهاتف إلى لبنة لا يمكن إحياؤها إلا عن طريق وميض كامل مع فقدان جميع البيانات من الذاكرة الداخلية للجهاز. يتم تنسيق الأقسام الداخلية في نظام الملفاتيختلف عن FAT32 على محركات الأقراص المحمولة. من بين أشياء أخرى، تقوم خصائص الملف بتخزين الأذونات لمجموعات مستخدمين مختلفة (مالك الملف، مجموعة مالك الملف، والمستخدمين الآخرين). عند التشغيل مع ملفات النظاميجب حفظها، لأنه عند التحميل، قد لا يتمكن النظام ببساطة من الوصول إليها وقد لا يقوم بالتمهيد بشكل طبيعي.
لنبدأ بالأدوات.

سنحتاج إلى:

  • مدير ملفات يمكنه العمل مع حقوق الجذر وأذونات الملفات. Root Explorer هو الأفضل (لقد اشتريته، أليس كذلك؟)
  • الملف المعدل نفسه والذي نريد وضعه مكان النظام الأول (الرابط في نهاية المقال).

نستخدم الآن إحدى الوظائف الملائمة لـ Root Explorer. لنقم بنقرة طويلة على الملف المطلوب لإظهار قائمة السياق

وانقر على العنصر " قم بضغط هذا الملف"لحفظ الملف في أرشيف مضغوط على بطاقة SD. بعد الأرشفة سنتلقى الرسالة التالية:

اضغط الزر " يقضي"للبقاء في المجلد والقيام بشيء آخر.

الآن كل شيء جاهز لاستبدال الملف.
لقد تحدثت بالفعل عن حقوق الوصول لكل ملف. لإعادة إنشائها في ملف جديد، يجب عليك أولاً الاطلاع عليها من الملف القديم. ويتم تمثيلهم بسلسلة من الرموز "rwxrwxrwx". الثالوث الأول - حقوق المالك، الثاني - مجموعات المالك، الثالث - جميع المستخدمين الآخرين. يحتوي ملفنا على أذونات "rw-r--r--".

انتقل الآن إلى بطاقة SD، وابحث عن الملف المعدل هناك ومن قائمة السياق الخاصة به حدد العنصر " ينسخ"، لكن لا تتعجل في تحديد المجلد "/system/app" على الفور، لأننا سنتلف النظام على الفور. بدلاً من ذلك، انسخ الملف إلى مجلد خاص للملفات المؤقتة "/data/local/tmp" لإحضار الملف الملف في النموذج الذي سوف يأخذ النظام.
أولاً، اتصل بقائمة سياق الملف وحدد " إعادة تسمية" وأدخل اسم الملف "SystemUI.apk". هذا صحيح، لأنه في Linux تكون حالة الحروف الموجودة في الاسم مهمة، أي أن "systemui.apk" و"SystemUI.apk" هما ملفان مختلفان.
بعد ذلك، تحتاج إلى تغيير أذونات الملف، لأنه من المؤكد تقريبًا أنه تم تعيينها بشكل غير صحيح. للقيام بذلك، اتصل مرة أخرى بقائمة سياق الملف بنقرة طويلة وحدد العنصر " الأذونات". بالنسبة لقيمتنا "rw-r--r--" يجب وضع مربعات الاختيار على النحو التالي:

انقر " نعم" واستدعاء قائمة السياق مرة أخرى. أنت الآن بحاجة إلى تغيير المالك والمجموعة لهذا التطبيق. للقيام بذلك، حدد العنصر " تغير المالك". ستظهر نافذة تحتوي على معلومات حول المالك الحالي للملف.
هنا نحن بحاجة إلى إجراء استطراد صغير.
في المجلد "/system/app"، جميع الملفات مملوكة للمستخدم "root" (uid=0) والمجموعة "root" (gid=0)، وفي المجلد "/system/framework" المستخدم " system" (gid=1000) مملوك والمجموعة "system" (gid=1000).
بناءً على ما سبق، قم بضبط القيم المطلوبة وانقر على " نعم".
وللمرة الثالثة، اتصل بقائمة السياق الخاصة بالملف وحدد العنصر " ينسخ" وفي مربع حوار النسخ، انتقل إلى المجلد "/system/app". والآن لا تتردد في النقر فوق " معجون"واقرأ المزيد بعناية.
سيخبرك النظام على الفور تقريبًا أن عملية شريط الحالة قد انتهت فجأة وسيعرض عليك البدء بها. جميع المحاولات سوف تكون غير ناجحة. بين ظهور النوافذ، يجب أن يكون لديك وقت للقيام بعدد من الإجراءات. قبل الضغط على الزر، يجب عليك استدعاء القائمة لإيقاف تشغيل الجهاز، وسوف تظهر تحت تحذير. أنت الآن بحاجة إلى وضع إصبعك تقريبًا على الجانب الأيسر من الزر. أنت الآن بحاجة إلى النقر بإصبعك ثلاث مرات بسرعة كبيرة حتى يكون لديك الوقت لإغلاق التحذير وتحديد خيار إيقاف التشغيل وتأكيد نواياك.
الآن ننتظر حتى ينطفئ الهاتف، نعيد تشغيله ونستمتع بالنتيجة، أو لا نستمتع به ونبحث عن الأخطاء.

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

مقدمة

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

للقيام بكل هذا بنفسك، ستحتاج على الأقل إلى معرفة أساسية بلغة Java، التي تُكتب بها تطبيقات Android، ولغة XML، المستخدمة في كل مكان في Android - بدءًا من وصف التطبيق نفسه وحقوق الوصول إليه إلى تخزين السلاسل التي سيتم عرضها على الشاشة. ستحتاج أيضًا إلى القدرة على استخدام برامج وحدة التحكم المتخصصة.

إذًا، ما هي حزمة APK التي يتم من خلالها توزيع جميع برامج Android؟

تفكيك التطبيق

في هذه المقالة، عملنا فقط مع كود التطبيق المفكك، ولكن إذا تم إجراء تغييرات أكثر جدية على التطبيقات الكبيرة، فسيكون فهم كود smali أكثر صعوبة. لحسن الحظ، يمكننا فك كود dex إلى كود Java، والذي، على الرغم من أنه ليس أصليًا ولم يتم تجميعه مرة أخرى، إلا أنه من الأسهل قراءة وفهم منطق التطبيق. للقيام بذلك، سنحتاج إلى أداتين:

  • dex2jar هو مترجم Dalvik bytecode إلى JVM bytecode، وعلى أساسه يمكننا الحصول على كود بلغة Java؛
  • jd-gui هو برنامج فك ترجمات بحد ذاته يسمح لك بالحصول على كود Java قابل للقراءة من كود JVM الثانوي. وكبديل، يمكنك استخدام جاد (www.varaneckas.com/jad)؛ على الرغم من أنها قديمة جدًا، إلا أنها في بعض الحالات تولد تعليمات برمجية أكثر قابلية للقراءة من Jd-gui.

هذه هي الطريقة التي ينبغي استخدامها. أولاً، أطلقنا dex2jar، مع تحديد المسار إلى حزمة APK كوسيطة:

% dex2jar.sh mail.apk

ونتيجة لذلك، ستظهر حزمة Java mail.jar في الدليل الحالي، والذي يمكن فتحه بالفعل في jd-gui لعرض كود Java.

ترتيب حزم APK واستلامها

حقيبة بلاستيكية تطبيقات أندرويد، في الواقع، هو ملف ZIP عادي، ولا يلزم وجود أدوات خاصة لعرض محتوياته واستخراجه. يكفي أن يكون لديك برنامج أرشيفي - 7zip لنظام التشغيل Windows أو وحدة تحكم لفك الضغط على Linux. ولكن هذا يتعلق بالمغلف. ماذا يوجد في الداخل؟ بشكل عام، لدينا الهيكل التالي في الداخل:

  • معلومات التعريف/- يحتوي على شهادة رقمية للتطبيق، مع تحديد منشئه، والمجاميع الاختبارية لملفات الحزمة؛
  • الدقة/ - الموارد المختلفة التي يستخدمها التطبيق في عمله، مثل الصور والوصف التعريفي للواجهة، بالإضافة إلى البيانات الأخرى؛
  • AndroidManifest.xml- وصف التطبيق. يتضمن ذلك، على سبيل المثال، قائمة الأذونات المطلوبة نسخة أندرويدو الإذن المطلوبشاشة؛
  • classs.dex- رمز بايت للتطبيق المترجم لـ آلة افتراضيةدالفيك.
  • الموارد.arsc- أيضًا موارد، ولكن من نوع مختلف - على وجه الخصوص، السلاسل (نعم، يمكن استخدام هذا الملف للترويس!).

الملفات والأدلة المدرجة موجودة، إن لم تكن كلها، فربما تكون موجودة في الغالبية العظمى من ملفات APK. ومع ذلك، هناك عدد قليل من الملفات/الأدلة غير الشائعة الجديرة بالذكر:

  • أصول- التناظرية للموارد. والفرق الرئيسي هو أنه للوصول إلى مورد ما، يجب عليك معرفة معرفه، ولكن يمكن الحصول على قائمة الأصول ديناميكيًا باستخدام طريقة AssetManager.list() في كود التطبيق؛
  • ليب- مكتبات Linux الأصلية المكتوبة باستخدام NDK (Native Development Kit).

يتم استخدام هذا الدليل من قبل منتجي الألعاب الذين يضعون محركات الألعاب الخاصة بهم مكتوبة بلغة C/C++ هناك، وكذلك من قبل منشئي التطبيقات عالية الأداء (على سبيل المثال، Google Chrome). اكتشفنا الجهاز. ولكن كيف يمكنك الحصول على ملف الحزمة الخاص بالتطبيق الذي تهتم به؟ نظرًا لأنه من غير الممكن التقاط ملفات APK من الجهاز بدون الجذر (وهي موجودة في الدليل /data/app)، ولا يُنصح دائمًا بالتجذير، فهناك ثلاث طرق على الأقل لتوصيل ملف التطبيق إلى جهاز الكمبيوتر الخاص بك:

  • ملحق تنزيل APK لمتصفح Chrome؛
  • التطبيق الحقيقي APK Leecher.
  • استضافة الملفات المختلفة وVarezniks.

أيهما يجب استخدامه هو مسألة ذوق؛ نحن نفضل استخدام تطبيقات منفصلة، ​​لذلك سنصف استخدام Real APK Leecher، خاصة أنه مكتوب بلغة Java وبالتالي سيعمل إما في Windows أو Nix.

بعد بدء البرنامج، تحتاج إلى ملء ثلاثة حقول: البريد الإلكتروني وكلمة المرور ومعرف الجهاز - واختيار اللغة. الأولان هما البريد الإلكتروني وكلمة المرور لحساب Google الخاص بك الذي تستخدمه على الجهاز. والثالث هو معرف الجهاز، ويمكن الحصول عليه عن طريق كتابة الرمز على برنامج الاتصال # #8255## ثم ابحث عن سطر معرف الجهاز. عند ملئه، ما عليك سوى إدخال المعرف بدون البادئة android.

بعد ملء البيانات وحفظها، تظهر غالبًا رسالة "خطأ أثناء الاتصال بالخادم". لا علاقة له بـ Google Play، لذا لا تتردد في تجاهله والبحث عن الحزم التي تهمك.

عرض وتعديل

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

  • أرشيف ZIPللتفريغ والتعبئة.
  • سمالي- مجمع/مفكك كود البايت للجهاز الظاهري Dalvik (code.google.com/p/smali);
  • ملائمة- أداة لتعبئة الموارد (افتراضيًا، يتم تخزين الموارد في شكل ثنائي لتحسين أداء التطبيق). مضمن في Android SDK، ولكن يمكن الحصول عليه بشكل منفصل؛
  • الموقع- أداة ل توقيع إلكترونيالحزمة المعدلة (bit.ly/Rmrv4M).

يمكنك استخدام كل هذه الأدوات بشكل منفصل، ولكن هذا غير مريح، لذلك من الأفضل استخدام برامج عالية المستوى مبنية على أساسها. إذا كنت تعمل على Linux أو Mac OS X، فهناك أداة تسمى apktool. فهو يسمح لك بتفريغ الموارد في شكلها الأصلي (بما في ذلك ملفات XML وarsc الثنائية)، وإعادة بناء حزمة بموارد تم تغييرها، لكنه لا يعرف كيفية توقيع الحزم، لذلك سيتعين عليك تشغيل أداة التوقيع يدويًا. على الرغم من أن الأداة المساعدة مكتوبة بلغة Java، إلا أن تثبيتها غير قياسي تمامًا. تحتاج أولاً إلى الحصول على ملف الجرة نفسه:

$ cd /tmp $ wget http://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

$ wget http://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

$ mv apktool.jar ~/bin $ mv apktool-install-linux-r05-ibot/* ~/bin $export PATH=~/bin:$PATH

إذا كنت تعمل على نظام Windows، فهناك أداة ممتازة لها تسمى Virtious Ten Studio، والتي تقوم أيضًا بتجميع كل هذه الأدوات (بما في ذلك apktool نفسها)، ولكن بدلاً من واجهة CLI فهي توفر للمستخدم واجهة رسومية بديهية يمكنك من خلالها إجراء عمليات التفريغ والتفكيك والتفكيك ببضع نقرات. هذه الأداة عبارة عن أداة تبرع، أي أنه في بعض الأحيان تظهر نوافذ تطلب منك الحصول على ترخيص، ولكن في النهاية يمكن التسامح مع ذلك. لا فائدة من وصفها، لأنه يمكنك فهم الواجهة في بضع دقائق. ولكن يجب مناقشة أداة apktool بمزيد من التفاصيل نظرًا لطبيعة وحدة التحكم الخاصة بها.


دعونا نلقي نظرة على خيارات apktool. باختصار، هناك ثلاثة أوامر أساسية: d (فك التشفير)، b (إنشاء)، وإذا (تثبيت إطار العمل). إذا كان كل شيء واضحًا في الأمرين الأولين، فماذا تفعل العبارة الشرطية الثالثة؟ يقوم بتفكيك إطار عمل واجهة المستخدم المحدد، وهو أمر ضروري في الحالات التي تقوم فيها بتشريح أي حزمة نظام.

دعونا نلقي نظرة على الخيارات الأكثر إثارة للاهتمام في الأمر الأول:

  • - لا تقم بتفكيك ملفات dex؛
  • - لا تفريغ الموارد؛
  • - لا تدخل معلومات التصحيحلنتائج تفكيك ملف dex؛
  • --مسار الإطار- استخدم إطار عمل واجهة المستخدم المحدد بدلاً من الإطار المدمج في أداة apktool. الآن دعونا نلقي نظرة على خيارين للأمر b:
  • -F- التجميع القسري دون التحقق من التغييرات؛
  • - حدد المسار إلى aapt (أداة لإنشاء أرشيف APK)، إذا كنت تريد استخدامه من مصدر آخر لسبب ما.

يعد استخدام apktool أمرًا بسيطًا للغاية؛ للقيام بذلك، ما عليك سوى تحديد أحد الأوامر والمسار إلى APK، على سبيل المثال:

$ apktool د mail.apk

بعد ذلك، ستظهر جميع ملفات الحزمة المستخرجة والمفككة في دليل البريد.

تحضير. تعطيل الإعلانات

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


لذلك، باستخدام إحدى الطرق المذكورة أعلاه، قم بتنزيل التطبيق من السوق. إذا قررت استخدام Virtious Ten Studio، فما عليك سوى فتح ملف APK في التطبيق وفك ضغطه، وإنشاء مشروع (ملف -> مشروع جديد)، ثم تحديد استيراد ملف في قائمة سياق المشروع. إذا وقع اختيارك على apktool، فما عليك سوى تشغيل أمر واحد:

$ apktool d com.kauf.particle.virtualtorch.apk

بعد ذلك، ستظهر شجرة ملفات مشابهة لتلك الموضحة في القسم السابق في الدليل com.kauf.particle.virtualtorch، ولكن مع دليل smali إضافي بدلاً من ملفات dex وملف apktool.yml. يحتوي الأول على كود مفكك لملف dex القابل للتنفيذ الخاص بالتطبيق، والثاني يحتوي على معلومات الخدمة اللازمة لأداة apktool لتجميع الحزمة مرة أخرى.

المكان الأول الذي يجب أن ننظر إليه هو بالطبع AndroidManifest.xml. وهنا نواجه على الفور السطر التالي:

ليس من الصعب تخمين أنه المسؤول عن منح التطبيق أذونات استخدام الاتصال بالإنترنت. في الواقع، إذا أردنا فقط التخلص من الإعلانات، فسنحتاج على الأرجح إلى حظر التطبيق من الإنترنت. دعونا نحاول القيام بذلك. نحذف السطر المحدد ونحاول إنشاء البرنامج باستخدام apktool:

$ apktool b com.kauf.particle.virtualtorch

سيظهر ملف APK الناتج في الدليل com.kauf.particle.virtualtorch/build/. ومع ذلك، لن يكون من الممكن تثبيته، لأنه غير موقع رقميًا و المجاميع الاختباريةالملفات (ببساطة لا يوجد دليل META-INF/ فيه). يجب علينا التوقيع على الحزمة باستخدام الأداة المساعدة apk-signer. انطلقت. تتكون الواجهة من علامتي تبويب - في الأولى (Key Generator) نقوم بإنشاء المفاتيح، وفي الثانية (APK Signer) نقوم بالتوقيع. لإنشاء مفتاحنا الخاص، املأ الحقول التالية:

  • الملف الهدف- ملف إخراج مخزن المفاتيح؛ وعادةً ما يقوم بتخزين زوج واحد من المفاتيح؛
  • كلمة المرورو يتأكد- كلمة المرور للتخزين.
  • الاسم المستعار- اسم المفتاح الموجود في المخزن؛
  • كلمة المرور المستعارةو يتأكد- كلمة مرور المفتاح السري؛
  • صلاحية- مدة الصلاحية (بالسنوات). القيمة الافتراضية هي الأمثل.

الحقول المتبقية اختيارية بشكل عام - ولكن يجب ملء واحد منها على الأقل.


تحذير

لتوقيع تطبيق باستخدام apk-signer، يجب عليك تثبيت Android SDK وتحديده مسار كاملقبل ذلك في إعدادات التطبيق.

يتم توفير جميع المعلومات لأغراض إعلامية فقط. لا يتحمل المحررون ولا المؤلف مسؤولية أي ضرر محتمل ناتج عن مواد هذه المقالة.

يمكنك الآن التوقيع على APK باستخدام هذا المفتاح. في علامة التبويب APK Signer، حدد الملف الذي تم إنشاؤه حديثًا، وأدخل كلمة المرور والاسم المستعار للمفتاح وكلمة المرور، ثم ابحث عن ملف APK وانقر فوق الزر "تسجيل" بجرأة. إذا سارت الأمور على ما يرام، سيتم التوقيع على الحزمة.

معلومات

نظرًا لأننا وقعنا على الحزمة بمفتاحنا الخاص، فسوف تتعارض مع التطبيق الأصلي، مما يعني أنه عندما نحاول تحديث البرنامج من خلال السوق، سنتلقى خطأ.

التوقيع الرقمي مطلوب فقط لبرامج الطرف الثالث، لذلك إذا كنت تقوم بالتعديل تطبيقات النظام، والتي يتم تثبيتها عن طريق النسخ إلى الدليل /system/app/، فلن تحتاج إلى التوقيع عليها.

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

عادةً ما يقوم مؤلفو التطبيق بإنشاء فئات خاصة لعرض الإعلانات وطرق الاتصال لهذه الفئات عند تشغيل التطبيق أو أحد "أنشطته" (بعبارات بسيطة، شاشات التطبيق). دعونا نحاول العثور على هذه الفئات. نذهب إلى دليل smali، ثم com (org يحتوي فقط على مكتبة الرسومات المفتوحة cocos2d)، ثم kauf (هذا هو مكانه، لأن هذا هو اسم المطور وكل أكواده البرمجية موجودة) - وها هو، دليل التسويق. نجد في الداخل مجموعة من الملفات ذات الامتداد smali. هذه فئات، وأبرزها فئة Ad.smali، ومن اسمها يسهل تخمين أنها هي التي تعرض الإعلانات.

يمكننا تغيير منطق عمله، ولكن سيكون من الأسهل بكثير إزالة الاستدعاءات لأي من أساليبه من التطبيق نفسه. لذلك، نترك دليل التسويق وننتقل إلى دليل الجسيمات المجاور، ثم إلى Virtualtorch. يستحق الملف MainActivity.smali اهتمامًا خاصًا هنا. هذه فئة Android قياسية يتم إنشاؤها بواسطة Android SDK ويتم تثبيتها كنقطة دخول إلى التطبيق (مماثلة للوظيفة الرئيسية في لغة C). افتح الملف للتحرير.

يوجد بالداخل كود smali (المجمع المحلي). إنه أمر محير للغاية ويصعب قراءته نظرًا لطبيعته ذات المستوى المنخفض، لذلك لن نقوم بدراسته، ولكننا سنجد ببساطة جميع الإشارات إلى فئة الإعلان في الكود ونعلق عليها. ندخل سطر "إعلان" في البحث ونصل إلى السطر 25:

إعلان خاص ميداني:Lcom/kauf/marketing/Ad;

هنا يتم إنشاء حقل إعلان لتخزين كائن فئة الإعلان. نعلق بوضع علامة ### أمام السطر. نواصل البحث. السطر 423:

المثيل الجديد v3، Lcom/kauf/marketing/Ad؛

هذا هو المكان الذي يحدث فيه إنشاء الكائن. دعونا التعليق. نواصل البحث ونجد في السطور 433، 435، 466، 468، 738، 740، 800 و 802 استدعاءات لطرق فئة الإعلان. دعونا التعليق. تبدو وكأنها كل شيء. يحفظ. الآن يجب إعادة تجميع الحزمة معًا والتحقق من وظائفها ووجود الإعلانات. لنقاء التجربة، نعيد السطر الذي تمت إزالته من AndroidManifest.xml، ونجمع الحزمة، ونوقعها ونثبتها.

خنزير غينيا لدينا. الإعلان مرئي

أُووبس! اختفت الإعلانات فقط أثناء تشغيل التطبيق، ولكنها ظلت في القائمة الرئيسية، التي نراها عند تشغيل البرنامج. إذن، انتظر، ولكن نقطة الدخول هي فئة MainActivity، وقد اختفى الإعلان أثناء تشغيل التطبيق، لكنه بقي في القائمة الرئيسية، فهل نقطة الدخول مختلفة؟ لتحديد نقطة الإدخال الحقيقية، أعد فتح ملف AndroidManifest.xml. و نعم يحتوي على الأسطر التالية:

يخبروننا (والأهم من ذلك، android) أنه يجب إطلاق نشاط يسمى Start استجابةً لإنشاء هدف (حدث) android.intent.action.MAIN من فئة android.intent.category.LAUNCHER. يتم إنشاء هذا الحدث عند النقر على أيقونة التطبيق في المشغل، بحيث يحدد نقطة الدخول، وهي فئة البداية. على الأرجح، قام المبرمج أولاً بكتابة تطبيق بدون قائمة رئيسية، كانت نقطة الدخول إليها هي فئة MainActivity القياسية، ثم أضاف نافذة جديدة (نشاط) تحتوي على القائمة والموصوفة في فئة Start، وجعلها الإدخال يدويًا نقطة.

افتح ملف Start.smali وابحث مرة أخرى عن السطر "Ad"، نجد في السطرين 153 و155 ذكرًا لفئة FirstAd. وهو موجود أيضًا في الكود المصدري، ووفقًا للاسم، فهو مسؤول عن عرض الإعلانات على الشاشة الرئيسية. دعونا ننظر إلى أبعد من ذلك، هناك إنشاء مثيل لفئة FirstAd ونية ترتبط، وفقًا للسياق، بهذا المثيل، ثم تسمية cond_10، التي يتم تنفيذ الانتقال الشرطي إليها بالضبط قبل إنشاء مثيل الطبقة:

If-ne p1, v0, :cond_10 .line 74 new-instance v0, Landroid/content/Intent; ... :cond_10

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

#if-ne p1, v0, :cond_10 goto:cond_10

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

نتائج

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




قمة