खोज…


एक Xposed मॉड्यूल बनाना

Xposed एक फ्रेमवर्क है जो आपको अन्य ऐप्स के तरीके कॉल को हुक करने की अनुमति देता है। जब आप एपीके को विघटित करके एक संशोधन करते हैं, तो आप जहां चाहें वहां सीधे कमांड डाल / बदल सकते हैं। हालाँकि, आपको एपीके को बाद में पुनः कनेक्ट / साइन करना होगा और आप केवल पूरे पैकेज को वितरित कर सकते हैं। Xposed के साथ, आप तरीकों से पहले या बाद में अपना खुद का कोड इंजेक्ट कर सकते हैं, या पूरे तरीकों को पूरी तरह से बदल सकते हैं। दुर्भाग्य से, आप केवल रूट किए गए उपकरणों पर Xposed स्थापित कर सकते हैं। जब भी आप अन्य ऐप्स या कोर एंड्रॉइड सिस्टम के व्यवहार में हेरफेर करना चाहते हैं, तो आपको Xposed का उपयोग करना चाहिए और एपीके को डिकम्पोज करने, पुनः लिखने और हस्ताक्षर करने की परेशानी से नहीं गुजरना चाहिए।

सबसे पहले, आप एंड्रॉइड स्टूडियो में एक गतिविधि के बिना एक मानक ऐप बनाते हैं।

फिर आपको अपने build.gradle में निम्नलिखित कोड को शामिल करना होगा :

repositories {
    jcenter();
}

उसके बाद आप निम्न निर्भरताएँ जोड़ते हैं:

provided 'de.robv.android.xposed:api:82'
provided 'de.robv.android.xposed:api:82:sources'

अब आपको इन टैग को AndroidManifest.xml में पाए गए एप्लिकेशन टैग के अंदर रखना है ताकि Xposed आपके मॉड्यूल को पहचान सके:

<meta-data
        android:name="xposedmodule"
        android:value="true" />
<meta-data
        android:name="xposeddescription"
        android:value="YOUR_MODULE_DESCRIPTION" />
<meta-data
        android:name="xposedminversion"
        android:value="82" />

नोट: हमेशा नवीनतम Xposed संस्करण के साथ 82 बदलें।

एक विधि हुकिंग

IXposedHookLoadPackage को कार्यान्वित करने IXposedHookLoadPackage एक नया वर्ग बनाएं और handleLoadPackage विधि लागू करें:

public class MultiPatcher implements IXposedHookLoadPackage
{
    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable
    {
        
    }
}

इस पद्धति के अंदर, आप loadPackageParam.packageName करना चाहते loadPackageParam.packageName उस एप्लिकेशन के पैकेज नाम के लिए जिसे आप हुक करना चाहते हैं:

@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable
{
    if (!loadPackageParam.packageName.equals("other.package.name"))
    {
        return;
    }
}

अब आप अपने तरीके को हुक कर सकते हैं और कोड चलाने के पहले या बाद में इसे या तो हेरफेर कर सकते हैं:

@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable
{
    if (!loadPackageParam.packageName.equals("other.package.name"))
    {
        return;
    }

    XposedHelpers.findAndHookMethod(
        "other.package.name",
        loadPackageParam.classLoader,
        "otherMethodName",
        YourFirstParameter.class,
        YourSecondParameter.class,
        new XC_MethodHook()
    {
        @Override
        protected void beforeHookedMethod(MethodHookParam param) throws Throwable
        {
            Object[] args = param.args;
        
            args[0] = true;
            args[1] = "example string";
            args[2] = 1;

            Object thisObject = param.thisObject;

            // Do something with the instance of the class
        }

        @Override
        protected void afterHookedMethod(MethodHookParam param) throws Throwable
        {
            Object result = param.getResult();

            param.setResult(result + "example string");
        }
    });
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow