RKNHardering Help

اجرا خارج از کاربر اصلی

شناسه: ISOLATION_SECONDARY_USER دسته: شبیه‌سازی، پروفایل‌ها و جداسازی وضعیت در RKNHardering 2.10.0: بررسی فعال نقش در حکم نهایی: متوسط

این صفحه پیاده‌سازی واقعی RKNHardering 2.10.0 را توضیح می‌دهد. در آن مشخص شده است چه اقدام‌هایی بدون روت ممکن‌اند، چه چیزهایی به روت نیاز دارند و کدام راهکار فقط یک سیگنال را کاهش می‌دهد، بی‌آن‌که VPN را به‌طور کامل پنهان کند.

چه چیزی بررسی می‌شود و چرا

اگر user ID استخراج‌شده 0 نباشد و در مجموعهٔ clone قرار نگیرد، بررسی‌کننده ISOLATION_SECONDARY_USER را با finding بازبینی اطمینان متوسط می‌سازد.

شرط دقیق فعال‌شدن

dataDir به شکل /data/user/<id>/ باشد که <id> != 0 است و 999 یا بازهٔ 950..959 نیست.

معنای نتیجه

یک کاربر جداگانهٔ Android را مشخص می‌کند. حالت چندکاربره طبیعی است، اما مجموعهٔ برنامه‌های نصب‌شده، پیکربندی VPN و policy شبکه را نسبت به owner تغییر می‌دهد.

تأثیر این خط بر گزارش: این خط به‌تنهایی حکم نهایی صادر نمی‌کند، اما needsReview=true را تنظیم و شاهدی با اطمینان متوسط اضافه می‌کند.

محدودیت‌ها و مثبت‌های کاذب احتمالی

مسیر /data/user_de/ و رفتار vendor ممکن است با regex تطبیق نداشته باشد. Private Space یا work profile نیز وقتی user ID غیرصفر دارند می‌توانند وارد همین شاخه شوند.

این خط باید همراه با سیگنال‌های مجاور ارزیابی شود. پاک‌بودن نتیجهٔ یک API به‌تنهایی Java Binder، libc، netlink خام/فراخوانی مستقیم سامانه، procfs/sysfs، سوکت‌های محلی و نشانه‌های سمت سرور را هم‌زمان پوشش نمی‌دهد.

توصیه‌ها برای این بردار

بدون روت

اگر پروفایل بخشی از آزمون نیست، برنامه را زیر کاربر اصلی (user 0) نصب و اجرا کنید. پیش از حذف work profile، Private Space یا پروفایل clone از داده‌های آن export بگیرید؛ حذف پروفایل برنامه‌ها و storage آن را پاک می‌کند. Shelter و Insular برای پروفایل مدیریت‌شده مفیدند، اما وجود کاربر جداگانهٔ Android را پنهان نمی‌کنند.

با روت

spoof کردن user ID، مسیر /data/user/<id> یا پاسخ‌های DevicePolicyManager با روت وضعیت ناسازگار می‌سازد و ممکن است پروفایل را خراب کند. اجرای برنامه زیر کاربر درست امن‌تر از mask کردن پروفایل است. هوک‌های درون فرایند هدف برای یک بررسی می‌توانند علاوه بر آن HOOK_MARKERS، RWX_MEMORY_REGIONS و LIBRARY_INTEGRITY را فعال کنند.

روش راستی‌آزمایی نتیجه

adb shell pm list users
adb shell am get-current-user
adb shell cmd user list

تأیید کنید package برای کدام کاربر نصب است: adb shell pm list packages --user 0 | grep rknhardering.

پس از هر تغییر، RKNHardering و سرویس‌گیرندهٔ VPN را به‌اجبار متوقف کنید، هر دو را دوباره اجرا کنید و اسکن کامل را تکرار کنید. Zygisk، Xposed و ماژول‌های هسته معمولاً به راه‌اندازی مجدد دستگاه نیاز دارند. فقط همین خط را مقایسه نکنید؛ سیگنال‌های مجاور را نیز بررسی کنید، زیرا یک هوک ناقص اغلب میان APIها ناسازگاری ایجاد می‌کند.

مجوزهای لازم و خطرها

خود پروب با مجوزهای معمول برنامه اجرا می‌شود و روت درخواست نمی‌کند. دستورهای ADB زیر فقط برای جهت‌یابی تشخیصی‌اند: adb shell با UID دیگری اجرا می‌شود و ممکن است نسبت به فرایند برنامه اطلاعات بیشتر یا کمتری ببیند. آزمون تعیین‌کننده، اجرای دوبارهٔ بررسی درون برنامه پس از توقف اجباری است.

خطرها

حذف کاربر ثانویه همهٔ داده‌های آن کاربر را پاک می‌کند، نه فقط RKNHardering را.

بازگردانی

کاربر را دوباره بسازید و backup را بازیابی کنید. دادهٔ برنامه را دستی میان UIDها کپی نکنید.

سطح شواهد

متوسط. شاخهٔ else if (userId != 0) بررسی شده است.

وضعیت یک راهکار شخص ثالث خودبه‌خود به این دستگاه تعمیم پیدا نمی‌کند. ادعای سازندهٔ ماژول فقط فرضیهٔ آغازین است؛ تأیید واقعی به نتیجه‌ای تکرارپذیر از RKNHardering روی همان نسخهٔ Android، میان‌افزار و هسته نیاز دارد.

منابع و تاریخ آخرین راستی‌آزمایی

سیگنال‌های مرتبط: isolation-clone, isolation-work-profile.

بازگشت به مرجع بررسی‌های بومی