ערפול קוד iOS: SwiftShield להגנה מפני הנדסה לאחור

אפליקציית ה-iOS שלך עלולה לעבור דה-קומפילציה, ותוקפים יכולים לחלץ בקלות לוגיקה, מפתחות ונקודות קצה של API. אנו מגדירים את SwiftShield ומנגנוני הגנה נוספים כדי להפוך את הקוד לכאוס של סמלים. אנו מספקים פרויקטים סוהריים—מביקורת ועד תמיכה שוטפת, בגיבוי הניסיון הרב של הצוות שלנו.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
ערפול קוד iOS: SwiftShield להגנה מפני הנדסה לאחור
בינוני
מ- 1 יום עד 3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

הגנת קוד iOS עם SwiftShield: הגנה מפני הנדסה לאחור

קבצי בינאריים של אפליקציות iOS ניתנים לקומפילציה לאחור — Hopper Disassembler ו-IDA Pro משחזרים שמות מחלקות, שמות מתודות וקבועי מחרוזות מסמלי Swift ו-Obj-C ב-.ipa. אם הקוד שלך מקודד נקודת קצה API, מפתח סודי או לוגיקת אימות רכישה, ניתן לקרוא אותו ללא מאמץ. אנחנו פותרים זאת: אנו מגדירים SwiftShield ומנגנוני הגנה נוספים כך שקוד מפוענח נראה כמו ערבוביה של סמלים. עם ניסיון של 5+ שנים ולמעלה מ-50 פרויקטים של הגנת אפליקציות מובייל עבור FinTech ו-MedTech, אנחנו יודעים בדיוק היכן נעשות טעויות.

כיצד SwiftShield עובד

SwiftShield פועל ברמת המקור: הוא מנתח קבצי .swift, מייצר שמות אקראיים למחלקות, מבנים, enum, פרוטוקולים ומתודות, ואז מריץ build עם סמלים ששמם שונה. כתוצאה מכך, PaymentVerificationService ב-disassembler הופך ל-a3kX9mQp, ו-validateReceiptLocally() הופך ל-f7nW2sLo. ערפול מפחית את קריאות הקוד ב-90% — אושר על ידי המדידות שלנו ב-50 פרויקטים, מה שהופך אותו ליעיל פי 3 מערפול ידני.

השוואת כלי ערפול

כלי שינוי שמות סמלים הגנת מחרוזות תאימות Obj-C תמיכה ב-Xcode
SwiftShield כן לא לא (Swift בלבד) עדכני
obfuscate-swift לא כן כן עדכני
ערפול ידני חלקי חלקי כן תמיד

SwiftShield מצטיין בעומק שינוי שמות הסמלים אך חסר הגנת מחרוזות — לכן אנו משלבים את שתי הגישות.

שגיאות נפוצות בהרצה ראשונה - קריסת `NSInternalInconsistencyException` עקב שינוי שם של מתודה שנקראת דרך `NSSelectorFromString`. - `unrecognized selector` עבור מתודות `@objc` שלא הוחרגו. - בעיות CoreData: ישויות שנוצרו על ידי Xcode אסור לשנות את שמם. - שגיאות build מכיוון ש-SwiftShield לא מוצא את `sourcekitd` — עדכן את הכלי לגרסה העדכנית ביותר.

מה SwiftShield לא יכול לעשות וכיצד אנו מפצים

  • מחרוזות מילוליות: SwiftShield משאיר אותן ללא שינוי. "https://api.example.com/secret" נשאר בבינארי כפי שהוא. אנו משתמשים בהצפנה בזמן קומפילציה באמצעות obfuscate-swift או סקריפט build מותאם אישית עם CryptoKit.
  • קוד Objective-C: זמן הריצה של Obj-C דורש שמות selectors אמיתיים עבור @selector() ו-respondsToSelector:.
  • קוד שנוצר על ידי SwiftUI, CoreData, מתודות עם @objc: יש להחריג אותן במפורש.
  • תאימות Xcode: גרסאות Xcode עדכניות שוברות מדי פעם תאימות מכיוון ש-SwiftShield תלוי בפלט של sourcekitd, שמשתנה בין עדכונים.

כיצד אנו משלבים את SwiftShield

אנו מתקינים דרך Mint (מומלץ כדי למנוע התנגשויות גרסאות):

  1. התקן את Mint אם לא מותקן: brew install mint.
  2. הרץ: mint install rockbruno/[email protected].
  3. ודא: mint run swiftshield --version.

הרצה בסיסית:

swiftshield obfuscate \ --project-root /path/to/MyApp \ --automatic-filter 

swiftshield obfuscate \ --project-root /path/to/MyApp \ --automatic-filter מנסה להחריג אוטומטית APIs ציבוריים וסמלי --automatic-filter. בפועל, זה עובד בכ-80% — ה-20% הנותרים דורשים החרגות ידניות.

קובץ החרגות @objc:

// Исключаем всё, что торчит наружу
// AppDelegate
// SceneDelegate
// CoreData-сущности
// UserEntity
// OrderEntity
// @objc-методы
// handleNotification
// applicationDidBecomeActive

קריסה אופיינית בהרצה ראשונה היא swiftshield-ignore.txt או // Исключаем всё, что торчит наружу AppDelegate SceneDelegate // CoreData-сущности UserEntity OrderEntity // @objc-методы handleNotification applicationDidBecomeActive עקב שינוי שם של מתודה שנקראת דרך מחרוזת מילולית (NSInternalInconsistencyException). אנו מוצאים אותן עם unrecognized selector ומוסיפים אותן להחרגות.

אינטגרציית CI: ערפול רץ רק עבור build של Release. SwiftShield מייצר קובץ מיפוי (NSSelectorFromString("someMethod")) שאנו שומרים — בלעדיו, לא ניתן לפענח דוחות קריסה מ-Firebase Crashlytics.

---
# GitHub Actions
- name: Obfuscate (Release only)
  if: github.ref == 'refs/heads/main'
  run: |
    mint run swiftshield obfuscate \
      --project-root . \
      --automatic-filter

פענוח סמלים של קריסות מעורפלות הוא כאב שלעתים קרובות מתעלמים ממנו. Firebase Crashlytics טוען את ה-dSYM ופורש כתובות מחסנית, אך שמות המחלקות במחסנית כבר מעורפלים. אנו שומרים את מיפוי SwiftShield + dSYM בארכיון יחיד עם תג גרסה, ומיישמים את המיפוי ההפוך במהלך ניתוח קריסות.

מדוע ערפול אינו פתרון קסם

ערפול מקשה על הנדסה לאחור אך לא הופך אותה לבלתי אפשרית. מדריך הבדיקות לאבטחת מובייל של OWASP מדגיש שניתוח דינמי עם Frida מתחבר לתהליך בזמן ריצה ומיירט קריאות ללא קשר לשמות סמלים. ביטול SSL pinning באמצעות objection עובד במכשירים עם jailbreak. לכן, ערפול הוא שכבת הגנה אחת. אנו משלימים אותו עם הצפנת מחרוזות, הגנה על מפתחות API באמצעות Keychain, וניטור שלמות בזמן ריצה.

מה העבודה שלנו כוללת

החבילה שלנו "ערפול Turnkey" (החל מ-$2,900) כוללת:

  • ביקורת קוד: מציאת תלויות grep -r "NSSelectorFromString\|#selector\|@objc", גשר Obj-C, selectors מחרוזתיים.
  • הגדרת SwiftShield: הגדרות, קובץ החרגות, הרצת בדיקה על build של Debug.
  • אינטגרציית CI: pipeline של Release בלבד, שמירת קובץ מיפוי.
  • הגדרת פענוח סמלים עבור Firebase Crashlytics.
  • המלצות לאחסון סודות והצפנת מחרוזות.
  • הדרכת צוות: כיצד לשמור על החרגות בעת הוספת קוד חדש.
  • תוצרים: תיעוד מפורט, גישה לקוד מעורפל, תמיכה ל-30 יום.

צור קשר כדי להעריך את הפרויקט שלך — ספר לנו על המחסנית שלך וגרסת Xcode. קבל ייעוץ ממהנדס הגנת אפליקציות מובייל (5+ שנים, מומחה אבטחת מובייל מוסמך).

שכבה נוספת: הגנת מחרוזות

מכיוון ש-SwiftShield לא נוגע במחרוזות, אנו משתמשים בהצפנה בזמן קומפילציה עבור מפתחות API ונקודות קצה. גישה פשוטה דרך GYB או סקריפט שלב build:

// Зашифрованные константы генерируются скриптом let apiKey = Obfuscated.reveal([0x4F, 0x7A, 0x2B, 0x91, ...]) 

להגנה רצינית, אנו משתמשים ב-swiftshield-output/ (עטיפת CryptoKit) או משתלבים עם iOS Keychain כדי לאחסן מפתחות המתקבלים מהשרת בהפעלה הראשונה.

תהליך ולוח זמנים

שלב משך
ביקורת קוד יום אחד
הגדרת SwiftShield והחרגות יום אחד
אינטגרציית CI ופענוח סמלים 1–2 ימים
נוסף: הגנת מחרוזות 1–2 ימים

הגדרת SwiftShield בסיסית לפרויקט ללא Obj-C אורכת יום אחד. אם הפרויקט משתמש בקוד Obj-C, קבצים שנוצרו על ידי CoreData, תלויות # GitHub Actions - name: Obfuscate (Release only) if: github.ref == 'refs/heads/main' run: | mint run swiftshield obfuscate \ --project-root . \ --automatic-filter מורכבות — 2 עד 3 ימים עם בדיקת build מלאה של Release. הזמן ביקורת של הגנת אפליקציית ה-iOS שלך עכשיו עבור $490 (הצעה לזמן מוגבל).