وقتی اپ مک موقع باز شدن کرش میکنه، لاگ چی میگه؟
خلاصهٔ کاملتر
این مقاله مکمل یه راهنمای قبلیه و توضیح میده وقتی یه اپ مک بهمحض باز کردن کرش میکنه، چطور علتش رو توی unified log پیدا کنی. چهار علت رایج برای این کرشهای زودهنگام هست: مک عمداً اپ رو بهخاطر ایراد امضای کد یا یه نقص امنیتی جدی بسته؛ اپ بهخاطر translocation شکست خورده؛ اپ نتونسته یه سند خراب یا ناسازگار رو باز کنه؛ یا اپ با فایل تنظیماتش (Preferences) مشکل داره.
روش کار مبتنی بر زمانبندی دقیق دابلکلیکه. نویسنده پیشنهاد میده مقدار ثانیه رو توی ساعت نوار منو نشون بدی، اپ رو حدود ثانیهی ۴۵ انتخاب کنی و دقیقاً سر ثانیهی ۰۰ دابلکلیک کنی و حداقل ۵ ثانیه دست به ماوس و کیبورد نزنی تا کرش رخ بده. بعد با ابزار LogUI پنج ثانیه لاگ از ثانیهی ۰۰ رو استخراج میکنی. خودِ دابلکلیک توی لاگ راحت پیدا میشه؛ با چهار ورودی فعالیتِ تقریباً یکسان مربوط به Finder sendAction: مشخص میشه و اتفاق بعدی بلافاصله بعدش گزارش میشه.
خطاهای امضای کد معمولاً سادهترین برای تشخیصان، چون با فراخوانی بررسی امضا (مثل SecKeyVerifySignature) شروع میشن و بعد یه کد عددی چندبار تکرار میشه. بعدش AMFI (یعنی Apple Mobile File Integrity) امضا رو دوباره بررسی میکنه و در نهایت کرنل پروسه رو میبنده. کدهای عددیِ رایج شامل ۶۷۰۶۲- (کد اصلاً امضا نشده، که شایعترینه)، ۶۷۰۳۰- ، ۶۷۰۶۱- (امضا یا کد تغییر کرده) و چند مورد دیگهست. توی مثال مقاله، نویسنده فقط یه کاراکتر توی Info.plist عوض کرده که CDHashها رو شکسته و دقیقاً کد ۶۷۰۳۰- رو تولید کرده.
برای translocation باید دنبال دو نشونه باشی: ذکر ساخت یه دایرکتوری امن برای translocation و اجرای اپ از مسیر AppTranslocation. مشکل باز نشدن سند سختترین برای پیداکردنه، چون معمولاً فقط خود اپ میدونه چی شده و بیشتر اپهای شخصثالث چیز مفیدی توی لاگ نمینویسن. برای مشکل تنظیمات هم باید دنبال این باشی که کرش کمی بعد از وصل شدن سرویس cfprefsd به اپ و موقع لود تنظیمات رخ داده. توی همهی این موارد، فیلترکردن لاگ بر اساس نام اپ توی LogUI کار رو راحتتر میکنه.
نکات کلیدی:
- چهار علت رایج کرش زودهنگام: خطای امضای کد، translocation، باز نشدن سند و مشکل تنظیمات
- روش: زمانبندی دقیق دابلکلیک و استخراج ۵ ثانیه لاگ با LogUI
- خطای امضای کد راحتترین برای تشخیصه؛ کد ۶۷۰۶۲- (امضانشده) شایعترینه
- translocation با مسیر AppTranslocation و مشکل تنظیمات با اتصال cfprefsd شناسایی میشه




