אתה יכול בקלות להשבית את אימות החתימה של יישום אנדרואיד (APK) באמצעות Xposed Framework, אבל אתה לא צריך לעשות זאת ברוב המוחלט של המקרים.
אם אי פעם ניסית לשנות ולהתקין מחדש יישום מערכת, כנראה שנתקלת בבדיקות חתימות של יישום בצורה כזו או אחרת. או שהסרת את האפליקציה המקורית לפני שהמשכת, או שנתת ל-APK ששונתך שם חבילה אחר כדי לגרום לו להתקין מבלי להסיר תחילה את האפליקציה הישנה. ובכל מקרה, היית גם צריך לחתום מחדש על האפליקציה בעצמך כדי לגרום לה להתקין מלכתחילה.
אתה יכול לעקוף את כל ההתנהגויות הללו על ידי השבתה זמנית של בדיקות חתימות אפליקציה. אבל לפני שניכנס לבשר ותפוחי אדמה המטאפוריים של המאמר הזה ונספר לכם איך לעשות זאת, זה קריטי שנדבר קצת על בדיקות חתימות של יישומים, מה הם עושים ולמה אתה צריך לעולם לא להסיר אותם ברוב המכריע של המקרים.
יסודות אימות חתימות אנדרואיד
כברירת מחדל, מערכת ההפעלה אנדרואיד דורשת את כל יישומים שיש לחתום על מנת להתקין. במונחים בסיסיים מאוד, זה אומר שחתימת האפליקציה משמשת לזיהוי המחבר של אפליקציה (כְּלוֹמַר לאמת את הלגיטימיות שלו), וכן ליצור קשרי אמון בין יישומים עם אותה חתימה. עם הראשון, מובטח לך (במידה סבירה) שאפליקציה עם חתימה תקפה מגיעה מהמפתחים הצפויים. ובאמצעות האחרון, יישומים חתומים עם אותו מפתח פרטי עשויות לפעול באותו תהליך ולשתף נתונים פרטיים. לאחר מכן, כאשר אתה מתקין עדכון אפליקציה, מערכת ההפעלה אנדרואיד בודקת את החתימה הזו כדי לוודא ש: א) ה-APK לא בוצע התעסק בזמן מאז החתימה, וב) האישור של האפליקציה תואם לזה של האפליקציה המותקנת כעת גִרְסָה.
אז איך כל זה משפיע עליי בעולם האמיתי? זה פשוט, באמת. אם אתה משיג APK מחוץ לחנות Google Play ומנסה להתקין אותו כעדכון לאפליקציה המותקנת כעת (קרא: אותו שם חבילה), מערכת ההפעלה תנסה לאמת את האישור של היישום כדי לוודא שהוא הגיע מאותו ראשי תיבות מפתחים. אם האישור תואם, התקנת האפליקציה תתנהל כמתוכנן, האפליקציה שלך תשמור על הנתונים הקיימים שלה, והכל רוטב. אם החתימה אינה חוקית (מה שמצביע על כך שה-APK טופלה) או אם האישור אינו תואם לזה של האפליקציה המקורית, ההתקנה תיכשל. וכאמור קודם לכן, אישור האפליקציה יתאים רק אם הוא חתום עם אותו מפתח פרטי ששימש לחתימה על הגרסה הקודמת. במילים אחרות, אתה יכול להתקין יישום רק אם יש לו חתימה חוקית התואמת את ה-APK תוכן, ואתה יכול להתקין עדכון רק אם האישור שלו תואם גם לזה שנמצא בגרסה הקודמת של האפליקציה.
[לצד הומוריסטי במאמר הצפוף הזה, יש דוגמה אחת מאוד פומבית שבה מפתח חתימה פרטי של אפליקציה אבד או נפגע. אני כמובן מתכוון לאפליקציית Authenticator של גוגל עצמה, שקיבלה עדכון ששינה את שם החבילה שלה מ- com.google.android.apps.authenticator ל com.google.android.apps.authenticator2 בעדכון לפני כשנתיים. בשל שינוי זה, ניתן היה להנפיק את כל העדכונים הבאים של אפליקציית Authenticator רק תחת שם החבילה החדש - עם החתימה החדשה שנוצרה על ידי מפתח החתימה הפרטי החדש.]
מדוע ייתכן שתרצה להשבית (זמנית) את אימות החתימה
כעת, בואו נסתכל על תרחיש פוטנציאלי שבו אולי נרצה להשבית זמנית את אימות חתימת האפליקציה. כפי שהוזכר בתחילת מאמר זה, אימות חתימה יכול להיות קצת כאב ראש בעת שינוי יישומי מערכת קיימים. אם תתקין גרסה שונה של אפליקציית מערכת, לא תוכל לחתום על האפליקציה עם אישור תקף ותואם. במקרים כאלה, בדרך כלל תרצה להסיר תחילה את היישום הקיים, ולאחר מכן להתקין את הגרסה ששונתה כרגיל. אתה יכול גם להשבית את אימות החתימה, אבל עדיף (ובטוח יותר) להשאיר את אימות החתימה מופעל ופשוט להסיר את הגרסה הישנה כדי שהגרסה החדשה תוכל להתקין. עם זאת, זה יכול להיות קצת בעיה אם האפליקציה שאתה מנסה להחליף מכילה נתונים שאתה מעדיף לא לאבד. בהחלט יש דרכים לשמר את הנתונים באופן ידני באמצעות גישת שורש ולהשתלתם לגרסה החדשה של האפליקציה, אך ייתכן שמשתמשים ירצו פשוט להשבית את אימות החתימה באופן זמני ולאחר מכן להמשיך את הבדיקות לאחר מכן. לחילופין כפי שציין חבר בכיר XDA mcbyte_it בהערות, זה יכול להיות שימושי גם בפיתוח יישומים.
כיצד לעשות זאת
עד כה, השבתת אימות החתימה הייתה פתרון נורא לכל בעיה כמעט. הסיבה לכך היא שכאשר אתה עושה זאת, אתה בעצם זורק את ההגנה המובנית של אנדרואיד שמוודאת שהאפליקציות שלך לא טופלו ושהעדכונים שלהן מגיעים מהמקור מפתחים. אבל עכשיו הודות לקסם של Xposed Framework, אתה יכול להשבית זמנית את אימות החתימה ולהפעיל אותו מחדש לאחר שתסיים להתקין את האפליקציה ששונתה. מודול Xposed אחד כזה זה יכול לעשות בדיוק זה שוחרר לאחרונה על ידי חבר בכיר XDA פילר, וזה עובד כמתוכנן עבור כל המכשירים המסוגלים להריץ Xposed. בדרך זו כאשר ברצונך להתקין עדכון יישום שונה שלא נחתם כראוי, אתה יכול פשוט הפעל את המודול, אתחל מחדש, התקן את עדכון האפליקציה שהשתנה, השבת את המודול, אתחל מחדש ותהיה בשמחה דֶרֶך.
כעת, כשאתה יודע כיצד להשבית זמנית את אימות החתימה, חשוב לחזור ולהדגיש עד כמה חשוב זה להשאיר את אימות החתימה מופעל בכל עת, אלא אם יש לך סיבה מאוד מאוד טובה להשבית זה. ככזה, אתה צריך באמת להשתמש בכלי כזה רק כדי להחיל עדכוני יישומים שאתה יוצר בעצמך ומתי ישנן נסיבות מקלות המחייבות אותך לעשות זאת במקום פשוט להסיר תחילה את האפליקציה הישנה.
היו בטוחים, והשתמשו בזה בתבונה.