TL; DR על המפתח לבחור אילו חלקים מהאפליקציה ייחתמו והאם התעסקות עם אותם חלקים תביא לפעולות כלשהן בעת הפעלת האפליקציה. עליכם להשתמש בניסוי וטעייה בכדי להבין זאת על בסיס יישום אחר אפליקציה.
במידה רבה, על המפתח להחליט אילו רכיבים בחבילת היישומים שלהם מיוצגים ב- חותם שנחתם לפני שהם מגישים את בקשתם. כל דבר בחותם הוא למעשה חסין טמפר מכיוון שלרוב אי אפשר לשנות את הדברים האלה מבלי לשנות את חתימות החשיש שלהם. אבל זה לא אומר בעצם שלא תוכלו להתעסק איתם.
במדריך למפתחים של אפל יש את זה לומר על מה עליכם לחתום:
עליך לחתום על כל הפעלה במוצר שלך, כולל יישומים, כלים, כלי עזר מוסתר, כלי עזר וכו '. חתימה על חבילת יישומים מכסה את המשאבים שלה, אך לא את רכיבי המשנה שלה כגון כלים וחבילות משנה. יש לחתום על כל אחד מאלה באופן עצמאי.
אם היישום שלך מורכב מחלק ממשק משתמש גדול עם כלי עוזר אחד או יותר המנסים להציג פנים בודדות למשתמש, אתה יכול להפוך אותם ללא הבחנה לחתימת קוד. על ידי מתן לכולם אותו מזהה חתימת קוד בדיוק. (אתה יכול לעשות זאת על ידי לוודא שלכולם יש את אותו ערך CFBundleIdentifier ב Info.plist שלהם, או על ידי שימוש באפשרות -i בפקודה codesign, כדי להקצות אותו מזהה.) במקרה זה, לכל רכיבי התוכנית שלך יש גישה לאותם פריטי מחזיק מפתחות ותוקף כמו אותה תוכנית. עשה זאת רק אם התוכניות המעורבות אמורות באמת ליצור ישות אחת, ללא הבחנות.
בינארי אוניברסלי (צרור או כלי) מוחל באופן אוטומטי חתימות בודדות על כל רכיב ארכיטקטורה. אלה אינן תלויות, ובדרך כלל רק הארכיטקטורה המקומית במערכת של משתמש הקצה מאומתת.
במקרה של חבילות מתקינים (חבילות .pkg ו- .mpkg), הכל חתום באופן מרומז: בארכיון ה- CPIO המכיל את המטען, בארכיון ה- CPIO המכיל סקריפטים להתקנה ושטר החומרים (BOM) כל אחד מתועד ב- hash בכותרת ה- XAR, וכותרת זו בתורה נחתמת. לכן, אם תשנה סקריפט התקנה (למשל) לאחר חתימת החבילה, החתימה תהיה לא חוקית.
ייתכן שתרצה גם לחתום על התוספים והספריות שלך. למרות שזה לא נדרש כרגע, זה יהיה בעתיד, ואין חסרון שיש חתימות על רכיבים אלה.
בהתאם למצב, סימן קודי עשוי להוסיף לקובץ ההפעלה של Mach-O שלך, הוסף תכונות מורחבות אליו, או צור קבצים חדשים בספריית התוכן של החבילה שלך. אף אחד מהקבצים האחרים שלך לא שונה.
כמו כן מכאן זה לא בהכרח נכון שיש חתימה לא חוקית ליישום שמשמעותו שהוא לא יופעל. הדף אומר:
על המערכת או על התוכנית להפעיל או לטעון קוד חתום להחליט אם לאמת את החתימה, ואם כן, לקבוע כיצד להעריך את התוצאות של אימות זה.
יישום עשוי לבחור לאפשר שינויים.
הפתרון הטוב ביותר שלך הוא גישה לניסוי וטעייה בכל יישום שאתה מנסה לשנות. יכול להיות שזה יעבוד, אולי לא. אין תשובה אמיתית תמיד שניתן לתת.
אם אפליקציה הוחתמה אתה יכול לחפש קובץ תוכן / CodeResources
או תוכן / _CodeSignature / CodeResources קובץ
בחבילה. קובץ זה מפרט את כל הרכיבים החתומים ואת ערכי ה- hash הצפויים שלהם בחבילה. זה מקום טוב להתחיל להבין אילו חלקים ביישום מפתח רואה קריטי מספיק כדי לצפות בשינויים.