شناسه:
ROUTE_VPN_INTERFACEدسته: مسیرها و پشتهٔ شبکه وضعیت در RKNHardering 2.10.0: بررسی فعال نقش در حکم نهایی: بالا
این صفحه پیادهسازی واقعی RKNHardering 2.10.0 را توضیح میدهد. در آن مشخص شده است چه اقدامهایی بدون روت ممکناند، چه چیزهایی به روت نیاز دارند و کدام راهکار فقط یک سیگنال را کاهش میدهد، بیآنکه VPN را بهطور کامل پنهان کند.
detectVpnRoutes() فایل /proc/net/route را میخواند، ردیفهای مربوط به tun0، tun1، utun0، ppp0، wg0 و wg1 را میشمارد و اگر شمار بیشتر از صفر باشد route_vpn_iface|vpn_routes=N را تولید میکند. این سیگنال قدیمی با اطمینان بالا است.
دستکم یک ردیف در /proc/net/route از نام ثابت رابط VPN استفاده کند.
این یک نشت مستقیم IPv4 از procfs است و به پیشفرضبودن مسیر وابسته نیست.
تأثیر این خط بر گزارش: این خط detected=true را تنظیم میکند و بهعنوان یک نشانهٔ محلی با اطمینان بالا در نظر گرفته میشود.
در نسخههای جدیدتر Android، SELinux اغلب دسترسی procfs را برای برنامهٔ عادی میبندد؛ در آن حالت نبود خط بهمعنای پاکبودن سیستم نیست. IPv6 و netlink با سیگنالهای دیگر پوشش داده میشوند.
این خط باید همراه با سیگنالهای مجاور ارزیابی شود. پاکبودن نتیجهٔ یک API بهتنهایی Java Binder، libc، netlink خام/فراخوانی مستقیم سامانه، procfs/sysfs، سوکتهای محلی و نشانههای سمت سرور را همزمان پوشش نمیدهد.
بدون روت، طراحی مسیریابی را اصلاح کنید، نه نحوهٔ نمایش جدول را. برای تلفنی پاک از دروازهٔ خارجی استفاده کنید. اگر VPN در VpnService باقی میماند، split routing را طوری تنظیم کنید که برنامهٔ تحت آزمون واقعاً از شبکهٔ فیزیکی مورد انتظار خارج شود؛ اما این را پنهانسازی مسیرهای محلی ندانید، زیرا رابط و قواعد policy ممکن است قابل مشاهده بمانند. روی دستگاه در حال استفاده مسیرها را با ip route حذف نکنید؛ Android و سرویس VPN آنها را دوباره میسازند و ممکن است اتصال قطع شود.
روی دستگاه روتشده، پسزمینه باید منبع داده را فیلتر کند، نه فقط libc را. در VPNHide بالادستی، پسزمینههای هسته برای ioctl، netlink و برخی بردارهای route/procfs طراحی شدهاند و Zygisk یک گزینهٔ مشروط باقی میماند. kmod و KPM را همزمان نصب نکنید، زیرا ممکن است همان توابع هسته را رهگیری کنند. VPNHide Next پوشش گستردهتری برای PMTU/MSS/qdisc/BPF ادعا میکند، اما این ادعای بیرونی باید روی همان هسته بازتولید شود. VPNHide بالادستی فیلتر /proc/net/route را مستند کرده است؛ وقتی سیاست SELinux رام اجازهٔ خواندن فایل را میدهد، پسزمینهٔ هسته باید دسترسی خام open/read را نیز پوشش دهد.
adb shell cat /proc/net/route 2>&1 | head -80
permission denied یعنی مسیر برای پوسته قابل دسترسی نیست؛ برنامه ممکن است نتیجهٔ متفاوتی بگیرد.
پس از هر تغییر، RKNHardering و سرویسگیرندهٔ VPN را بهاجبار متوقف کنید، هر دو را دوباره اجرا کنید و اسکن کامل را تکرار کنید. Zygisk، Xposed و ماژولهای هسته معمولاً به راهاندازی مجدد دستگاه نیاز دارند. فقط همین خط را مقایسه نکنید؛ سیگنالهای مجاور را نیز بررسی کنید، زیرا یک هوک ناقص اغلب میان APIها ناسازگاری ایجاد میکند.
خود پروب با مجوزهای معمول برنامه اجرا میشود و روت درخواست نمیکند. دستورهای ADB زیر فقط برای جهتیابی تشخیصیاند: adb shell با UID دیگری اجرا میشود و ممکن است نسبت به فرایند برنامه اطلاعات بیشتر یا کمتری ببیند. آزمون تعیینکننده، اجرای دوبارهٔ بررسی درون برنامه پس از توقف اجباری است.
procfs مانند فایل معمولی قابل ویرایش نیست. حذف مسیرها اتصال شبکه را قطع میکند.
آخرین تغییر را برگردانید: ماژول یا قاعدهٔ افزودهشده را با مدیر معمول خودش غیرفعال کنید، دستگاه را دوباره راهاندازی کنید و اسکن خط مبنا را تکرار کنید. روی وضعیتی ناشناخته هوک دیگری لایه نکنید.
بالا. با تجزیهگر /proc/net/route و فهرست نامهای ثابت راستیآزمایی شده است؛ نوع نتیجه بالا است.
وضعیت یک راهکار شخص ثالث خودبهخود به این دستگاه تعمیم پیدا نمیکند. ادعای سازندهٔ ماژول فقط فرضیهٔ آغازین است؛ تأیید واقعی به نتیجهای تکرارپذیر از RKNHardering روی همان نسخهٔ Android، میانافزار و هسته نیاز دارد.
native_signs_probe.cpp — پیادهسازی پروب بومی.NativeSignsChecker.kt — منطق اصلی حکم بومی/قدیمی.NativeSignalId.kt — رجیستری کامل شناسهها.NativeSignalCatalog.kt — نگاشت دسته، slug و خط خروجی.سیگنالهای مرتبط: route-table, proc-ipv6-route-vpn, vpn-policy-rules.