چگونه خطای CTS Profile Mismatch در اندروید را برطرف کنیم؟

سیستم جدید SafetyNet اندروید باعث می شود برخی از اپلیکیشن های خاص بتوانند کاربرانی که دارای دسترسی روت هستند را مسدود کرده و یا به طور کلی از دسترسی شما به آن ها جلوگیری کند. ولی خوشبختانه هنوز راه هایی برای دور زدن این محدودیت وجود دارد.

چگونه خطای CTS Profile Mismatch در اندروید را برطرف کنیم؟

کلیک - شما می توانید با استفاده از اپلیکیشن Magisk از بیشتر موانع ایجاد شده توسط SafetyNet عبور کنید، ولی در بعضی از موارد امکان پشت سر گذاشتن Compatibility Test Suite یا CTS گوگل وجود ندارد. در بعضی از موارد، تنظیمات به گونه ای انجام شده که حتی با نصب بودن Magisk نیز باز هم خطای CTS Profile Mismatch به نمایش در آمده و سیستم SafetyNet دچار مشکل می شود.

اگر این اتفاق برای شما هم پیش آمده، می تواند دلایل متعددی داشته باشد، از اپلیکیشن های ناسازگار با روت گرفته تا مشکلات مربوط به Magisk Hide. بنابر این، در اینجا قصد داریم برای حل این مشکل هشت روش مختلف را به شما ارائه دهیم.

به روز رسانی: به نظر می رسد که گوگل دست Magisk را خوانده و با به روز رسانی سیستم SafetyNet اقدام به تشخیص و مسدود سازی آن در دستگاه می کند. بنابر این، اگر شما اخیرا با خطای CTS Profile Mismatch رو به رو شده و قبلا آن را ندیده اید، این آموزش کمک کننده خواهد بود، ولی به گام هفتم توجه بیشتری داشته باشید.

پیش از شروع

این آموزش با فرض این که شما قبلا Magisk را روی دستگاه نصب کرده اید، نوشته شده است. Magisk یک ابزار روت اندروید به روش systemless است که می تواند وجود خود را از SafetyNet مخفی کند. بنابر این، ابتدا باید Magisk را نصب کنید که آموزش آن در اینترنت قابل دسترس است.

برای بررسی وضعیت SafetyNet، آسان ترین راه این است که اپلیکیشن Magisk Manager را باز کرده و دکمه SafetyNet Check را از پایین صفحه لمس کنید. بنابر این، در هنگام اجرای روش های ذکر شده در این آموزش، به صورت دوره ای وضعیت SafetyNet را با باز کردن اپلیکیشن Magisk Manager، سواپ کردن به سمت پایین و لمس مجدد دکمه SafetyNet Check بررسی کنید.

گام اول: SuperSU را حذف و با استفاده از Magisk Hide برنامه MagiskSU را نصب کنید

به احتمال فراوان دلیل اصلی بروز خطای CTS profile mismatch، اپلیکیشن مدیریت دسترسی روتی است که خود را از نظر SafetyNet پنهان نمی کند. این مورد دقیقا در مورد اپلیکیشن SuperSU که معروف ترین برنامه روت موجود در جهان است، صدق می کند.

ممکن است شما دستگاه خود را با SuperSU ZIP یا CF Auto Root روت کرده باشید که هر دو از SuperSU به عنوان برنامه مدیریت روت استفاده می کنند. اگر شما این کار را انجام داده و سپس Magisk را نصب کرده باشید، باقی مانده فایل های باینری از SuperSU باز هم باعث فعال شده SafetyNet می شود.

پس اگر این دلیل مشکل شما با CTS باشد، باید فایل های باینری SuperSU را حذف کرده و آن ها را با اپلیکیشن مدیریت دسترسی روت Magisk جایگزین نمایید. اما باز هم یک مورد دیگر وجود دارد: اگر شما Xposed Framework را نصب کرده اید و یا به وسیله دسترسی روت فایل های سیستمی را ویرایش نموده اید، باید تمامی تغییرات انجام شده را به حالت اول بگردانید. با این حال اصلا جای نگرانی نیست، ما روش انجام این کار را به صورت دقیق و واضح برای شما توضیح می دهیم.

برای انجام این کار مراحل زیر را دنبال کنید:

۱ . حذف کامل Xposed

ابتدا در صورتی که Xposed Framework را نصب کرده اید، باید آن را حذف کنید. ولی نگران نباشید، چرا که یک نسخه systemless از Xposed موجود است که بعدا می توانید با Magisk آن را نصب کنید.

برای انجام این کار، به اپلیکیشن Xposed installer رفته و وارد بخش Framework شوید. سپس دکمه Uninstaller را لمس کرده و از پاپ آپ باز شده گزینه Uninstall را بزنید. مدتی منتظر بمانید تا این فرآیند انجام شده و سپس دکمه Reboot را از گوشه سمت راست و پایینی صفحه فشار دهید. پس از انجام این کار، ممکن است دستگاه شما برای بوت و روشن شدن به حدود ۱۰ دقیقه زمان نیاز داشته باشد.

۲ . بازگردانی تغییرات انجام شده در فایل های سیستمی

اگر شما قبلا با بهره گیری از دسترسی روت، فایل های موجود بر روی پارتیشن سیستم را ویرایش کرده باشید، تا زمانی که تغییرات را به حالت اول باز نگردانید SafetyNet برای شما دردسر ساز خواهد بود. برای مثال اگر شما اپلیکیشن های اضافه و پیش فرض گوشی را با استفاده از Titanium Backup حذف کرده باشید، باید آن ها را مجددا نصب کنید (البته توقف اجباری یا غیر فعال کردن اپلیکیشن ها بالامانع است).

اگر تغییرات انجام شده روی فایل های سیستمی را فراموش کرده اید، بهترین گزینه فلش کردن مجدد ایمیج system اصلی رام گوشی است. نحوه انجام این کار در اینترنت موجود است.

۳ . با استفاده از SuperSU دستگاه را آنروت کرده و ایمیج Boot اصلی را بازگردانی کنید

ابتدا اپلیکیشن SuperSU را باز کرده و به سربرگ Settings رفته و با مراجعه به پایین صفحه گزینه Full unroot را لمس کنید. در پاپ آپ اول روی Continue کلیک کنید. اکنون SuperSU از شما سوال می کنید که قصد بازگردانی ایمیج boot اصلی را دارید یا خیر. در اینجا باید حتما روی Yes کلیک کنید. در مرحله بعد از شما سوال می شود که می خواهید ریکاوری اصلی دستگاه را باز گردانید یا خیر. از آنجایی که شما برای فلش زدن Magisk به TWRP نیاز خواهید داشت، در این مورد گزینه No را انتخاب نمایید. لحظاتی بعد دستگاه ریبوت می شود.

پس از انجام این مراحل، از فعال بودن گزینه Magisk Hide در اپلیکیشن Magisk Manager اطمینان حاصل کنید. در این قسمت می توانید با استفاده از Magisk Hide اپلیکیشن های جانبی را پنهان کنید که باعث می شود این اپلیکیشن ها از روت بودن دستگاه شما اطلاع پیدا نکنند.

برای انجام این کار، منوی کناری اپلیکیشن Magisk Manager را باز کرده و Magisk Hide را انتخاب کنید. در این جا بهتر است باکس های کناری Google Play Store، Google Services Framework و سایر اپلیکیشن هایی که با آن ها دچار مشکل SafetyNet هستید را علامت دار کنید.

گام دوم: فلش کردن unSU را امتحان کنید

اگر روش ذکر شده در بالا نتوانست مشکل CTS profile mismatch را حل کند و شما مطمئنید که تمامی تغییرات انجام شده در فایل های سیستمی را به حالت اول باز گردانده اید، ممکن است که مقدار کمی از فایل های دیتای SuperSU روی دستگاه باقی مانده باشد. اگرچه گزینه Full Unroot اپلیکیشن SuperSU باید بتواند همه فایل های مرتبط را پاک کند، ولی همیشه هم به خوبی عمل نمی کند.

بنابر این، برای اطمینان از حذف کامل SuperSU و فایل های باینری آن، می توانید از یک فایل ZIP قابل فلش که توسط کاربری به نام osm0sis ساخته شده استفاده نمایید. برای انجام این کار، فایل مورد نظر را از اینجا دانلود کرده و پس از انتقال آن به حافظه گوشی به کاستوم ریکاوری بروید.

از منوی اصلی کاستوم ریکاوری TWRP گزینه Install را لمس کرده و سپس فایل UPDATE-unSU-signed.zip دانلود شده را انتخاب نمایید. اکنون اسلایدر موجود در پایین صفحه را به سمت راست بکشید تا فایل زیپ فلش شده و تمامی آثار باقی مانده از SuperSU حذف شود. پس از پایان این کار، فایل ZIP مربوط به Magisk را مجددا فلش بزنید.

پس از ریبوت کردن دستگاه، وضعیت SafetyNet را مجددا بررسی کنید، اگر مشکل هنوز حل نشده است، به مرحله بعد بروید.

گام سوم: SELinux را به Enforcing تغییر دهید

اگر مشکل شما هنوز برطرف نشده است، کار را در این مرحله ادامه دهید. این مرحله نسبتا ساده است، ولی در صورتی باید آن را انجام دهید که قبلا با اپلیکیشنی حالت SELinux را به Permissive تغییر داده باشید. Magisk تلاش می کند تا وضعیت SELinux را از SafetyNet پنهان کند، ولی همیشه عملکرد کاملی از خود نشان نمی دهد. بنابر این بهترین کار این است که SELinux را به حالت اولیه آن، یعنی Enforcing، برگردانید.

برای انجام این کار، اپلیکیشن تغییر دهنده حالت SELinux که قبلا استفاده کرده اید را باز کرده و تنظیمات را به Enforcing بازگردانده و گوشی را ریبوت کنید.

گام چهارم: USB Debugging را غیر فعال کنید

به دلایل ناشناخته و عجیبی یکی از عوامل رایج در بروز مشکل SafetyNet با Magisk فعال بودن گزینه USB Debugging (عیب یابی USB) در منوی Developer options (گزینه های توسعه دهندگان) است. بنابر این، اگر شما این گزینه را فعال نموده اید، به منوی تنظیمات رفته و آن را غیر فعال و سپس دستگاه را ریبوت کنید و مجددا وضعیت SafetyNet را بررسی نمایید.

گام پنجم: از کاستوم رام استفاده می کنید؟ از یک کاستوم کرنل کمک بگیرید

همانطور که پیش تر اشاره شد، CTS مخفف عبارت Compatibility Test Suite (مجموعه آزمایش سازگاری) است. CTS فرآیندی است که گوگل با استفاده از آن استاندارد بودن دستگاه و نرم افزار (firmware) آن را ارزیابی و تایید می کند. قاعدتا با توجه به چیزی که گفته شد یک کاستوم رام هرگز نمی تواند از این فرآیند با موفقیت بیرون بیاید.

با این حال، بعضی از کاستوم کرنل (Kernel) ها می توانند در حل این مشکل کمک کننده باشند. یکی از مشهور ترین کرنل هایی که به حل مشکل عدم سازگاری کاستوم رام ها کمک می کند، Franco Kernel است. این کرنل برای تمامی گوشی های نکسوس، پیکسل و وان پلاس موجود بوده و حتی برای Redmi Note3 نیز در دسترس است. آسان ترین راه نصب این کرنل استفاده از اپلیکیشن FKU app و کلیک روی دکمه Download در صفحه اصلی آن است. در غیر این صورت می توانید مدل دستگاه خود را در انجمن XDA جستجو کرده و فایل ZIP قابل فلش را بیابید.

این کار در بعضی از کاستوم رام ها (به خصوص Lineage OS) ممکن است در حل مشکل بی فایده باشد. با این حال، بسیاری از اپلیکیشن هایی که از SafetyNet استفاده می کنند، فقط بخشی از CTS که Basic Integrity نامیده می شود را بررسی می کنند و فلش کردن کرنل Franco معمولا این مشکل را حل می کند. بنابر این با اینکه ممکن است Magisk Manager یک خطای CTS mismatch نشان دهد، ولی شما می توانید بدون مشکل از اپلیکیشن های خود استفاده کنید.

برای کاربرانی که از گوشی های شیائومی و کاستوم رام استفاده می کنند، گزینه دیگری نیز موجود است. یکی از کابران انجمن XDA ماژولی را برای Magisk ساخته که از آزمایش CTS عبور می کند. برای دریافت این ماژول به اینجا مراجعه کنید .

گام ششم: بررسی سایر مشکلات

قبل از این که به ارائه روش اصلی حل مشکل در گام هشتم بپردازیم، قصد داریم تعدادی از مشکلات اندک و جزئی که ممکن است باعث روی دادن خطای CTS profile mismatch در استفاده از SafetyNet شود را بررسی کنیم.

اولا، ممکن است که سرویس Magisk Hide به درستی روی گوشی شما اجرا نشده باشد. برای حل این مشکل، به منوی تنظیمات Magisk Manager رفته و یک بار Magisk Hide را خاموش و روشن کنید. اگر موفقیت آمیز نبود، Magisk Hide را غیر فعال کنید، گوشی را ریبوت کنید و مجددا آن را فعال نمایید.

برخی از کاربران نیز گزارش کرده اند که گزینه های Systemless hosts و BusyBox برنامه Magisk باعث به وجود آمدن مشکل SafetyNet شده است. اگر اینطور باشد، بهتر است این دو گزینه را در منوی تنظیمات اپلیکیشن Magisk Manager غیر فعال کنید. البته توجه داشته باشید که غیر فعال نمودن systemless hosts می تواند باعث بروز اختلال در کار برنامه های مسدود کننده تبلیغات مثل AdAway شود.

گام هفتم: گزینه Core only mode را فعال کنید

اگر تمامی موارد گفته شده در بالا نتوانست مشکل شما را برطرف کند، فعال کردن گزینه Core only mode در تنظیمات Magisk Manager را امتحان کنید. انجام این کار باعث غیر فعال شدن تمامی ماژول های نصب شده Magisk می شود. ممکن است این ماژول ها دلیل اصلی اختلال در کار SafetyNet باشد. فعال کردن این گزینه به غیر از دسترسی روت و Magisk SU سایر موارد را غیر فعال می کند.

ممکن است این راه حل ایده آلی نباشد، ولی پس از این که گوگل با ارائه یک به روز رسانی سیستم SafetyNet را قادر به تشخیص Magisk کرد، فعال کردن Core only mode تنها روشی است که می تواند اکثر کاربران را از شر آزمایش های CTS خلاص کند. برای انجام این کار، به منوی تنظیمات Magisk Manager رفته و باکس کنار Core only mode را علامت دار کنید. سپس گوشی را ریبوت و وضعیت SafetyNet را بررسی نمایید.

گام هشتم: اگر هیچکدام از روش ها موفقیت آمیز نبود، از پایه شروع کنید

ما این روش را در آخر قرار دادیم زیر این یک راه حل کامل ولی اندکی دردناک است! اگر همه روش های ذکر شده به شکست منجر شد، کافیست فریمور (نرم افزار) اصلی دستگاه خود را بازیابی کرده، کاستوم ریکاوری را مجددا نصب و Magisk ZIP را فلش بزنید. شما می توانید Magisk ZIP را از اپلیکیشن Magisk Manager دانلود کنید. این روش در اکثر موارد جواب گو خواهد بود و مشکل را حل می کند.

فرآیند بازگردانی فریمور اصلی گوشی تا حد زیادی به مدل دستگاه وابسته است. بهترین روش یادگیری انجام این کار نیز جستجو در اینترنت است.

ارسال نظر