کالبدشکافی ASIF؛ فرمت دیسک ایمیج تازهٔ اپل
خلاصهٔ کاملتر
تو WWDC 2025 اپل macOS Tahoe رو معرفی کرد و یکی از قابلیتهای تازهش یه فرمت دیسک ایمیج جدید به اسم ASIF بود. این فرمت برای استفاده تو ماشینهای مجازی طراحی شده (مستنداتش زیر فریمورک Virtualizationه) و خیلی از فرمتهای دیسک مجازیِ موجود الهام گرفته؛ عملاً یه فرمت دیسک مجازیِ اسپارس ه، شبیه VMDK و VHDX و QCOW2، که بهت اجازه میده یه دیسک یا فایل بزرگ رو به شکل «تُنُک» و فشرده ذخیره کنی.
نویسنده (Erik Schamper) میگه کمی قبل از عرضهٔ Tahoe فکر کرده نوشتن یه parser برای فایلهای ASIF تمرین جالبیه، و حالا برگشته تا روند کارش رو نشون بده؛ بهخصوص برای کسایی که با مهندسی معکوسِ فرمتهای فایل تازه آشنا میشن. اول یه فایل تست با دستور خودِ مستندات اپل میسازه، یه الگوی قابلتأیید (بلوکهای ۱ مگابایتی شمارهدار) توش مینویسه و از همونجا شروع میکنه.
قدم اول به گفتهٔ نویسنده «نگاهکردن به هگزدامپها»ست تا سرنخها بیرون بیفتن. اونجا یه magic اول فایل و بعدش یه سری عدد صحیحِ big-endian دیده میشه. اون یه ساختار خام برای هدر حدس میزنه و با ابزار dissect.cstruct بازترش میکنه؛ یه تکنیک عملی هم میده: فایل رو از چپ به راست تو تکههای ۴ و ۸ بایتی اسکن کن تا عددهای منطقی (گرد در مبنای ۱۶ یا همخون با آفستِ فایل) پیدا بشن.
بعد از مهندسی معکوسِ باینریِ diskimagescontroller، نویسنده ساختار فرمت رو توضیح میده: هدر یه فیلد directory_offsets داره که به یه «دایرکتوریِ تخصیص» اشاره میکنه. هر دایرکتوری با یه نسخه (version) شروع میشه و دایرکتوریِ با بالاترین نسخه، فعاله؛ همین اجازهٔ بهروزرسانیِ اتمیک میده. هر دایرکتوری یه فهرست از جدولها داره و هر جدول یه فهرست از «ورودیهای داده» که هرکدوم به یه تکه (chunk) از فایل ASIF اشاره میکنن.
اندازهٔ هر chunk تو هدر تعریف میشه و معمولاً ۱ مگابایته. ورودیهای داده ۵۵ بیت برای شمارهٔ chunk و ۹ بیت برای فلگها دارن، و بیشترین اندازهٔ دیسک مجازی با اندازهٔ پیشفرضِ chunk کمی زیر ۴ پبیبایته، با یه بخش کوچیک ته کار که برای متادیتا رزرو شده. متادیتا هم یه هدر کوچیک و یه plist داره. دو بیتِ فلگِ هر ورودی، وضعیت اون chunk رو مشخص میکنه:
0b00 (uninitialized)
0b01 (fully initialized)
0b10 (unmapped)
0b11 (has bitmap)به گفتهٔ نویسنده، اگه قبلاً کار فرمتهای اسپارسِ دیگه مثل VMDK و VHDX و QCOW2 رو دیده باشی، ASIF یه فرمت نسبتاً ظریف و سادهست. سختترین بخشِ مهندسی معکوس، همون منطقِ رفتن از یه آفستِ دلخواه داخل دیسک مجازی به یه chunk تو فایل بود، چون این ریاضی بین چند تابع پخش شده بود؛ ولی بعد از فهمیدنِ اون، اضافهکردن بقیهٔ اطلاعات به پیادهسازی کار سرراستی بوده.
نکات کلیدی:
- ASIF فرمت دیسک ایمیج جدید اپل تو macOS Tahoe، مخصوص ماشینهای مجازیه
- یه فرمت اسپارس شبیه VMDK و VHDX و QCOW2ه که دیسک بزرگ رو فشرده نگه میداره
- روند مهندسی معکوس: هگزدامپ، حدسِ ساختار هدر و بازکردنش با dissect.cstruct
- ساختار: هدر با directory_offsets، دایرکتوریِ تخصیص، جدولها و ورودیهای دادهٔ اشارهگر به chunk
- هر chunk معمولاً ۱ مگابایته؛ ۵۵ بیت شمارهٔ chunk، ۹ بیت فلگ، و سقفِ حدود ۴ پبیبایت




