נתנו לי את המכשיר הזה לעריכת ROM, והיה בו כל מיני דברים מעניינים. אז אני משתף כאן את התהליך באופן כללי, יש שלבים שלא מתוארים כאן כי אני רוצה לשמור את המידע שגיליתי אצלי.

נתחיל ממידע על המכשיר. (SM-A065F)

   
תאריך יציאה 22.8.24
גרסת אנדרואיד 14
מעבד Mediatek Helio G85 (12 nm)
ROM\RAM 64\4
משקל 189 גרם

אנדרואיד 14? וואלה, כיף. לא עבדתי עם גרסת האנדרואיד הזו אף פעם עד למכשיר הזה, ויש בה כל מיני דברים שהשתנו מהגרסאות הקודמות כמו שנראה בהמשך.

שלב 1 - רוט

בקצרה: די פשוט. תורידו מsamfw את הקושחה, תתקנו את הAP עם Magisk, תפתחו בוטלואדר ותצרבו.

אבל אני הסתבכתי קצת יותר 😊

דבר ראשון, טעות טיפשית שלי – אני לא מתעסק הרבה עם סמסונג, אז שכחתי שצריך לחבר את המכשיר לרשת כדי לפתוח בוטלואדר. אז הסתבכתי קצת… אחרי שנזכרתי בזה ופתחתי את הבוטלואדר, ניסיתי להתחיל מTWRP, שאפשר למצוא כאן

אבל… אחרי צריבה של הTWRP, המכשיר בבוטלופ ולא עולה בכלל. אז חיפשתי, ומסתבר שצריך לעשות רצף פעולות:

  1. מיד אחרי הצריבה – לפני שעולה למערכת – להפעיל ישירות לריקברי. (ללחוץ בהדלקה של המכשיר על מקש ההדלקה+ווליום עליון).
  2. TWRP יופיע. נעשה את רצף הפעולות הבא Wipe>advanced wipe>/Data>change file system>ext4 (יתכן שאחת האופציות תהיה כתובה קצת אחרת)
  3. דרך תפריט reboot, להפעיל מחדש למצב ריקברי.
  4. Wipe>format data>yes
  5. נכנס לתפריט Advanced ונבחר terminal
  6. נקליד פעמיים את הפקודה multidisabler .
  7. חזרה למסך הראשי, תפריט reboot, לrecovery.
  8. המכשיר יופעל מחדש לTWRP. נכנס שוב לשינוי סוג מחיצה, ונשנה בחזרה את data לf2fs.
  9. עכשיו אפשר לצרוב Magisk דרך הTWRP! או שלא… לי זה לא עבד, למרות שזה מה שכתבו כאן.

ואחרי כל התהליך הזה, בהפעלה מחדש רגילה (שעכשיו תעבוד) ישוחזר הריקברי המקורי…

שלב 2 – עריכת מחיצות system, vendor, product

נהדר, צרבנו רוט. עכשיו, אנחנו רוצים לעשות שינויים במחיצת /system – אבל היא read-only, ופקודות בטרמינל לא יסדרו את זה, כי היא מערכת קבצים EROFS, שהיא בהגדרה Read-only. אז צריך ליצור super.img חדש שהמחיצות בו הם ext4. נשתמש בשביל זה במודול Magisk – ro2rw, לפי המדריך כאן.

אבל, עדיין, דברים מסתבכים. הכל עובד, אבל אם נצרוב קושחה מקורית ועליה את את הקושחה לעריכה שהכנו, המכשיר יכנס לבוטלופ… מה הסיפור? את הפיתרון שמצאתי כתבתי בשרשור הרלוונטי בXDA, ואכתוב גם כאן.

ואז שמתי לב לדבר מעניין בלוגים של מודול הMagisk הזה. הוא מתקן גם את מחיצות vendor_boot וboot תוך כדי התהליך. גיביתי אותם עם dd, ועכשיו הכל עובד תקין.

dd if=/dev/block/by-name/boot of/sdcard/boot.img

dd if=/dev/block/by-name/vendor_boot of/sdcard/vendor_boot.img

שלב 3 – עריכות ספציפיות

א. הסרת אפליקציות.

להעיף את האפליקציות שאני לא רוצה זה קלי קלות, בודקים מה הPackageName שלהם, מבררים איפה הם בsystem עם הפקודה

pm path your.package.name

ומוחקים את הקובץ.

ב. חסימת התקנות וADB.

הכי פשוט זה לחסום התקנת קבצי APK: נמחק את הסטרינג של חלונית ההתקנה מהapk, וככה כל פעם היא תקרוס.

חסימת התקנות מגוגל פליי זה גם פשוט מאוד, להוסיף את השורות האלו לקובץ הhosts.

127.0.0.1 play-lh.googleusercontent.com

127.0.0.1 play-fe.googleapis.com

והמכשיר לא יוכל לגשת לכתובות האלו, שחיוניות לפעולתה של חנות פליי. אבל במקרה שלי, רציתי גם להעלים את חנות גוגל פליי ממסך הבית ומההגדרות. (ככה שאפילו עריכה של הAPK לא תספיק). אז החלפתי מסך בית, למסך בית מותאם אישית שלי. לקחתי את Fossify Launcher, וערכתי את קוד המקור, ככה שבOnCreate של המסך הראשי תרוץ פקודת shell להסרת גוגל פליי מהמשתמש (לא מהמערכת, מה שיגרום לשיבושים). למשל:

su -c pm uninstall -k –user 0 com.android.vending

זה כמובן דורש רוט. אז ערכתי את Maigsk ככה שיתן הרשאות רוט באופן אוטומטי וללא התראה, כדי למנוע התערבות של המשתמש. כן, זה מהווה פרצת אבטחה, אבל בכל מקרה א”א להתקין שום דבר על המכשיר. את Magisk הכנסתי למערכת – והרווחתי שני דברים ביחד:

א. הוא נצרב מראש עם הקושחה.

ב. א”א להתקין מודולי Magisk אם הMagisk נמצא במערכת, מה שמונע עוד אופציה לפריצת המכשיר.

חסימת adb הייתה גם היא פרוייקט בפני עצמה. לערוך את אפליקציית ההגדרות כך שאי אפשר יהיה להפעיל מצב מפתחים, כמו שהייתי עושה תמיד, אי אפשר, כי מאז אנדרואיד 13 יש אימות חתימות על אפליקציות המערכת (לא רלוונטי למתקין החבילה, שהוא של גוגל, אז בכל מקרה מגיע עם חתימה שונה, למרבה המזל). רציתי למחוק אם כן, את הקובץ שאחראי על הdeamon של adb במכשיר, הלא הוא adbd. אבל… בכל הגרסאות האנדרואיד עד 14, הקובץ היה בsystem/bin, אז היה אפשר למחוק אותו, אבל עכשיו הוא מודול APEX. מודול APEX נמצא בנתיב אחר במערכת, אבל לא זו הבעיה. מודולי APEX הם מודולים שגוגל יכולה לעדכן דרך שירותי גוגל, ללא קשר ליצרן המכשיר. יחד עם Project treble, זה ממשיך את הכיוון של גוגל בשנים האחרונות להפוך את אנדרואיד למערכת כמה שיותר גנרית ופחות תלויה בחומרה וביצרן הספציפי. אז מה הבעיה?

2 בעיות, למעשה.

א. מחיצת APEX לא ניתנת לעריכה.

ב. הבעיה היותר קשה – כי את הקודמת ניתן לפתור – היא שגם אם נמחק משהו מAPEX, גוגל תעדכן אותו בחזרה.

אז ניסיתי כל מיני טריקים ולא הצלחתי. בסוף, החלטתי לטפל בזה דרך קבצי הrc, שהם סקריפטים שרצים מיד בהדלקת המכשיר. בהתחלה ניסיתי פשוט להריץ בהדלקה stop adbd, אבל לא הצלחתי. אבל גם אם הייתי מצליח, זה לא היה עוזר, כי המכשיר היה מפעיל את השירות מחדש כשהמשתמש בוחר להפעיל… מה שעשיתי, היה לערוך את קובץ הrc שאחראי על מה שקורה כשUSB מתחבר – וכיביתי דרכו את adbd. הבעיה היא, שהמכשיר אומנם כבר לא תמך בadb בusb – אבל עדיין דרך wifi. בשלב הזה נמאס לי והחלטתי להיות פחות ספציפי ואלגנטי… פשוט חיפשתי בכל קבצי הrc את הפקודות להפעלת adbd, והשבתתי אותם. וזה עבד! כעת, כל ניסיון להפעיל ניפוי באגים – בUSB או אלחוטי, מקריס את המכשיר.

אז עד כאן להיום 😊.