چگونه روت بودن گوشی را مخفی کنیم؟

مخفی کردن روت گوشی با دستکاری کد به صورت دستی

امروزه بسیاری از اپلیکشین های موبایل مانند برنامه های مالی ، بانکی ، کیف پول پرداخت یا wallet بر روی دستگاه های موبایلی که به صورت روت(root) شده باشند کار نمی کند. همچنین از جایی دیگر برای نصب برخی برنامه های کاربردی یا حتی برای انجام آزمایش های تست نفوذ نیاز به ابزارهایی داریم که فقط با دسترسی روت قابل بهره برداری هستند. در این مقاله چگونگی “مخفی کردن روت گوشی” را یاد می گیریم.

روش های زیادی برای دور زدن یا بایپس کردن سطح دسترسی ریشه(Root) در برنامه های تحت سیستم عامل اندروید وجود دارد، اولین راه آنالیز کدهای استاتیک است که ما امروز در مورد آن صحبت خواهیم کرد و دیگری به صورت پویا با استفاده از frida که جز فریمورک xposed می باشد.

برای تست یک اپلیکشین اندروید از طریق مهندسی معکوس با تجزیه مجدد فایل APK ، پی میبریم که کدام روش از تکنیک ها برای شناسایی دسترسی به ریشه مورد استفاده قرار گیرد.

در زیر ابزارهای مورد نیاز برای دور زدن سطح ریشه کاربر به صورت دستی را مشاهده می کنید:

  • Apktool 
  • d2j-dex2jar
  • jd-gui
  • برنامه ویرایش متنی مثل Sublime 

مرحله اول: تجزیه فایل apk با استفاده از برنامه های apktools

apk-tools ویرایش فایل اندروید
چگونه روت بودن گوشی را مخفی کنیم؟

مرحله دوم: حالا از d2j-dex2jar برای تبدیل classes.dex به فایل jar استفاده می کنیم.

apk-tools ویرایشگر برنامه های اندروید
چگونه روت بودن گوشی را مخفی کنیم؟

مرحله سوم: jd-gui یک برنامه گرافیکی مستقل است که کدهای منبع جاوا از پرونده های “.class” را نمایش می دهد.

jd-gui وJava Decompiler
چگونه روت بودن گوشی را مخفی کنیم؟

مرحله چهارم: اکنون کلمات کلیدی مانند isDeviceRooted یا root و یا rootUtils و sys/ و system/ و یا superuser و… را جستجو کنید تا متدها و عملکردهای دقیق جاوا را به دست آورید.

D-GUI-isdevicerooted
چگونه روت بودن گوشی را مخفی کنیم؟

مرحله پنجم: در اینجا می توانیم ببینیم که  JD-GUI کلاس هایی را با رشته “isDeviceRooted” مشخص شده است را پیدا کرد که ما  کلاس ها را نادیده میگیریم و به کد جاوا می پردازیم.

مرحله ششم: پس از پیدا کردن کلمه کلیدی و کلاس دقیق سعی کنید منطق تشخیص ریشه را بررسی و درک کنید. همچنین در فایل های smali همان روشها و توابع را جستجو کنید.

مرحله هفتم: هنگامی که در بخش کلاس فایل smail تابع دقیق و یا روشی را پیدا کردید، مقدار بازگشتی را در تابع بررسی کنید. همیشه به خاطر داشته باشید که ما نیاز به بازگشت 0x0 به تابع i.e داریم. در زمانی که اپلیکشین بررسی کند که دستگاه روت شده است یا نه مقدار false را بر می گرداند. و زمانی که true  را برگرداند ما از0x1 استفاده خواهیم کرد.

isDeviceRooted return False in smali
چگونه روت بودن گوشی را مخفی کنیم؟

مرحله هشتم: هنگامی که اپلیکشین برای isDeviceRooted چک شود مقدار false را بر می گردارند.

مرحله نهم: مورد دیگری نیز وجود دارد که در آن می توانیم فایل های smali را تغییر دهیم ، Superuse.apk را جستجو کنیم و اسم آن را به چیز دیگری تغییر دهیم.

  • Search for string Superuser.apk
    چگونه روت بودن گوشی را مخفی کنیم؟

جستجوی رشته  Superuser.apk

 

تغییر اسم رشته Superuser.apk به anything.apk
چگونه روت بودن گوشی را مخفی کنیم؟

مرحله دهم: اکنون برنامه را مجدداً rebuild یا بازسازی کرده و با استفاده از apk-singer یک امضای گواهی سفارشی شده برای اپلیشکین ایجاد کنید.

مرحله یازدهم: برنامه را بر روی یک دستگاه روت شده امتحان کنید و عملکرد آن را ببینید.

نتیجه گیری

در این آموزش صرفا مراحل پیدا کردن کد شناسایی root دستگاه توضیح داده شده است و سعی کنید روند دقیق مراحل بالا را دنبال کنید تا به نتیجه مطلوب برسید.

2 دیدگاه
  1. علیرضا پارسی می گوید

    با تشکر از وقتی که گذاشتی ولی با وجود magisk دیگه نیازی به این روش های قدیمی نیستش

    1. ra2 می گوید

      اگر magisk را هم تو لیست باشه چی؟ و خیلی از برنامه های دیگه یعنی شما راه دور زدن را پیدا کردی برنامه نویسان نه!

نوشتن دیدگاه

آدرس ایمیل شما منتشر نخواهد شد.