אנדרואיד 13 מציגה ABI למרחב משתמש כדי להעביר את מצב ה-MTE המבוקש למטען האתחול. זה יכול לשמש כדי להפעיל MTE במכשירים שיש להם תמיכה בחומרה אבל לא נשלחים עם MTE מופעל כברירת מחדל, או כדי להשבית MTE במכשירים שנשלחים איתו.
תמיכה בטעינת האתחול
כדי לתמוך ב-ABI זה, טוען האתחול שלך צריך לקרוא את misc_memtag_message
(מוגדר ב- bootloader_message.h ) מהמחיצה misc
. אם נמצא misc_memtag_message
חוקי ( MISC_VIRTUAL_AB_MAGIC_HEADER
תואם, ומספר הגרסה נתמך), טוען האתחול מחשב
memtag = (default_memtag && !(misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_OFF)) || misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG || misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_ONCE memtag_kernel = misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL || misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
default_memtag
היא הגדרת ברירת המחדל של ה-mtag on/off עבור מק"ט. אם memtag
נכון, טוען האתחול מגדיר שמירת תג MTE, מאפשר בדיקת תגים ברמות החריג הנמוכות יותר, ומעביר את האזור השמור לתג לקרנל באמצעות DT. אם memtag
הוא שקר, טוען האתחול מוסיף arm64.nomte לשורת הפקודה של הליבה.
אם memtag_kernel
נכון, טוען האתחול מוסיף את kasan=on
לשורת הפקודה של הליבה.
טוען האתחול חייב לנקות MISC_MEMTAG_MODE_MEMTAG_ONCE
ו- MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
בכל אתחול.
אם טוען האתחול תומך fastboot oem mte
, אז על מגדיר את MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
ל- (1, 0, 0)
וכבוי ל- (0, 0, 1)
, תוך שמירה על הדגלים האחרים.
עליך להגדיר את המוצר שלך לבנות את הקובץ הבינארי mtectrl
לתמיכה במרחב המשתמש. לאחר מכן, הגדר את מאפיין המערכת ro.arm64.memtag.bootctl_supported
כדי לציין למערכת כי טוען האתחול שלך תומך בהודעת memtag.
ממשק משתמש
כאשר המאפייןro.arm64.memtag.bootctl_supported
מוגדר, כפתור בתפריט אפשרויות המפתח מאפשר למשתמש לאתחל פעם אחת עם MTE מופעל. קהל היעד לכך הוא מפתחי אפליקציות שרוצים לבדוק את האפליקציות שלהם עם MTE. מאפיין מערכת
לשימוש מתקדם, מאפיין המערכת arm64.memtag.bootctl
יכול לקחת רשימה מופרדת בפסיקים של הערכים הבאים:
- memtag: אפשר באופן קבוע MTE במרחב משתמש (הגדר
MISC_MEMTAG_MODE_MEMTAG
) - memtag-once: אפשר MTE במרחב משתמש פעם אחת (קבע
MISC_MEMTAG_MODE_MEMTAG_ONCE
) - memtag-kernel: אפשר MTE של kernel-space (הגדר
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) - memtag-kernel-once: אפשר MTE של kernel-space פעם אחת (
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) - memtag-off: השבת MTE (הגדר
MISC_MEMTAG_MODE_MEMTAG_OFF
)
יש לאתחל את המערכת כדי שההגדרה החדשה תיכנס לתוקף (כפי שהיא מיושמת על ידי טוען האתחול).