چطور محدودیت اسکرینشات در اندروید را دور بزنیم؟
اگر گوشی اندرویدی دارید، احتمالاً برای شما هم پیش آمده که در برخی صفحات یا اپلیکیشنهای خاص هنگام گرفتن اسکرینشات با خطای This app doesn't allow screenshots یا Can't take screenshot of this page مواجه شدهاید یا هنگام ضبط صفحه، چیزی جز یک صفحهی سیاه مشاهده نکردهاید. اما چرا این خطا هنگام عکسگرفتن از برخی برنامهها ظاهر میشود و چگونه میتوان این ارور را رفع کرد؟
- چرا در برخی اپلیکیشنها نمیتوانیم اسکرینشات بگیریم؟
- حذف محدودیت اسکرین شات اندروید در دستگاههای روت نشده
- ابزارهای مورد نیاز
- نصب و فعال سازی Shizuku
- نصب و فعال سازی LSPatch از طریق Shizuku
- نصب و فعالسازی ماژول Disable-FLAG_SECURE
- پچ کردن اپلیکیشنها با LSPatch
- حذف محدودیت اسکرین شات اندروید در دستگاههای روت شده
- ابزارهای مورد نیاز
- نصب Zygisk Next (مخصوص KernelSU)
- فعال کردن Zygisk (مخصوص Magisk)
- نصب و فعالسازی LSPosed
- نصب و فعالسازی ماژول DisableFlagSecure
چرا در برخی اپلیکیشنها نمیتوانیم اسکرینشات بگیریم؟
این خطا بهدلیل APIهای امنیتی سیستمعامل اندروید است که به توسعهدهندگان اجازه میدهد تا از ضبط شدن محتوای یک پنجره یا اکتیویتی در اسکرینشات یا اسکرین ریکوردر بهجهت ملاحظات امنیتی، حریم خصوصی یا محافظت از نشر غیرمجاز محتوا جلوگیری کنند.
این پروتکل محافظتی توسط یک فلگ بهنام FLAG_SECURE داخل فریمورک اندروید، در سطح سیستمعامل اجرا میشود. در اندروید، FLAG-ها تنظیمات یا گزینههای ویژهای هستند که رفتار و ظاهر اجزای مختلفی مانند پنجرهها، Activity-ها یا View-ها را کنترل میکنند و سیستمعامل محتوای هر برنامهای که از این فلگ در کدهای خود استفاده کرده باشد را مسدود میکند تا بهغیر از نمایشگر گوشی، هیچ راه دیگری برای مشاهدهی محتوای محافظتشده وجود نداشته باشد.
FLAG_SECURE معمولاً در اپلیکیشنهایی که با تراکنشهای مالی، دادههای محرمانه یا سایر اطلاعات حساس مانند اپلیکیشنهای بانکداری، مدیریت رمز عبور یا اپلیکیشنهای پیامرسان امن سروکار دارند، استفاده میشود.
با اینکه هدف از ایجاد این محدودیت محافظت از محتوای حساس است؛ اما گاهی اوقات ممکن است لازم باشد این محدودیت را صرفاً برای مقاصدی مانند عیبیابی یا اهداف آموزشی دور بزنید. گاهی نیز برخی برنامهها بدون هیچ ضرورت قانعکنندهای و بهمنظور درنظر گرفتن حداکثر جوانب امنیتی این محدودیت را اعمال میکنند، بههمین جهت روشی توسط توسعهدهندگان ابداع شده که این محدودیت را پشت سر میگذارد که در ادامه نحوهی استفاده از این روش را توضیح میدهیم.
تذکر: لطفاً از استفاده از روشهای گفتهشده در این مقاله جهت برداشتن این محدودیت درمورد اپلیکیشنهایی که احتمال نقض حریم شخصی افراد در آن وجود دارد یا احتمال توزیع یا نشر محتوای دارای مالکیت فکری و معنوی را درپی دارد و دارای منع اخلاقی است، اکیداً خودداری کنید.
حذف محدودیت اسکرین شات اندروید در دستگاههای روت نشده
برای غیرفعال کردن FLAG_SECURE اپلیکیشنها در دستگاههای روت نشده، از Shizuku و ماژول LSPatch استفاده خواهیم کرد. در این روش به چند ابزار کمکی احتیاج داریم که در ادامه به معرفی و نحوهی استفاده از آنها خواهیم پرداخت.
ابزارهای مورد نیاز
- Shizuku: برنامهای است که به اپلیکیشنها اجازه میدهد با مجوزهای ADB از API-های سیستم استفاده کنند.
- LSPatch: ابزاری برای پچ کردن اپلیکیشنها و تغییر رفتار آنها.
- Disable FLAG_SECURE: ماژولی مبتنیبر LSPatch برای غیرفعال کردن FLAG_SECURE.
- ADB: ابزار اشکالزدایی اندروید که بر اساس دستورهای خط فرمان کار میکند و برای فعالسازی برنامه Shizuku مورد استفاده قرار میگیرد.
نصب و فعال سازی Shizuku
- اپلیکیشن شیزوکو را از پلی استور یا صفحهی گیتهاب آن دانلود و نصب کنید.
- با استفاده از دستورالعملهای داخل اپلیکیشن و به وسیلهی ADB یا Wireless Debugging، شیزوکو را فعال کنید. برای دنبال کردن دقیقتر مراحل نصب و فعالسازی شیزوکو، به مقالهی Shizuku در اندروید چیست و چه کاربردی دارد رجوع کنید.
نصب و فعال سازی LSPatch از طریق Shizuku
برای پچ کردن اپلیکیشنها و غیرفعال کردن FLAG_SECURE، باید آنها را بهوسیلهی LSPatch پچ کرد. LSPatch فورکی از ابزار مشهور LSposed است که برای دستگاههای روتنشده توسعه یافته است.
- فایل APK اپلیکیشن LSPatch را از گیتهاب دانلود و نصب کنید. نام این فایل در زمان نگارش این راهنما، manager-v0.6-398-release.apk است.
- اپلیکیشن شیزوکو را باز کنید و به LSPatch مجوز بدهید.
نصب و فعالسازی ماژول Disable-FLAG_SECURE
ماژول Disable FLAG_SECURE وظیفهی غیرفعال کردن FLAG_SECURE در اپلیکیشنها را برعهده دارد. این ماژول برای دستکاری و حذف این مورد، تحت ابزار LSPatch کار میکند و بهوسیلهی آن فایل APK آنها را پچ میکند.
- فایل APK ماژول Disable-FLAG_SECURE را از گیتهاب دانلود و نصب کنید. نام این فایل در زمان نگارش این راهنما، Xposed-Disable-FLAG_SECURE_2.0.0.apk است.
- برای اطمینان از نصب موفق ماژول مذکور، اپلیکیشن LSPatch را باز کنید و به تب Manage بروید. در تب Modules، باید ماژول Disable-FLAG_SECURE را ببینید.
پچ کردن اپلیکیشنها با LSPatch
- پس از باز کردن اپلیکیشن LSPatch، تب Manage را باز کنید. در تب Apps، روی دکمهی مثبت در پایین صفحه ضربه بزنید.
- اولینبار، باید پوشهای برای ذخیره کردن اپهای پچ شده انتخاب کنید. پس از ضربه زدن روی دکمهی مثبت، در پاپآپِ Select storage directory روی OK بزنید. پوشهای داخل مسیر اصلی فضای ذخیرهسازی گوشی را انتخاب کنید و روی Use this folder بزنید. در پاپآپ بعدی Allow را انتخاب کنید.
- در صفحهی New Patch، گزینهی Select an installed app را انتخاب کنید.
- اپلیکیشن مورد نظر خود را از لیست اپهای نصب شده انتخاب کنید.
- در صفحهی New Patch گزینهی Integrated را بهعنوان Patch Mode انتخاب کنید.
- روی Embed modules ضربه بزنید و Select an installed app را انتخاب کنید.
- ماژول Disable-FLAG-SECURE را علامت و روی تأیید ضربه بزنید.
- به صفحهی New Patch برگردید و برای شروع فرایند پچ کردن، دکمهی Start Patch را بزنید. پس از پایان فرایند، برای نصب اپلیکیشن پچ شده روی Install بزنید.
- یک پنجرهی پاپآپ در مورد تفاوت امضاهای اپلیکیشن نصب شده و پچ شده ظاهر میشود. برای حذف نسخهی نصب شده روی OK بزنید. پس از حذف نصب اپلیکیشن، LSPatch نسخهی پچ شدهی آن را بهطور خودکار نصب میکند.
- پس از موفقیت آمیز بودن نصب، اپلیکیشن پچ شده در تب Apps در صفحهی Manage لیست خواهد شد. فایل APK پچشده در دایرکتوری انتخابشده ذخیره میشود.
نکته ۱: شیزوکو و به طبع آن LSPatch پس از هربار راهاندازی مجدد گوشی غیرفعال میشوند. البته مشکلی در عملکرد اپلیکیشنهای پچ شده بهوجود نخواهد آمد.
نکته ۲: درنظر داشته باشید که از آنجایی که نسخهی پچشدهای از اپلیکیشن با امضایی متفاوت از امضای سازنده تولید میشود، بنابراین از این روش نمیتوان برای برنامههای سیستمی استفاده کرد.
حذف محدودیت اسکرین شات اندروید در دستگاههای روت شده
برای دستگاههای روت شده، ما از KernelSU با LSPosed و Zygisk Next یا Magisk با LSPosed استفاده خواهیم کرد.
پس از اینکه گوشی خود را با دنبال کردن آموزش روت کردن گوشی های اندروید یا دستورالعملهای مخصوص به گوشی خود، به وسیلهی Magisk یا KernelSU روت کردید، برای حذف محدودیت اسکرینشات به وسیلهی LSPosed و ماژول Disable FLAG_SECURE بهصورت زیر عمل کنید.
ابزارهای مورد نیاز
- دستگاه روت شده با KernelSU یا Magisk
- LSPosed: ابزاری مبتنیبر Xposed Framework که اجازهی دخالت و دستکاری در اپلیکیشنها و پچ کردن آنها بدون تغییر در فایل اجرایی اپلیکیشن یا APK را با استفاده از ماژولهای مختلف ارائه میدهد.
- Zygisk Next: ابزاری برای نصب ماژولها در دستگاههایی که بهروش KernelSU روت شدهاند.
- ماژول DisableFlagSecure: ماژول مبتنیبر LSPosed برای غیرفعال کردن FLAG_SECURE.
نصب Zygisk Next (مخصوص KernelSU)
برای فعال شدن برخی از ماژولها از جمله ماژول LSPosed در KernelSU، باید فایل زیپ ماژول Zygisk Next را از صفحهی گیتهاب آن دانلود کنید و از طریق KernelSU فلش بزنید. نام این فایل در زمان نگارش این راهنما، Zygisk-Next-1.0.5-305-d463cbb-release.zip است. برای فعال شدن ماژول، گوشی خود را ریستارت کنید.
فعال کردن Zygisk (مخصوص Magisk)
برای فلش کردن و استفاده از ماژول LSPosed در Magisk، باید ابتدا گزینهی Zygisk را در تنظیمات Magisk فعال کنید.
نصب و فعالسازی LSPosed
- فایل زیپ ماژول LSPosed را از صفحهی گیتهاب آن دانلود کنید و آن را از طریق KernelSU یا Magisk فلش کنید. نام این فایل در زمان نگارش این راهنما،LSPosed-v1.9.2-7024-zygisk-release.zip است. برای فعال شدن ماژول، گوشی خود را ریستارت کنید.
- اپلیکیشن LSPosed را از گوگلپلی نصب کنید.
نصب و فعالسازی ماژول DisableFlagSecure
- فایل APK ماژول DisableFlagSecure برای LSPosed را از صفحهی گیتهاب آن دانلود و نصب کنید. نام این ماژول در بهروزرسانی آخر به Enable Screenshot تغییر یافته است و پساز نصب در تب Modules در LSPosed ظاهر میشود.
- برنامه LSPosed را باز کنید و پساز کسب اجازهی دسترسی روت، به تب Modules بروید و ماژول Enable Screenshot (Disable FLAG_SECURE قدیم) را فعال کنید. برای فعال کردن امکان گرفتن اسکرینشات در کل سیستم، مطمئن شوید که System Framework در تنظیمات ماژول انتخاب شده است. برای اعمال تغییرات، دستگاه خود را ریستارت کنید.
در مراحل غیرفعال کردن FLAG_SECURE در گوشیهای روت شده، از KernelSU استفاده شد؛ اما به جز فلش کردن Zygisk Next، بقیهی مراحل با تفاوتهای اندک در Magisk قابل انجام است.
با دنبال کردن روشهای ذکر شده در این مقاله، میتوانید محدودیت اسکرین ریکورد یا اسکرینشات در دستگاه اندرویدی را از سر راه خود بردارید و چه هنگام گرفتن اسکرین شات در گوشی سامسونگ و چه گوشی شیائومی، هیچ چیز جلودار شما نخواهد بود.
آیا تابهحال موقعیتی برای شما پیش آمده که فعال بودن این ویژگی امنیتی، شما را به دردسر انداخته باشد؟ تجارب و پرسشهای خود در رابطه با این آموزش را در بخش نظرات با ما به اشتراک بگذارید.