मोबाइल ऐप्स में Root Detection — पता लगाने की विधियाँ और कार्य सिद्धांत

लेखक: IT Sectr प्रकाशित: 2026-04-03 पढ़ने का समय: 9 मिनट

Root Detection एक सुरक्षा तंत्र है जो Android ऐप्स को सुपरयूज़र विशेषाधिकारों वाले उपकरणों पर चलने से बचाता है। बैंकिंग, भुगतान और कॉर्पोरेट ऐप्स रूटेड डिवाइसों पर कार्यक्षमता को ब्लॉक या प्रतिबंधित करते हैं, क्योंकि रूट एक्सेस Android सैंडबॉक्स की सीमाओं को हटा देता है और ट्रैफ़िक इंटरसेप्ट करने, प्रक्रियाओं की मेमोरी पढ़ने और डेटा में हेरफेर करने की संभावना खोलता है। OWASP Mobile Top 10 (2024) के अनुसार, Root Detection की अनुपस्थिति श्रेणी M8 (Security Decisions via Untrusted Inputs) में आती है। Root Detection फ़ाइल सिस्टम की स्थैतिक जाँच और रनटाइम व्यवहार के गतिशील विश्लेषण के संयोजन पर आधारित है।

मुख्य बिंदु

  • Root Detection — समझौता किए गए वातावरण में चलने से ऐप को बचाने के लिए Android डिवाइस पर रूट एक्सेस की जाँच
  • स्थैतिक विधियाँ su बाइनरी, Superuser ऐप्स और सिस्टम विभाजन में बदलाव के लिए फ़ाइल सिस्टम की जाँच करती हैं
  • गतिशील विधियाँ रनटाइम का विश्लेषण करती हैं: Build.TAGS की जाँच, विशेषाधिकार प्राप्त प्रक्रियाओं के साथ /proc/self/maps खोलने का प्रयास
  • मूल कार्यान्वयन JNI के माध्यम से C/C++ में Java स्तर पर Xposed और Frida के माध्यम से बायपास के प्रति प्रतिरोध सुनिश्चित करता है
  • सुरक्षा Root Detection को जाँच परिणामों में हेरफेर को रोकने के लिए निरंतर अस्पष्टीकरण और सर्वर-साइड सत्यापन की आवश्यकता होती है

Root Detection क्या है?

Root Detection एक सॉफ़्टवेयर तंत्र है जो Android डिवाइस पर रूट एक्सेस की उपस्थिति का पता लगाता है। रूट एक्सेस ऑपरेटिंग सिस्टम पर पूर्ण नियंत्रण प्रदान करता है, जिससे ऐप्स और स्क्रिप्ट UID 0 के साथ कमांड निष्पादित कर सकते हैं। रूटेड डिवाइस पर, ऐप आइसोलेशन (Android Sandbox) खो जाता है, जिससे कीबोर्ड इनपुट को इंटरसेप्ट करना, अन्य ऐप्स के SQLite डेटाबेस पढ़ना, प्रक्रियाओं में कोड इंजेक्ट करना और विश्वसनीय स्टोर में SSL प्रमाणपत्र बदलना संभव हो जाता है।

वित्तीय और कॉर्पोरेट ऐप्स के लिए, रूटेड डिवाइस पर चलना एक अस्वीकार्य जोखिम प्रस्तुत करता है: हमलावर टोकन, सत्र कुंजी और व्यक्तिगत डेटा तक पहुँच प्राप्त करता है। नियामक, जिनमें PCI Security Standards Council शामिल है, भुगतान ऐप्स को रूट एक्सेस का पता लगाने और उस पर प्रतिक्रिया करने की आवश्यकता रखते हैं। इसके जवाब में, Android डेवलपर्स सक्रिय सुरक्षा रणनीति के भाग के रूप में Root Detection को एम्बेड करते हैं।

पता लगाने के दो दृष्टिकोण हैं: स्थैतिक, जो फ़ाइल सिस्टम और स्थापित पैकेजों का विश्लेषण करता है, और गतिशील, जो रनटाइम में जाँच करता है। संयुक्त दृष्टिकोण सबसे विश्वसनीय माना जाता है, क्योंकि यह विभिन्न बायपास वैक्टर को कवर करता है। NowSecure (2025) के एक अध्ययन के अनुसार, Google Play के शीर्ष 100 में 76% बैंकिंग ऐप्स में Root Detection का कोई न कोई रूप होता है।

रूट पता लगाने की स्थैतिक विधियाँ

स्थैतिक विधियाँ ऐप स्टार्टअप पर निष्पादित होती हैं और फ़ाइल सिस्टम में रूटिंग टूल द्वारा छोड़े गए रूट एक्सेस के संकेतों की जाँच करती हैं। इन विधियों को विशेषाधिकार प्राप्त कमांड निष्पादित करने की आवश्यकता नहीं होती है और ये सामान्य ऐप के संदर्भ में काम करती हैं।

su बाइनरी के अस्तित्व की जाँच

रूट एक्सेस का मुख्य संकेतक मानक पथों में su निष्पादन योग्य फ़ाइल की उपस्थिति है: /system/bin/su, /system/xbin/su, /sbin/su, /su/bin/su। ऐप File.exists() या libc से access() के मूल कार्यान्वयन के माध्यम से फ़ाइल के अस्तित्व की जाँच करता है। इसके अतिरिक्त, su --version या su -c id निष्पादित करने और exit कोड की जाँच करने का प्रयास किया जा सकता है।

रूट मैनेजरों की खोज

रूट एक्सेस प्रबंधित करने के लिए विशिष्ट ऐप्स: Superuser, SuperSU, Magisk Manager, KingRoot। उनकी उपस्थिति PackageManager.getPackageInfo() के माध्यम से या /data/app/ निर्देशिका पढ़कर जाँची जाती है। जाँच के लिए पैकेज: com.topjohnwu.magisk, eu.chainfire.supersu, com.noshufou.android.su, com.thirdparty.superuser, com.koushikdutta.superuser, com.zacharee1.systemuituner।

सिस्टम गुणों की जाँच

Android सिस्टम गुणों में सिस्टम स्थिति की जानकारी संग्रहीत करता है, जो System.getProperty और Build.TAGS के माध्यम से सुलभ है। यदि Build.TAGS में release-keys के बजाय test-keys हैं, तो यह एक कस्टम फ़र्मवेयर इंगित करता है, जो अक्सर रूट एक्सेस के साथ होता है। इसके अतिरिक्त, /system/build.prop पढ़कर ro.build.tags, ro.debuggable और ro.secure की जाँच की जाती है।

java
public class RootDetectionChecker {
    private static final String[] SU_PATHS = {
        "/system/bin/su",
        "/system/xbin/su",
        "/sbin/su",
        "/su/bin/su",
        "/system/sd/xbin/su"
    };

    public boolean checkRootByFiles() {
        for (String path : SU_PATHS) {
            if (new File(path).exists()) {
                return true;
            }
        }
        return false;
    }

    public boolean checkRootByPackages(Context ctx) {
        String[] packages = {
            "com.topjohnwu.magisk",
            "eu.chainfire.supersu",
            "com.noshufou.android.su",
            "com.koushikdutta.superuser"
        };
        for (String pkg : packages) {
            try {
                ctx.getPackageManager().getPackageInfo(pkg, 0);
                return true;
            } catch (PackageManager.NameNotFoundException e) {
                // package not found
            }
        }
        return false;
    }
}

जाँच की गतिशील विधियाँ

गतिशील विधियाँ ऐप के संचालन के दौरान निष्पादित होती हैं और निष्पादन वातावरण का विश्लेषण करती हैं। स्थैतिक विधियों के विपरीत, वे Magisk Hide या Zygisk के माध्यम से छिपी रूटिंग का पता लगा सकती हैं, क्योंकि वे केवल फ़ाइल संरचना नहीं बल्कि सिस्टम व्यवहार की जाँच करती हैं।

माउंट पॉइंट की जाँच

रूट एक्सेस के साथ, कुछ सिस्टम विभाजन ro (read-only) के बजाय rw (read-write) फ़्लैग के साथ माउंट किए जाते हैं। ऐप /proc/mounts पढ़ता है और जाँचता है कि /system ro के रूप में माउंट है। यदि /system rw के रूप में माउंट है, तो यह संशोधित सिस्टम का संकेत है। इसके अतिरिक्त, Magisk के माध्यम से /su माउंटिंग की उपस्थिति की जाँच की जाती है।

सेफ़ मोड परीक्षण

Android सेफ़ मोड तृतीय-पक्ष ऐप्स को अक्षम करता है, जिसमें रूट मैनेजर भी शामिल हैं। एक सही Root Detection कार्यान्वयन जाँच सकता है कि डिवाइस सेफ़ मोड में चल रहा है या नहीं। यदि ऐप पाता है कि रूट मैनेजर दिखाई नहीं दे रहे हैं लेकिन su बाइनरी मौजूद है, तो यह Magisk Hide का संकेत है।

कमांड निष्पादन जाँच

ProcessBuilder या Runtime.exec के माध्यम से su -c id निष्पादित करने का प्रयास रूट एक्सेस का सीधा परीक्षण है। हालाँकि, Magisk इस कॉल को इंटरसेप्ट कर सकता है। अधिक विश्वसनीय दृष्टिकोण मूल कोड के माध्यम से जाँच है: /proc/1/limits या /proc/self/maps खोलना और चल रही प्रक्रियाओं के UID का विश्लेषण करना। यदि ऐप UID 0 प्राप्त कर सकता है या केवल रूट के लिए सुलभ फ़ाइलें पढ़ सकता है, तो डिवाइस समझौता किया गया है।

java
public boolean checkRootDynamically() {
    // Build flags check
    String buildTags = Build.TAGS;
    if (buildTags != null && buildTags.contains("test-keys")) {
        return true;
    }

    // Checking /system mount
    try {
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(new FileInputStream("/proc/mounts"))
        );
        String line;
        while ((line = reader.readLine()) != null) {
            if (line.contains("/system")
                && line.contains("rw")) {
                reader.close();
                return true;
            }
        }
        reader.close();
    } catch (IOException e) {
        // error reading mounts
    }

    return false;
}

C++ में Root Detection का मूल कार्यान्वयन

Java में कार्यान्वित Root Detection को Xposed मॉड्यूल या Frida के माध्यम से आसानी से बायपास किया जा सकता है, जो Java विधियों को इंटरसेप्ट करते हैं और वापसी मान बदल देते हैं। JNI के माध्यम से C++ में मूल कार्यान्वयन काफी अधिक प्रतिरोधी है: Java स्तर पर काम करने वाले गतिशील विश्लेषण उपकरण stat, access, popen और dlopen जैसी मूल libc कॉल नहीं देख सकते।

cpp
#include <unistd.h>
#include <sys/stat.h>
#include <cstring>
#include <vector>

extern "C"
JNIEXPORT jboolean JNICALL
Java_com_example_checker_RootCheck_nativeCheck(
    JNIEnv* env, jobject instance) {

    std::vector<const char*> paths = {
        "/system/bin/su",
        "/system/xbin/su",
        "/sbin/su",
        "/data/local/su"
    };

    struct stat st;
    for (const char* path : paths) {
        if (stat(path, &st) == 0) {
            return JNI_TRUE;
        }
    }
    return JNI_FALSE;
}

मूल जाँच Java API का उपयोग नहीं करती है, जो इसे Dalvik/ART स्तर पर काम करने वाले बायपास टूल के लिए अदृश्य बनाती है। अतिरिक्त सुरक्षा के लिए, स्थिरांक (पथ सूची) को केवल-पढ़ने योग्य अनुभाग में संग्रहीत न करने की सिफारिश की जाती है, बल्कि सरल प्रतिवर्ती कार्यों के माध्यम से उनकी गणना करने की सिफारिश की जाती है। libc से stat कॉल सीधे Linux कर्नेल तक पहुँचती है, Java रैपर को दरकिनार करते हुए, और इसे Xposed के माध्यम से इंटरसेप्ट नहीं किया जा सकता है।

Root Detection को बायपास करने की विधियाँ

सुरक्षा डेवलपर्स को एक मजबूत पहचान प्रणाली बनाने के लिए मौजूदा बायपास विधियों को समझने की आवश्यकता है। प्रत्येक बायपास विधि के लिए उचित स्तर पर प्रतिउपाय की आवश्यकता होती है।

Magisk Hide और Zygisk के माध्यम से बायपास

Magisk Android 9–14 पर सबसे लोकप्रिय रूटिंग टूल है। Magisk Hide /proc से su की उपस्थिति छिपाता है और पथ जाँच परिणामों को गलत साबित करता है। Magisk कर्नेल स्तर पर काम करता है और ऐप द्वारा देखे जाने से पहले stat() और access() को इंटरसेप्ट करता है। प्रतिउपाय: /sbin/.magisk की उपस्थिति के माध्यम से Magisk की जाँच या ऐप के स्वयं के maps को पढ़कर जाँच — Magisk अपनी लाइब्रेरी हर प्रक्रिया में इंजेक्ट करता है।

Frida के माध्यम से बायपास

Frida एक गतिशील उपकरण है जो Ptrace या Dobby के माध्यम से मूल कार्यों को इंटरसेप्ट कर सकता है। Frida किसी भी जाँच के वापसी मान को बदल देता है, stat परिणाम को ENOENT में गलत साबित करता है। प्रतिउपाय: मेमोरी में निर्देशों के चेकसम की गणना करके मूल कार्यों की अखंडता सत्यापित करना और frida-agent.so या frida-helper की उपस्थिति के लिए /proc/self/maps के विश्लेषण के माध्यम से Frida का पता लगाना।

APK पैचिंग के माध्यम से बायपास

Java में कार्यान्वित Root Detection को 2–3 मिनट में हटाया जा सकता है: APK को apktool के माध्यम से डीकंपाइल किया जाता है, smali कोड में विधि के वापसी मान को false में बदल दिया जाता है, APK को पुनर्निर्मित और हस्ताक्षरित किया जाता है। प्रतिउपाय: महत्वपूर्ण तर्क को मूल कोड में स्थानांतरित करना और Signature API के माध्यम से रनटाइम में ऐप के डिजिटल हस्ताक्षर को सत्यापित करना या APK हैश की सर्वर पर संदर्भ से तुलना करना।

विश्वसनीय सुरक्षा के लिए सिफारिशें

प्रभावी Root Detection बहु-स्तरीय आर्किटेक्चर पर बनाया गया है। कोई एक विधि अपने आप में पर्याप्त सुरक्षा प्रदान नहीं करती है। स्थैतिक और गतिशील जाँच, मूल कोड और सर्वर-साइड सत्यापन का संयोजन अधिकतम प्रतिरोध देता है।

सर्वर-साइड सत्यापन

केवल क्लाइंट-साइड जाँच पर निर्भर न रहें। एक बार उपयोग वाले सत्र टोकन के साथ Root Detection परिणाम सर्वर को भेजें। सर्वर कार्यक्षमता को ब्लॉक या प्रतिबंधित करने का निर्णय लेता है। यह API स्तर पर हमलों को रोकता है, जहाँ क्लाइंट ऐप को संशोधित किया जा सकता है जबकि सर्वर विश्वसनीय पक्ष बना रहता है।

कोड अस्पष्टीकरण

Root Detection कोड अस्पष्ट होना चाहिए। यदि हमलावर jadx में su पथ जाँच का स्पष्ट अनुक्रम देखता है, तो बायपास में मिनट लगेंगे। नियंत्रण प्रवाह को अस्पष्ट करने और स्ट्रिंग को एन्क्रिप्ट करने के लिए ProGuard या DexGuard का उपयोग करें। अस्पष्टीकरण सुरक्षा कोड विश्लेषण के समय को मिनटों से बढ़ाकर घंटों कर देता है।

नियमित हस्ताक्षर अद्यतन

जाँचे गए पथ, पैकेज और संकेतकों की सूची प्रत्येक ऐप रिलीज़ के साथ अद्यतन की जानी चाहिए। नए रूटिंग और बायपास टूल मासिक रूप से दिखाई देते हैं। एक स्थैतिक सूची जो एक वर्ष में नहीं बदली है, आधुनिक विधियों का पता नहीं लगाएगी। जाँच करने से पहले ऐप स्टार्टअप पर सर्वर से वर्तमान हस्ताक्षर लोड करने की सिफारिश की जाती है।

अक्सर पूछे जाने वाले प्रश्न

ऐप्स को Root Detection की आवश्यकता क्यों है?

Root Detection उस डिवाइस पर ऐप चलने से बचाता है जहाँ Android सैंडबॉक्स अक्षम है। रूटेड डिवाइस पर, कोई भी ऐप अन्य ऐप्स का डेटा पढ़ सकता है। बैंकिंग और भुगतान ऐप्स PCI DSS आवश्यकताओं और OWASP Mobile Security अनुशंसाओं के अनुसार रूटेड डिवाइसों पर संचालन को ब्लॉक करने के लिए बाध्य हैं।

Magisk Hide कैसे काम करता है?

Magisk Hide माउंट नेमस्पेस तंत्र का उपयोग करता है। बहिष्करण सूची में प्रत्येक प्रक्रिया के लिए, Magisk एक पृथक नेमस्पेस बनाता है जहाँ su बाइनरी अदृश्य है। इस नेमस्पेस में सिस्टम कॉल stat, access और open Magisk फ़ाइलों को नहीं देखते हैं। /proc/self/maps की उपस्थिति की जाँच और magisk डंप की खोज करके Magisk का पता लगाया जा सकता है।

क्या Root Detection को रूट के बिना बायपास किया जा सकता है?

हाँ, यदि ऐप अपने कोड की अखंडता सत्यापित नहीं करता है। Frida के माध्यम से, Java जाँच विधि को इंटरसेप्ट किया जा सकता है और इसे false वापस करने के लिए मजबूर किया जा सकता है। प्रतिउपाय C++ में महत्वपूर्ण तर्क का मूल कार्यान्वयन और DEX फ़ाइल हैश के माध्यम से अखंडता सत्यापन है। अस्पष्टीकरण के बिना, Java पर कोई भी Root Detection 5–10 मिनट में बायपास हो जाता है।

SafetyNet और प्रमाणन क्या है?

SafetyNet (पुराना) और Play Integrity API Google की ओर से सर्वर-साइड जाँच हैं जो डिवाइस अखंडता की पुष्टि करती हैं। इनमें बूटलोडर, सिस्टम हस्ताक्षर और रूट स्थिति की जाँच शामिल है। Play Integrity API SafetyNet का अनुशंसित प्रतिस्थापन है, जो तीन स्तर प्रदान करता है: BASIC, DEVICE और STRONG। क्लाइंट-साइड Root Detection सर्वर-साइड प्रमाणन को पूरक करता है।

अपने ऐप में Root Detection का परीक्षण कैसे करें?

वास्तविक रूटेड डिवाइस पर ऐप स्थापित करें (उदाहरण के लिए, Magisk के साथ Pixel)। जाँचें कि ब्लॉक सक्रिय होता है या नहीं। फिर अपने ऐप के लिए Magisk Hide के माध्यम से रूट छिपाने का प्रयास करें और परीक्षण पुनः शुरू करें। गहन परीक्षण के लिए, लक्ष्य विधियों को इंटरसेप्ट करने के लिए Frida का उपयोग करें और सुनिश्चित करें कि मूल सुरक्षा को बायपास नहीं किया जा सकता।

सारांश

  • Root Detection बैंकिंग, भुगतान और कॉर्पोरेट Android ऐप्स के लिए एक अनिवार्य सुरक्षा घटक है, जो स्थैतिक और गतिशील जाँच के संयोजन पर काम करता है
  • स्थैतिक विधियाँ में मानक पथों में su बाइनरी की खोज, स्थापित रूट मैनेजरों की जाँच और Build.TAGS सिस्टम गुणों का विश्लेषण शामिल है
  • गतिशील विधियाँ rw मोड में /system माउंटिंग का विश्लेषण करती हैं, /proc/mounts अखंडता सत्यापित करती हैं और विशेषाधिकार प्राप्त कमांड निष्पादन परीक्षण करती हैं
  • मूल कार्यान्वयन JNI के माध्यम से C++ में Java स्तर पर काम करने वाले Xposed और Frida के लिए जाँच को अदृश्य बनाता है, जिसके लिए Dobby या Ptrace के माध्यम से बायपास की आवश्यकता होती है
  • Magisk Hide माउंट नेमस्पेस के माध्यम से Root Detection को बायपास करने का प्राथमिक उपकरण है, जो magisk लाइब्रेरी के लिए /proc/self/maps के विश्लेषण के माध्यम से पता लगाने योग्य है
  • अनुशंसित आर्किटेक्चर: मूल जाँच + कोड अस्पष्टीकरण + सर्वर-साइड परिणाम सत्यापन + नियमित हस्ताक्षर अद्यतन
  • Play Integrity API Google से क्लाइंट-साइड Root Detection को सर्वर-साइड डिवाइस प्रमाणन के साथ पूरक करता है, व्यापक सुरक्षा प्रदान करता है

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें