Template walkthrough for creating LSPosed modules.
MyModule/
βββ module.prop
βββ system/
β βββ priv-app/
β βββ MyModule/
β βββ MyModule.apk
βββ service.sh
id=my_awesome_module
name=My Awesome Module
version=1.0
versionCode=1
author=YourName
description=What your module does
minApi=30
maxApi=34<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mymodule">
<uses-sdk android:minSdkVersion="30"/>
<application>
<meta-data
android:name="xposedmodule"
android:value="true"/>
<meta-data
android:name="xposeddescription"
android:value="Module description"/>
<meta-data
android:name="xposedminversion"
android:value="54"/>
</application>
</manifest>package com.example.mymodule;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class Hook implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
if (lpparam.packageName.equals("target.package")) {
// Hook into target.package
XposedBridge.log("[MyModule] Hooked into " + lpparam.packageName);
// Example: hook a method
Class<?> targetClass = lpparam.classLoader.loadClass("com.example.Target");
XposedBridge.hookMethod(targetClass.getMethod("doSomething"),
new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
XposedBridge.log("doSomething was called!");
}
});
}
}
}gradle build
# Get APK from build/outputs/apk/release/
cp app/build/outputs/apk/release/app-release.apk MyModule/system/priv-app/MyModule/MyModule.apk
cd MyModule && zip -r MyModule.zip . && cd ..LSPosed Manager β Modules β Install from storage β select MyModule.zip β reboot
- Disable FLAG_SECURE (allow screenshots)
- SSL pinning bypass
- Root detection bypass
- Hide app list
- Spoof device properties
- Intercept network calls