Skip to content

Instantly share code, notes, and snippets.

@kaozaza2
Last active February 15, 2021 11:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kaozaza2/07d199ec75355c991918f0e7a3c1d11c to your computer and use it in GitHub Desktop.
Save kaozaza2/07d199ec75355c991918f0e7a3c1d11c to your computer and use it in GitHub Desktop.
Xposed Lambda Hook

Simple xposed lambda hook.

package com.somepackage;
public interface Delegator<A>
{
void apply(A a)
}
package com.somepackage;
import de.robv.android.xposed.XC_MethodHook;
import java.util.Objects;
public class LambdaMethodHook extends XC_MethodHook
{
Delegator<MethodHookParam> before = super::beforeHookedMethod;
Delegator<MethodHookParam> after = super::afterHookedMethod;
public LambdaMethodHook beforeHooked(Delegator<MethodHookParam> d) {
before = Objects.requireNonNull(d);
return this;
}
public LambdaMethodHook afterHooked(Delegator<MethodHookParam> d) {
after = Objects.requireNonNull(d);
return this;
}
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
before.apply(param);
}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
after.apply(param);
}
}
package com.somepackage;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class Module implements IXposedHookLoadPackage
{
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
XposedHelpers.findAndHookMethod(
"com.somepackage.SomeClass",
lpparam.classLoader,
"someMethod",
"com.somepackage.SomeParameterClass",
new LambdaMethodHook()
.beforeHooked(param -> { /* Do staff */ })
.afterHooked(param -> { /* Do staff */ })
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment