إنشاء البرامج الثابتة لنظام Android من الصفر. نبذة مختصرة عن برنامج Samsung Root Firmware Replacer وإمكانياته

11.05.2019

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

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

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


هناك طريقتان: باستخدام الكمبيوتر وبدونه. إذا كنت تميل إلى الخيار الأخير، فإن الشرط الأساسي لإعادة التثبيت هو وجود بطاقة ذاكرة، لأن ملف التثبيت الخاص بـ "OS" نفسه سيكون موجودًا عليه مباشرةً. لذلك، دعونا نلقي نظرة سريعة على هذه العملية.

وامض باستخدام جهاز كمبيوتر

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

كيفية عمل البرامج الثابتة لنظام Android بنفسك

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

هنا لا يمكنك العثور على البرامج الثابتة فحسب، بل يمكنك أيضًا العثور على "برنامج وامض" سنحتاجه أيضًا. على سبيل المثال، بالنسبة لشركة Samsung، هذا هو برنامج Odin، بالنسبة إلى Sony Ericsson، فهو PC Companion، ويجب عليك العثور على إصدار من هذه الأداة المساعدة لجهازك. بعد تنزيل البرنامج الثابت، تحتاج إلى "رميه" في مثل هذا البرنامج وبدء العمل.

لذا عليك:

  • أداتك؛
  • كابل USB؛
  • برنامج للوميض.
  • البرامج الثابتة.

قم بتوصيل الجهاز بالكمبيوتر عبر كابل وقم بتحويله إلى وضع "Bootlader". عادة ما تكون هذه مجموعات من الأزرار، أي منها مناسب لك - تحتاج إلى توضيح، ويعتمد ذلك أيضًا على طراز الأداة والشركة المصنعة.

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

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

مقدمة

هناك ثلاث طرق لإنشاء البرامج الثابتة الخاصة بك لجهاز اتصال Android: 1. الانتهاء من نظام التشغيل وتجميعه من المصادر التي نشرتها Google أو فريق CyanogenMod. 2. تعديل البرنامج الثابت الخاص بمخزون جهاز الاتصال. 3. تعديل البرامج الثابتة التابعة لجهات خارجية والتي تم إنشاؤها باستخدام الطريقة الأولى أو الثانية.

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

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

اختيار موضوع الاختبار

لذلك، لنفترض أن جهاز الاتصال الخاص بنا قد تم تجذيره بالفعل وأن وحدة التحكم بالاسترداد ClockworkMod مكتوبة في منطقة التمهيد، مما يسمح لك بتثبيت أي برنامج ثابت على الجهاز دون أي قيود (كتبنا عن كيفية القيام بذلك في مقال "Total Subordination"). ، نشرت في عدد أكتوبر من [ ] . نريد الآن تثبيت برنامج ثابت آخر على الجهاز، وليس فقط أي برنامج ثابت، ولكن مع التعديلات والإعدادات ومجموعة البرامج الخاصة بنا. لذلك، نحن بحاجة إلى إطار عمل، أي البرامج الثابتة لشخص آخر يعمل بثبات على أجهزتنا. أين يمكنني الحصول عليه؟

الموطن الرئيسي لجميع عارضات الأزياء هو بالطبع منتديات xda-developers.com. هناك يمكنك أن تجد كل ما تحتاجه لأجهزة الاتصال التي تعمل بنظام التشغيل iOS، وWindows Mobile، وWindows Phone، وAndroid. افتح الموقع في المتصفح، وانقر على قسم المنتديات وابحث عن جهة الاتصال الخاصة بك في قوائم المنتدى. بعد ذلك، انتقل إلى القسم المناسب من Android Development وابحث بعناية في قائمة المواضيع التي تحتوي على كلمة "" في العنوان. من الأفضل العثور على بعض البرامج الثابتة النظيفة باسم مثل "Pure Android 2.3 Rom" أو منفذ CyanogenMod، على الرغم من أن أي برنامج آخر سيفي بالغرض (على الرغم من أنك قد تضطر إلى التراجع عن تغييرات المؤلف). افتح الموضوع، وقم بالتمرير عبر المشاركة الأولى، وابحث عن رابط التنزيل في مكان ما في النهاية وقم بتنزيل ROM على جهاز الكمبيوتر الخاص بك.

الآن يجب فتح ملف البرنامج الثابت. يتم ذلك باستخدام أداة فك الضغط الأكثر شيوعًا:

$ مكدير ~/روم؛ cd ~/rom $ unzip ../path/to/firmware.zip

هيكل الدليل العام والملفات الهامة

مجموعة الملفات والأدلة التي تم تشكيلها نتيجة لتنفيذ الأمر السابق هي، في جوهرها، نظام التشغيل Android، وبالضبط في النموذج الذي سيتم وضعه في ذاكرة NAND للجهاز. اعتمادًا على إصدار Android وخيال المؤلف، قد يحتوي على مجموعات مختلفة من الدلائل والملفات، ولكنه يحتوي دائمًا على ثلاثة كائنات مطلوبة: META-INF وملف boot.img ودليل النظام.

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

يحتوي ملف boot.img على صورة تمهيد تتضمن نواة Linux وصورة initrd. يمكن تفكيكه، لكنه ليس مفيدًا بشكل خاص بالنسبة لنا، حيث يمكن تغيير أي معلمات نظام تقريبًا باستخدام ملفات الإعدادات ونظام الملفات /proc. إذا كنت بحاجة إلى نواة مبنية بمعلمات خاصة، على سبيل المثال مع جدولة BFS مفعلة أو دعم NFS، فمن المؤكد تقريبًا أنه يمكنك العثور عليها على نفس مطوري xda وفلاشها باستخدام ClockworkMod.


وأخيرًا، دليل النظام هو ما يدور حوله الأمر. تمثل محتويات هذا الدليل نظام التشغيل Android بدون نواة Linux. أنه يحتوي على كل ما هو ضروري لكي يعمل نظام التشغيل، وبالتالي فمن الضروري ببساطة معرفة هيكله. تبدو هكذا:

  • برنامج- التطبيقات المثبتة مسبقًا: الهاتف، الآلة الحاسبة، التقويم، إلخ.
  • سلة مهملات-مشابه للمجلدين /bin و/usr/bin في Linux. يحتوي على مكونات النظام المختلفة التي تستخدمها مكونات النظام ذات المستوى الأعلى. على سبيل المثال، هذا هو المكان الذي يوجد فيه الجهاز الظاهري dalvikvm.
  • إلخ- ملفات الإعدادات. تماثل كامل لـ /etc في Linux، ومع ذلك، يتم استخدامه فقط من خلال مكونات النظام. تقوم تطبيقات Android بتخزين الإعدادات في الدليل /data/data.
  • الخطوط- الخطوط. افتراضيًا، يحتوي فقط على الخطوط التي تحمل علامة Droid (أو Roboto في Android 4.0).
  • نطاق- مجموعات فئات Java التي يستخدمها النظام وبرامج Android. يوجد أيضًا ملف Framework-res.apk يحتوي على وصف كامل لواجهة نظام التشغيل، بما في ذلك جميع الملفات الرسومية.
  • ليب- مكتبات Linux التي تستخدمها مكونات النظام ذات المستوى المنخفض. وهو نظير لمجلدي /lib و/usr/lib في Linux، ويتضمن مكتبات قياسية مثل libc (على الرغم من أن Android يستخدم Bionic الخاص به بدلاً من Glibc)، وlibz (تشفير gzip)، وlibssl وغيرها.
  • وسائط- ملفات الوسائط: نغمات الرنين وأصوات الإشعارات وأصوات الواجهة وملفات الرسوم المتحركة الخاصة بتمهيد نظام التشغيل.
  • تحويل النص إلى كلام- الملفات اللازمة لعمل مركب الكلام.
  • usr- دليل اختياري يحتوي عادةً على الملفات الضرورية لعمل البرنامج من دليل bin. في الأساس نظير لـ /usr/share.
  • بائع- الملفات المقدمة من قبل الشركة المصنعة للجهاز. يحتوي عادةً على برامج ثابتة ثنائية لمكونات الأجهزة المختلفة، على سبيل المثال وحدة Wi-Fi.
  • com.xbin- دليل اختياري يحتوي على كل ما لم يتم تضمينه في سلة المهملات. كقاعدة عامة، يتم استخدامه لتخزين الأدوات المساعدة المفيدة، ولكنها ليست ضرورية لتشغيل النظام (أعلى، محرر النصوص). يستخدمه CyanogenMod لتخزين أدوات الإدارة: bash، وssh، وpowertop، وbusinessbox، وما إلى ذلك.
  • build.prop- ملف يحتوي على معلومات حول التجميع، بالإضافة إلى العديد من الإعدادات ذات المستوى المنخفض.

أمر setprop

يمكن أيضًا تطبيق إعدادات build.prop الواردة في المقالة على نظام قيد التشغيل بالفعل باستخدام الأمر setprop:

# setprop debug.sf.nobootanimation 1

مجموعة البرامج الخاصة

يحتوي الدليل /system/app على جميع البرامج المثبتة مسبقًا في البرنامج الثابت. من خلال إزالة الحزم وإضافتها إلى هذا الدليل، يمكننا تغيير مجموعة التطبيقات المتاحة خارج الصندوق. على سبيل المثال، ليس سرًا أن مشغل Android القياسي (و ADWLauncher في CyanogenMod) بطيء ولديه العديد من أوجه القصور. حسنًا، لنستبدله بـ LauncherPro:

$ نظام rm/app/Launcher.apk $ wget goo.gl/U9c54 -o نظام/app/LauncherPro.apk

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

من المفيد وضع أحد التطبيقات في البرامج الثابتة للعثور على هاتف ذكي مفقود (على سبيل المثال، فريسة)، ثم حتى إذا قمت بإعادة تعيينه إلى إعدادات المصنع، فسيبقى في نظام التشغيل وسيعمل. يمكنك أيضًا استبدال بعض برامج النظام، على سبيل المثال، إضافة Dialer One بدلاً من Phone.apk القياسي أو Go SMS بدلاً من sms.apk.

ماذا عن تطبيقات نظام Linux مثل خادم ssh أو mc؟ كل شيء بسيط هنا أيضًا. يمكنك إنشاء برنامج لمعالج Android وARM باستخدام مجموعة NDK من Google، ولكن تم بالفعل تجميع معظم التطبيقات الضرورية أمامنا. على سبيل المثال، نريد تثبيت mc مسبقًا في البرامج الثابتة لدينا. انتقل إلى مطوري xda وابحث عن Midnight Commander. في الصفحة الأولى نجد حزمة APK مع المثبت ونقوم بفك ضغطها باستخدام نفس فك الضغط:

$ قرص مضغوط / تمب؛ فك الضغط ~/NativnuxInstaller_1.1.apk

نرى الأصول/kits/mc-4.7.5.4-arm.tar.jet في قائمة الملفات التي تم فك حزمتها. هذا هو أرشيف tar.gz، الذي يتم تفريغه إلى جذر النظام بعد تثبيت حزمة APK (أو بالأحرى، بعد تثبيت APK، تشغيل التطبيق والنقر فوق الزر "تثبيت". يمكننا فك حزمته على الفور في البرامج الثابتة لدينا والحصول على مولودية مثبتة مسبقًا:

$ cd ~/rom $ tar -xzf /tmp/assets/kits/mc-4.7.5.4-arm.tar.jet

الآن، لتشغيل مدير الملفات على الجهاز، ما عليك سوى فتح الوحدة الطرفية واكتب mc. يمكن توزيع التطبيقات الأخرى في أرشيفات مضغوطة للوميض باستخدام ClockworkMod Recovery. ومن الأسهل وضعها في جهازك؛ للقيام بذلك، ما عليك سوى الانتقال إلى جذر البرنامج الثابت (في هذه الحالة ~/rom) وفك ضغط الأرشيف باستخدام فك الضغط.


مظهر

غالبًا ما يتم إنشاء البرامج الثابتة المخصصة لتغيير مظهر Android حسب رغبتك. يعد إجراء هذه العملية على نظام Android أمرًا بسيطًا للغاية. يتم تخزين جميع إعدادات Android GUI في ملف Framework/framework-res.apk. يمكن فك ضغطه باستخدام الأداة المساعدة apktool:

$cd~; wget goo.gl/hxz5l $ tar -xjf apktool1.4.1.tar.bz2 $ cd ~/rom/system/framework $ java -jar ~/apktool.jar d Framework-res.apk

ونتيجة لذلك، يجب أن يظهر دليل إطار العمل الذي يحتوي على جميع ملفات الحزمة في الدليل الحالي. الدلائل الفرعية الأكثر إثارة للاهتمام داخله هي res/drawable-* و res/layout-*. يحتوي الأول على جميع العناصر الرسومية في شكل ملفات png لدقة مختلفة ومواضع الشاشة. على سبيل المثال، drawable-land-mdpi هو دليل يحتوي على موارد رسومية للشاشات ذات الدقة المتوسطة الموجودة في وضع أفقي (عند تدوير الشاشة، يتحول نظام التشغيل إلى استخدام ملفات أخرى). وبطبيعة الحال، يمكن تحرير أي ملف أو استبداله بآخر.


تحتوي أدلة التخطيط على أوصاف للعناصر الرسومية بتنسيق XML (يتم تخزينها فعليًا بتنسيق AXML الثنائي، لكن apktool حولتها إلى XML عادي). تنسيق الوصف بسيط للغاية ومفهوم، ولكن من الصعب فهمه بسرعة، خاصة إذا كنت لا تعرف مكان كل شيء. لذلك، سننتقل مرة أخرى إلى خدمات سكان منتدى مطوري XDA، الذين تمكنوا بالفعل من التوصل إلى الكثير من التعديلات المختلفة للواجهة الرسومية لنظام Android. يمكن العثور عليها بسهولة باستخدام استعلام البحث "framework-res mod Device_name".

عادة، يتم توزيع هذه التعديلات في شكل ملف Framework-res.apk جاهز، والذي يمكنك ببساطة وضعه في البرامج الثابتة الخاصة بك. إذا كنت تريد العثور على اختلافات محددة في المحتوى، فيمكن فك التعديل ومقارنته بإطار العمل الخاص بك باستخدام diff:

$ diff -R ~/framework-res \ ~/rom/system/framework/framework-res

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

بعد إجراء التعديلات، يمكنك إنشاء Framework-res.apk باستخدام نفس أداة apk. ومع ذلك، تتطلب هذه العملية الأداة المساعدة aapt من Android SDK، والتي تستخدمها apktool لحزم ملف apk أخيرًا. ويمكن أيضًا الحصول عليها بشكل منفصل:

$ cd ~/bin; wget goo.gl/tC7k8

الآن يمكنك بناء الملف:

$ cd ~/rom/system/framework $ java -jar ~/apktool.jar b Framework-res $ cp framwork-res/dist/framework-res.apk . $ rm -rf إطار الدقة

الخطوة التالية هي تغيير الرسوم المتحركة للتحميل. يتم تخزينه على شكل ملفات png عادية، ومعبأة في أرشيف النظام/الوسائط/bootanimation.zip. دعونا نفكها:

$ cd /tmp $ mkdir bootanimation؛ cd bootanimation $ unzip ~/rom/system/media/bootanimation.zip

يوجد بالداخل ملف desc.txt الذي يصف الرسوم المتحركة بالتنسيق التالي:

العرض الارتفاع FPS p ترتيب الإيقاف المؤقت للكتالوج...

النموذج القياسي لهذا الملف هو:

480800 30 ص 1 0 جزء 0 ص 0 0 جزء 1

وهذا يعني أن حجم الصورة هو 480 × 800 وأن معدل الإطارات (FPS) هو 30 إطارًا في الثانية. فيما يلي وصف للجزء الأول من الرسوم المتحركة، والتي توجد ملفاتها في الدليل Part0. يتم لعبها مرة واحدة (رقم 1 بعد ع). يتم تشغيل الجزء التالي (الجزء الأول) لعدد لا نهائي من المرات حتى يتم تشغيل الجهاز. عادةً ما يحتوي الدليل Part0 على الصور المقابلة للجزء الأول من الرسوم المتحركة، ويحتوي الجزء0 على جميع الصور الأخرى التي يتم تشغيلها في حلقة. يجب أن تكون الصور نفسها بنفس الحجم، ويجب أن تحتوي أسماؤها على أرقام بترتيب تصاعدي، على سبيل المثال 0001.png، 0002.png، وما إلى ذلك.

نظرًا لأن الرسوم المتحركة للتحميل لها تنسيق بسيط جدًا، فمن السهل جدًا صنعها. يكفي تحويل الفيديو إلى صور png باستخدام mencoder (في desc.txt تحتاج إلى ضبط قيمة FPS على 24):

$ mplayer -nosound -vo png:z=9 video.avi

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

إعدادات المستوى المنخفض

آخر شيء أود التحدث عنه في هذه المقالة هو تحرير الإعدادات ذات المستوى المنخفض. في Android، يوجد ملف لهذا الغرض: system/build.prop، الذي يخزن معلومات حول إنشاء البرنامج الثابت وإعداداته لأجهزة معينة. من خلال إضافة أسطر معينة إلى هذا الملف، يمكنك تغيير أداء Android أو تسريع تشغيله أو تقليل استهلاك البطارية. فيما يلي الإعدادات الأكثر إثارة للاهتمام.


  1. حظر تفريغ سطح المكتب من الذاكرة: ro.HOME_APP_ADJ=1

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

  2. تحسين جودة ملفات JPG المحفوظة: ro.media.enc.jpeg.quality=100

    يتيح لك جعل صور الكاميرا أكثر وضوحًا، ولكنه يزيد بشكل كبير من الحمل على وحدة المعالجة المركزية.

  3. قم بتعطيل الرسوم المتحركة للتمهيد لتسريع تحميل نظام التشغيل: debug.sf.nobootanimation=1
  4. إسناد جزء من عمل عرض الواجهة إلى وحدة معالجة الرسومات: debug.sf.hw=1

    يتيح لك جعل الواجهة أسرع وأكثر سلاسة.

  5. حظر إشعار وضع التصحيح النشط (عند الاتصال بجهاز كمبيوتر عبر USB): continue.adb.notify=0
  6. اصلاح مشكلة ظهور شاشة سوداء بعد انتهاء المكالمة: ro.lge.proximity.delay=25 mot.proximity.delay=25
  7. قم بتشغيل الإضاءة الخلفية لمفتاح التحكم مباشرة بعد تشغيل الشاشة: ro.mot.buttonlight.timeout=0

بالإضافة إلى كل هذا، يوصي العديد من المستخدمين أيضًا باستخدام مجموعات الأعلام التالية:

  1. تقليل وقت استجابة شاشة اللمس: debug.performance.tuning=1 video.accelerate.hw=1 windowsmgr.max_events_per_sec=150
  2. زيادة عمر البطارية: wifi.supplicant_scan_interval=180 مساءً.sleep_mode=1 ro.ril.disable.power.collapse=0
  3. تعديلات وحدة 3G: ro.ril.hsxpa=2 ro.ril.gprsclass=10 ro.ril.hep=1 ro.ril.enable.dtm=1 ro.ril.hsdpa.category=10 ro.ril.enable a53 =1 ro.ril.enable.3g.prefix=1 ro.ril.htcmaskw1.bitmask=4294967295 ro.ril.htcmaskw1=14449 ro.ril.hsupa.category=5
  4. تحسين أداء الشبكة: net.tcp.buffersize.default=4096,87380,256960,4096,16384,256960 net.tcp.buffersize.wifi=4096,87380,256960,4096,16384,256960 net.tcp.buffersize.umts= 4096,87380,256960,4096,16384,256960 net.tcp.buffersize.gprs=4096,87380,256960,4096,16384,256960 net.tcp.buffersize.edge=4096,87380,256960,4096, 1 ​​6384.256960

كل هذه السطور تحتاج فقط إلى وضعها في ملف system/build.prop وحفظها.

حَشد

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

$ مؤتمر نزع السلاح ~/روم؛ الرمز البريدي -r my-rom.zip *

أنت الآن بحاجة إلى التوقيع على الأرشيف حتى يتمكن الاسترداد من تثبيته:

$ wget goo.gl/OyBBk $ java -classpath testsign.jar testsign \ my-rom.zip my-rom-signed.zip

بعد ذلك قم بتحميل أرشيف my-rom-signed.zip على بطاقة الذاكرة الخاصة بالجهاز وقم بإيقاف تشغيل الجهاز. للدخول إلى الاسترداد، قم بتشغيل الجهاز أثناء الضغط باستمرار على مفتاح خفض مستوى الصوت (قد يختلف الإجراء بالنسبة لبعض الأجهزة).

انتقل الآن إلى "تثبيت الرمز البريدي من sdcard"، ثم إلى "اختيار الرمز البريدي من sdcard"، ابحث عن my-rom-sign.zip على بطاقة SD وحدد نعم. بعد اكتمال التثبيت، حدد "إعادة تشغيل النظام الآن".

الاستنتاجات

يعد Android نظامًا أساسيًا مرنًا، ولا تصف هذه المقالة جميع إمكانيات تعديله. قد يتضمن التعديل الأعمق استبدال النواة، وتغيير شاشة القفل والتطبيقات القياسية، وتفعيل ميزات مثل التثبيت التلقائي للتطبيقات على بطاقة الذاكرة، وإدخال آلية البرنامج النصي للتمهيد (/etc/init.d)، وغير ذلك الكثير. سنتحدث عن كل هذا في المقالات التالية.

لدى كل مستخدم للهواتف الذكية التي تعمل بنظام Android تقريبًا الرغبة في إنشاء البرامج الثابتة أو تعديلها لتناسب احتياجاته ورغباته. في هذه المقالة سنلقي نظرة على مبدأ تحرير البرامج الثابتة لـ CWM (بتنسيق مضغوط).

تحضير:

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

هيكل البرامج الثابتة:

عند فتح الأرشيف بالبرنامج الثابت، ترى ما يلي:
ميتا-INF- يتم تخزين البرامج النصية لتثبيت البرامج الثابتة في المجلد.
نظام- مجلد يحتوي على كافة ملفات البرامج الثابتة (التطبيقات، والتعديلات، والبرامج النصية، وما إلى ذلك).
boot.img- جوهر النظام.

يتم تنفيذ جميع عمليات التلاعب تقريبًا في المجلد نظام، هيكلها:
برنامج- تطبيقات النظام.
سلة مهملات- موارد النظام نفسه.
إلخ- البرامج النصية والتعديلات والتكوينات والملفات الشخصية وإعدادات النظام.
الخطوط- خطوط النظام.
نطاق- يتم تخزين ملفات النظام الرئيسية هنا (الرسومات، وإعدادات نص الرسوم المتحركة، وما إلى ذلك).
ليب- مكتبات النظام .
وسائط- ملفات الوسائط المتعددة (نغمات الإشعارات، وتحميل الرسوم المتحركة، وورق الحائط، وما إلى ذلك).
usr- الإعدادات التي لا يمكن للنظام تغييرها في المستقبل (تعمل في وضع القراءة فقط).
com.xbin- مرة أخرى، تكوينات النظام والتعديلات الأخرى.
build.prop- معلومات حول النظام والإعدادات المحلية وأداء النظام.

التطبيقات:

قبل إضافة/إزالة البرامج إلى النظام، تحتاج إلى التحقق مما إذا كانت البرامج الثابتة الخاصة بك قد تمت إزالتها (أي التحقق من وجود ملفات .odex في مجلد التطبيق. إذا كانت هناك ملفات، فأنت بحاجة إلى التخلص منها هنا تعليمات .
إضافة برنامج إلى البرامج الثابتة:
بادئ ذي بدء، تحتاج إلى تثبيت تلك البرامج التي تريد إضافتها إلى التجميع في جهازك الذكي. بعد التثبيت، نقوم بإزالتها من النظام باستخدام الجذر المستكشفونظائرها، فهي موجودة على مسار البيانات/التطبيق، ونحتاج أيضًا إلى libs الخاصة بها (إذا كانت موجودة بالطبع)، فهي موجودة على مسار البيانات/البيانات. وهي موجودة في المجلد الذي يحمل نفس الاسم في التطبيق ولها الامتداد .لذا. ثم استولى .apkضع الملفات في الأرشيف على طول مسار النظام/التطبيق والملفات ذات الامتداد .لذا(libs) على طول المسار system/lib .
نقوم بإزالة البرنامج من البرامج الثابتة:
كل شيء بسيط هنا، انتقل إلى المجلد برنامج- نقرر ما لا نحتاج إليه ونزيل جميع البرامج غير الضرورية (من الأفضل عدم لمس النظام).

إصدار اللغة والبرامج الثابتة:

انسخ ملف build.prop إلى سطح المكتب. افتحه باستخدام المفكرة وابحث عن السطور:

ro.product.locale.language=ar
ro.product.locale.region=US

للغة الروسية عليك القيام بذلك:

ro.product.locale.language=ar
ro.product.locale.region=RU

أدخل اسم التعديل الخاص بك في السطر

في نفس build.prop

الفنون التصويرية:

يتم تخزين الجزء الرسومي بالكامل من البرنامج الثابت في ملفين مسار ملف Framework-res.apk com.systemframeworkو SystemUI.apk على طول الطريق com.systemapp. ويتم تخزين الجزء الرسومي من تطبيق الإعدادات بشكل طبيعي في تطبيق Settings.apk.

البرامج النصية والتعديلات (تسريع النظام وتحسينه):

تتم معظم الإعدادات في الملف build.prop، يمكنك أن تقرأ عن هذا. أيضًا، إذا كان النواة لديك تدعم الحرف الأول. ديوجد عدد من البرامج النصية لتحسين النظام، أحدها موضح في هذه المقالة (تحسين ذاكرة الوصول العشوائي)وفي هذه المقالة قرص البرامج النصية لinit.d

استبدال خطوط النظام:

كما هو مذكور أعلاه، جميع الخطوط موجودة في المجلد الخطوط، الخطوط الرئيسية هي: DroidSans.ttf و DroidSans-Bold.ttf ويمكن استبدالها بأي خطوط وإعادة تسميتها بشكل مشابه لما ورد أعلاه والانتقال مع الاستبدال إلى الأرشيف بالبرنامج الثابت الموجود في المجلد الخطوط.

جوهر:

من الناحية النظرية، يكفي ليحل محل boot.imgخاصة بها، ولكن في بعض الحالات تكون النوى مصحوبة بنصوص إضافية. لذلك أنصحك بعدم القيام بأي شيء إذا كانت لديك أي شكوك.



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

يمكن تعديل أي برنامج ثابت لمستخدم معين

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

البناء من المصدر

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

تغيير ملف موجود

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

التحرير باستخدام الكمبيوتر

البرامج المطلوبة

سنحتاج إلى جهاز كمبيوتر وجهاز وملف البرنامج الثابت وبرنامج خاص يسمى Android Kitchen (المعروف أيضًا باسم المطبخ). يمكن العثور على ملف البرنامج الثابت في المنتديات المتخصصة وأشهرها مطوري XDA باللغة الإنجليزية وموقع w3bsit3-dns.com باللغة الروسية. في القسم الخاص بطراز جهازك، يمكنك العثور على روابط للبرامج الثابتة الأكثر شهرة وثباتًا، سواء كانت رسمية أو مخصصة غير رسمية.

بعد ذلك تحتاج إلى تثبيت المطبخ على جهاز الكمبيوتر الخاص بك. من الأفضل العمل على Linux، ولكن يمكن أيضًا تثبيت المكتبات الضرورية على Windows. في هذه الحالة، يمكنك الخروج من الموقف عن طريق تثبيت Cygwin. واتبع التعليمات خطوة بخطوة الموجودة في الأرشيف. قبل ذلك، ستحتاج أيضًا إلى تثبيت Java Platform (JDK) من الموقع الرسمي (https://www.Oracle.com/technetwork/java/javase/downloads/index.html لنظام التشغيل Windows) أو البحث عن OpenJDK Java وتنزيله 6 في Ubuntu Application Center Runtime أو ما شابه ذلك (لنظام التشغيل Linux). حالة الاستخدام الثانية هي تثبيت Linux على جهاز افتراضي وإدارة العملية من خلاله.

تعديل البرامج الثابتة

غالبًا ما يتم توزيع البرامج الثابتة كملف بامتداد .img، وفي كثير من الأحيان يتم توزيعه على شكل أرشيف ZIP. في كلتا الحالتين، ستحتاج إلى البرنامج الثابت في مجلد المطبخ المثبت حتى تتمكن من استيراده وبدء العمل معه. يجب تثبيت المطبخ على المسار c:/cygwin/home/user/ (عند التثبيت عبر Cygwin) أو Filesystem/home/user/ (عند التثبيت عبر Linux).

  1. ابدأ تشغيل المطبخ عبر Cygwin أو محطة Linux باستخدام الأمر cd Kitchen، ثم ./menu.
  2. قم بفك الأرشيف في المطبخ، كما هو موضح أعلاه.
  3. بعد ظهور قائمة البرنامج، انتقل إلى القسم 0. الخيارات المتقدمة.
  4. بعد ذلك، سيتم عرض قائمة الأوامر الخاصة بتعديل البرنامج الثابت. اختر بالضبط ما تحتاجه. يمكنك إضافة Busy Box وRoot وApps2SD واستبدال تطبيقات المخزون والرسوم المتحركة المتنوعة وتحرير ذاكرة الجهاز وغير ذلك الكثير.
  5. بعد الانتهاء من المعالجات، قم بتشغيل الأمر 99. قم ببناء ذاكرة القراءة فقط (ROM) من مجلد العمل في القائمة الرئيسية وأخذ أرشيف ZIP من OUTPUT_ZIP.

البرامج الثابتة للجهاز

يمكنك وميض الجهاز إما من خلال جهاز كمبيوتر أو بدونه. في الحالة الأولى، تحتاج إلى تنزيل برنامج البرامج الثابتة، عادةً Flash Tool أو Odin، وبرامج التشغيل الخاصة بطراز جهازك وإعداد أرشيف تم تصحيحه بالفعل.

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

التحرير على الجهاز

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

تغيير البرامج الثابتة الخاصة بك

  1. إذا لم يتم تجذير جهازك بعد، فاحصل عليه. يمكنك قراءة كيفية القيام بذلك في المنتديات المتخصصة في القسم المخصص لجهازك. والحقيقة هي أنها مدعومة بعدد صغير من الأجهزة ومعظمها لديه إجراء فردي.
  2. قم بتثبيت نسخة احتياطية من Nandroid (https://play.google.com/store/apps/details?id=com.h3r3t1c.onnandbup&hl=ru) واستخدمها لإجراء نسخ احتياطي لنظام جهازك. احفظه في مكان آمن، مثل التخزين السحابي. لماذا إنشاء نسخة؟ إذا حدث خطأ ما أو قمت بحذف شيء تحتاجه عن طريق الخطأ، فستتمكن من إعادة كل شيء كما كان.

  1. قم بتثبيت مدير ملفات يعمل مع قسم النظام لإزالة البرامج غير الضرورية وإضافة تطبيقاتك الخاصة. المعيار الذهبي هو Titanium Backup.
  2. حدد التطبيقات التي تريد إزالتها وقم بإزالتها من خلال مدير الملفات.
  3. قم بتثبيت التطبيقات التي تريد استبدال التطبيقات المحذوفة بها، واستخدم Titanium Backup لجعلها تطبيقات النظام.
  4. أعد تشغيل جهازك واستمتع بتقدمك.

تغيير البرامج الثابتة لجهة خارجية في أرشيف ZIP

  1. قم بتنزيل ملف البرنامج الثابت الذي تهتم به بتنسيق .zip.
  2. قم بتثبيت مدير ملفات يمكنه العمل مع الأرشيفات، على سبيل المثال، ES Explorer أو Total Commander، وقم بفك محتويات الأرشيف.
  3. قم بإزالة التطبيقات غير الضرورية أو إضافة التطبيقات المفقودة، ثم قم بتعبئة الأرشيف مرة أخرى وانقله إلى جذر بطاقة الفلاش.
  4. باستخدام النسخ الاحتياطي Nandroid (https://play.google.com/store/apps/details?id=com.h3r3t1c.onnandbup&hl=ru) قم بإنشاء نسخة احتياطية من النظام ونسخها إلى محرك أقراص سحابي.
  5. قم بتفليش الجهاز من وضع الاسترداد.

خاتمة

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

هل قمت بتجميع البرامج الثابتة لنظام Android بنفسك؟ ماذا تغير فيه وكيف فعلت ذلك؟ سيكون من المثير للاهتمام إذا شاركت تعليقاتك.

مرحبا حبر!

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

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

لقد مر نصف عام ويتم استخدام البرامج الثابتة المخصصة الخاصة بي بنجاح في جميع أنحاء العالم.

ستناقش سلسلة المقالات هذه كيفية القيام بالبرمجة العكسية لنظام Android، وتنفيذ التصحيحات والتعديلات والتعديلات.

الديباجة

لذا! دعونا أولا نحدد المفاهيم التي سيتم استخدامها فيها منحشرط. ومع ذلك، قد يكون فهمك المعتاد مختلفًا تمامًا.

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

أريد أيضًا أن أشير إلى أنه سيتم أخذ جميع الأمثلة لهاتف HTC، لكن هذا لا يعني أنه لا يمكن استخدام هذه المعلومات على الهواتف الأخرى.

تحضير البيئة

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

1 . أندرويد سك. هذه بيئة تطوير تطبيقات لنظام Android. من أجل إجراء تعديلات، سيكون علينا بالتأكيد التحقق من رمز البرنامج الخاص بنا. بيئة التطوير هي أفضل ما يمكننا استخدامه.
2 . مطبخ أندرويد. ستتيح لك هذه الأداة المساعدة العمل مع صور أقسام النظام الخاصة بالبرامج الثابتة الرسمية أو غير الرسمية.
3 . دينار-واجهة المستخدم الرسومية. برنامج فك رموز جافا. أود أن أشير على الفور إلى أن هذا هو أفضل برنامج فك تشفير من حيث سهولة الاستخدام.
4 . دي جي جافا ديكومبيلر. مفكك آخر، أو مفكك، كما يحلو للبعض أن يسميه، لكود برنامج لغة جافا. إنه ليس مناسبًا للاستخدام، ولكنه يوزع التعليمات البرمجية التي لا يفهمها JD-GUI أحيانًا.
5 . سمالي. مفكك آخر، ولكن هذه المرة كود دالفيك. هناك حاجة إلى smali للتفكيك، وهناك حاجة إلى backsmali لتجميع التعليمات البرمجية.
6 . dex2jar. أداة لتحويل الملفات القابلة للتنفيذ كود Dalvik.

تحويل البرامج الثابتة

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

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

تعديلات مباشرة

إنشاء بقع
كما قلت سابقًا، تم حظر هاتفي في البداية من استخدام Google. حسنًا، بغض النظر عن الأمر، لا يمكنك الذهاب إلى Playstore، ولا يمكنك إعداد حساب، ولا تتم مزامنة دليل الهاتف حقًا. لماذا تحتاج مثل هذا الروبوت؟ بعد البحث لفترة طويلة في سجل الجهاز نفسه، وجدت إدخالات تقول إن استخدام Google محظور. الأمر الأكثر إزعاجًا في Android هو أنك ترى السجل، لكنك لا تعرف أي تطبيق نظام يقوم بإنتاجه. لمعرفة من أين أتت ساقاي، اضطررت إلى تحويل جميع تطبيقات النظام إلى كود جافا المفكك. لقد استغرق الأمر الكثير من الوقت، لكنني ما زلت أستخدم العمل الذي قمت به عند التحليل والعثور على الكود الصحيح. خطوات الحصول على هذه الأدوات هي كما يلي:
1 . قم بعمل DEODEX لجميع البرامج الثابتة
2 . سيلزم تجميع البرنامج الثابت DEODEX الجديد الخاص بك ووميضه على هاتفك. كيف يتم ذلك هو موضوع مقال آخر.
3 . من كل ملف موجود في /system/framework، قم باستخراج ملفclasses.dex وتحويله إلى JAR باستخدام dex2jar.
4 . افتح كل JAR الناتج في JD-GUI وأعد حفظه في كود المصدر
5 . قم بفك شفرة المصدر من الأرشيف.

في النهاية، انتهى بي الأمر بالحصول على عدد من المجلدات يساوي عدد ملفات JAR في /system/framework، وكان لكل مجلد بنية كود مصدر Java.
من خلال التلاعب البسيط، وجدت بسرعة المكان الذي تم فيه إنشاء الإدخالات في logcat.

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

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

الكود كان موجود في الملف HTCExtension.jar، وكان الفصل الذي يحتوي على هذا الروتين الفرعي موجودًا

تفريغ وتحليل الملف الأصلي
1 . أولاً، نحتاج إلى أخذ ملف DEODEX JAR الأصلي، وهو المسؤول عن جزء الكود الذي نحتاجه. في حالتنا هذه HTCExtension.jar.
2 . افتح باستخدام أي أرشيفي واسحب Class.dex من هناك
3 . استخدم محول dex2jar لتحويله إلى ملف JAR. الأمر: dex2jar.bat classs.dex
4 . افتح الملف class_dex2jar.jar الناتج في JD-GUI.
5 . نعم، في أغلب الأحيان يقوم JD-GUI بفك الكود ليس كما يبدو في الأصل، فهو مفهوم، ولكنه قابل للقراءة تمامًا. في الكود المصدري نرى أن الروتين الفرعي يتحقق من معلمات المشروع وعلامة لغة البرنامج الثابت. في حالتنا المؤسفة، يتم إرجاع TRUE.
المنطق المنطقي العام هو China() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (((HtcBuildFlag.Htc_PROJECT _العلم == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return true;
6 . لإجراء التصحيح، نحتاج إلى تفكيك كود Dalvik نفسه. لهذا نستخدم البقسمالي. الطريقة الأكثر ملاءمة هي إنشاء مجلد منفصل ووضع ثلاثة ملفات فيه معًا: HTCExtension.jar, smali.jarو baksmali.jar. أعط الأمر java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

هذه هي واجهة برمجة التطبيقات (API) لإصدار Android الخاص بك. بالنسبة لـ JB فهو 16
- المجلد الذي توجد به جميع أطر البرامج الثابتة.

في حالتي كان الأمر
java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
7 . في المجلد الذي تم إنشاؤه حديثًا، ظهر مجلد HTCExtension وفيه ملفاتنا التي تحتوي على كود Dalvik.
8 . العثور على الملف على طول المسار \com\htc\util\contacts\BuildUtils$Customization.javaوإلقاء نظرة على الكود:
.method public static isChina()Z .registers 3 .prologue const/4 v0, 0x1 .line 276 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xd8 if-eq v1 , v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xda if-eq v1, v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag ;->Htc_PROJECT_flag:S const/16 v2, 0x17 if-ne v1, v2, :cond_14 .line 297:cond_13:goto_13 return v0 .line 283:cond_14 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;-> Htc_PROJECT_flag:S if-ne v1, v0, :cond_1d .line 285 const/4 v1, 0x2 sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:S if-eq v1, v2, :cond_13 .line 291:cond_1d sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x1b if-eq v1, v2, :cond_13 .line 297 const/4 v0, 0x0 goto:goto_13 .end طريقة
9 . مخيف، أليس كذلك؟ لا شيء واضح. لكن هذه مشكلة قابلة للحل. بعد إنشاء عدد قليل من التصحيحات الخاصة بك وبالتالي اكتساب الخبرة، يمكنك بسهولة تعديل التعليمات البرمجية دون أدوات خارجية. في حالتنا، في هذا الرمز
.prologue const/4 v0, 0x1 يعين المتغير v0 القيمة 1، أي TRUE. ثم هناك كافة أنواع الشيكات، وإذا كان الهاتف ليس صينيا، فإن قيمة المتغير تتغير:
.line 297 const/4 v0, 0x0 goto:goto_13
10 . أسهل طريقة لإنقاذ والد الديمقراطية الروسية هي تغيير الكود إلى ما يلي:
.prologue const/4 v0, 0x0 ، أي تغيير قيمة المتغير من 1 إلى 0. أي، بغض النظر عن ذلك، سيتم دائمًا إرجاع القيمة FALSE وسيبدو الكود في JD-GUI ثابتًا عامًا boolean isChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && ( 2 == HtcBuildFlag.Htc_LANGUAGE_flag)) ||(HtcBuildFlag.Htc_PROJECT_flag == 27)) return false;
11 . نعم ستنجح الطريقة لكننا لا نبحث عن طرق سهلة - هذه المرة. ثانياً، إنها ليست جميلة تماماً. أريد رمز شيء من هذا القبيل
المنطق المنطقي العام الثابت هو isChina () (إرجاع خطأ؛)
12 . كيف يمكننا الحصول على كود Dalvik لهذا الكود المصدري؟ للمبتدئين سوف نقوم بخدعة صغيرة.

إنشاء كود دالفيك
1 . افتح أندرويد SDK.
2 . نقوم بإنشاء مشروع جديد ونكتب الكود التالي في فصل الاختبار الوحيد لدينا
package ru.habrahabr.test; اختبار الطبقة العامة (المنطقية العامة الثابتة isChina() (إرجاع خطأ؛))
3 . نقوم بتجميع مشروعنا ثم نأخذ التطبيق المجمع من مساحة العمل.
4 . نضع التطبيق المجمع في المجلد الذي قمنا فيه بحذف ملف JAR.
5 . أعط الأمر java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk
6 . لقد قمنا بتفكيك التطبيق المبني حديثًا إلى كود Dalvik.
7 . افتح ملف test.smali الخاص بنا وشاهد الكود هناك
.method public static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end الطريقة
8 . هذا كل شيء، رمز التصحيح جاهز.
المتداول التصحيح
1 . كود Dalvik مليء بالعلامات التي تشير إلى سطر من التعليمات البرمجية في الملف المصدر الأصلي. يعد ذلك ضروريًا عند عرض الأخطاء، إن وجدت، في برنامجك. يعمل الكود أيضًا بشكل جيد دون تحديد الأسطر.
2 . نقوم بحذف الأسطر التي تحتوي على ترقيم الأسطر، ونسخ واستبدال الطريقة (الروتين الفرعي) في ملفنا \com\htc\util\contacts\BuildUtils$Customization.javaملف.
.الطريقة العامة الثابتة isChina()Z .التسجيلات 1 .prologue const/4 v0, 0x0 return v0 .end الطريقة
3 . حفظ الملف. نعم، نسيت أن أقول أنك بحاجة إلى محرر عادي، على سبيل المثال Notepad++ أو EditPlus. من يحب أي واحد؟
تجميع وبناء ملف JAR مصحح
1 . باستخدام backsmali، قمنا بإتلاف ملف JAR الخاص بنا، والآن نحتاج إلى إعادة تجميعه مرة أخرى.
2 . أعط الأمر java -Xmx512m -jar smali.jar -a 16 HTCExtension -oclasses.dex
3 . يظهر ملف Class.dex في المجلد الخاص بنا
4 . الافتتاح مرة أخرى HTCExtension.jarملف مع أرشيفي واستبدال الموجود فيه classs.dexإلى واحد خلقنا للتو.
5 . هذا كل شيء، لنا HTCExtension.jarيحتوي على كود البرنامج المعدل.
استبدال الملف الأصلي بآخر مصحح
عادة، يتم إنشاء نصوص برمجية خاصة للمستخدمين العاديين، والتي يتم استبدالها عبر الاسترداد. لكننا لسنا مهتمين بهذا. أولاً، إنها طويلة ومملة، وثانيًا، نحن مستخدمون ذوو خبرة ويمكننا تحمل بعض التفاصيل الدقيقة.

1 . يمكنك استبدال ملف العمل الحالي بالأوامر التالية إذا كان لديك بالفعل برنامج DEODEX الثابت ولديك حق الوصول إلى الجذر:

دفع Adb HTCExtension.jar /sdcard/HTCextension.jar adb shell su mount -o remount -rw /system dd if=/system/framework/HTCextension.jar of=/system/framework/HTCextension.jar.back dd if=/sdcard /HTCextension.jar of=/system/framework/HTCextension.jar chmod 644 /system/framework/HTCextension.jar rm /data/dalvik-cache/system@ [البريد الإلكتروني محمي]إعادة تشغيل @classes.dex

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

2 . شكرا لقرائتكم هذه النقطة، لم يتبق سوى القليل.
3 . بعد إعادة التشغيل، سيصبح الرمز المصحح الجديد ساري المفعول.
4 . إذا لم يعمل الرمز أو حدث خطأ، فباستخدام مجموعات بسيطة، يمكنك إرجاع النسخة الاحتياطية.
adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar.back of=/system/framework/HTCextension.jar rm /data/dalvik-cache/system@ [البريد الإلكتروني محمي]إعادة تشغيل @classes.dex

الخاتمة

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

في المقالة التالية سأخبرك بكيفية صنع Tweeks. سيكون هناك مثال لاستخدام التسجيل التلقائي للمكالمات الهاتفية باستخدام أدوات الهاتف الأصلية. شكرًا لكم على اهتمامكم.

ملاحظة. إذا كان هناك شيء غير واضح أو محير، فاطرح الأسئلة - وسأكون سعيدًا دائمًا بالإجابة والشرح.