شناسه:
ROOT_OVERLAY_MOUNTدسته: روت و وضعیت سامانه وضعیت در RKNHardering 2.10.0: بررسی فعال نقش در حکم نهایی: متوسط
این صفحه پیادهسازی واقعی RKNHardering 2.10.0 را توضیح میدهد. در آن مشخص شده است چه اقدامهایی بدون روت ممکناند، چه چیزهایی به روت نیاز دارند و کدام راهکار فقط یک سیگنال را کاهش میدهد، بیآنکه VPN را بهطور کامل پنهان کند.
C++ برای سطر /proc/self/mounts که شامل overlay و یکی از /system یا /vendor باشد overlay_mount تولید میکند. بااینحال Kotlin عمداً سطر را کنار میگذارد، مگر اینکه detail حاوی نشانگر روت با اطمینان زیاد باشد: magisk، zygisk، lsposed، riru، kernelsu، apatch، /data/adb یا core-only. فقط نشانگر تأییدشده به finding بازبینی با اطمینان زیاد تبدیل میشود.
وجود overlay روی system یا vendor همراه با نشانگر روت در همان سطر detail.
سیگنال استفادهٔ عادی از overlayfs را از mount مربوط به روت یا systemless جدا میکند. بررسیکنندهٔ فعلی وقتی نشانگری نباشد overlay را بهتنهایی نمایش نمیدهد.
تأثیر این خط بر گزارش: این خط بهتنهایی حکم نهایی صادر نمیکند، اما needsReview=true را تنظیم و شاهدی با اطمینان متوسط اضافه میکند.
قالب رشتهٔ mount به هسته و مدیر روت بستگی دارد. ممکن است نشانگر پنهان شود ولی overlay باقی بماند؛ فیلتر فعلی Kotlin چنین سطری را حذف میکند.
این خط باید همراه با سیگنالهای مجاور ارزیابی شود. پاکبودن نتیجهٔ یک API بهتنهایی Java Binder، libc، netlink خام/فراخوانی مستقیم سامانه، procfs/sysfs، سوکتهای محلی و نشانههای سمت سرور را همزمان پوشش نمیدهد.
اگر روت لازم نیست، راه قابلاعتماد بازگرداندن دستگاه به وضعیت استاندارد از مسیر رسمی است: روت را با مدیر خودش حذف کنید، یا پارتیشنهای کارخانهای boot/init_boot و system را که دقیقاً با build نصبشده تطبیق دارند flash کنید. bootloader باز، هستهٔ سفارشی و پوشههای باقیمانده حتی پس از حذف مدیر نیز میتوانند تغییر را آشکار کنند. پیش از بازیابی پشتیبان بگیرید؛ قفلکردن دوبارهٔ bootloader روی میانافزار تغییریافته ممکن است دادهها را پاک کند یا دستگاه را غیرقابلبوت سازد.
دسترسی روت فقط میتواند سطح قابلمشاهده را کاهش دهد؛ نبود روت را ثابت نمیکند. su را به کمترین تعداد برنامه بدهید، هرگز آن را به RKNHardering ندهید، ماژولهای غیرضروری را غیرفعال کنید و SELinux را permissive نکنید. رفتار App Profile/DenyList و جداسازی mount باید روی همان میانافزار بررسی شود. SUSFS و راهکارهای مشابه آزمایشیاند: به هستهٔ سازگار نیاز دارند و ممکن است آثار خودشان را ایجاد کنند. برای آزمون مرجع همچنان یک دستگاه استاندارد جدا لازم است. تا زمانی که ماژولها به overlayfs وابستهاند و مسیر rollback بوت آماده نیست، آن را غیرفعال نکنید. کاهش تعداد ماژولها سطح overlay را کم میکند.
adb shell cat /proc/self/mounts | grep -E 'overlay.*(/system|/vendor)|(/system|/vendor).*overlay'
سطر کامل را با نشانگری که در detail داخلی آمده مقایسه کنید.
پس از هر تغییر، RKNHardering و سرویسگیرندهٔ VPN را بهاجبار متوقف کنید، هر دو را دوباره اجرا کنید و اسکن کامل را تکرار کنید. Zygisk، Xposed و ماژولهای هسته معمولاً به راهاندازی مجدد دستگاه نیاز دارند. فقط همین خط را مقایسه نکنید؛ سیگنالهای مجاور را نیز بررسی کنید، زیرا یک هوک ناقص اغلب میان APIها ناسازگاری ایجاد میکند.
خود پروب با مجوزهای معمول برنامه اجرا میشود و روت درخواست نمیکند. دستورهای ADB زیر فقط برای جهتیابی تشخیصیاند: adb shell با UID دیگری اجرا میشود و ممکن است نسبت به فرایند برنامه اطلاعات بیشتر یا کمتری ببیند. آزمون تعیینکننده، اجرای دوبارهٔ بررسی درون برنامه پس از توقف اجباری است.
unmount کردن overlay یا تغییر پوشههای lower، upper یا work ممکن است سرویسهای سیستمی را crash کند و boot loop بسازد.
ماژول مسئول را از safe mode مدیر روت غیرفعال کنید یا image بوت سالم شناختهشده را بازیابی کنید. پیش از بوت موفق در وضعیت پاک، پوشهٔ upper را حذف نکنید.
متوسط. شرط overlay/system/vendor در C++ و فیلتر نشانگر با اطمینان زیاد در Kotlin بررسی شدهاند.
وضعیت یک راهکار شخص ثالث خودبهخود به این دستگاه تعمیم پیدا نمیکند. ادعای سازندهٔ ماژول فقط فرضیهٔ آغازین است؛ تأیید واقعی به نتیجهای تکرارپذیر از RKNHardering روی همان نسخهٔ Android، میانافزار و هسته نیاز دارد.
native_signs_probe.cpp — پیادهسازی پروب بومی.NativeSignsChecker.kt — منطق اصلی حکم بومی/قدیمی.NativeSignalId.kt — رجیستری کامل شناسهها.NativeSignalCatalog.kt — نگاشت دسته، slug و خط خروجی.سیگنالهای مرتبط: root-suspicious-mount, root-system-rw, root-management.