Android
Xposed
खोज…
एक 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");
}
});
}