Skip to content

Instantly share code, notes, and snippets.

@awakened1712
Created March 16, 2018 07:37
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 awakened1712/17b7d5e92a8672befb6f626bea8f6d5a to your computer and use it in GitHub Desktop.
Save awakened1712/17b7d5e92a8672befb6f626bea8f6d5a to your computer and use it in GitHub Desktop.
Xposed hook encrypted class
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
public class Hook implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
// technique to hook encrypted classes/methods
if (lpparam.packageName.equals("com.example")) {
XposedBridge.log("===== Loaded app: " + lpparam.packageName + " =====");
findAndHookMethod("java.lang.ClassLoader", lpparam.classLoader, "loadClass", String.class, boolean.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
Log.e("Hook", "====== ClassLoader.loadClass(\"" + (String) param.args[0] + "\") ======");
if (((String) param.args[0]).equals("o.ˊ")) {
Class c = (Class) param.getResult();
if (c != null) {
findAndHookMethod(c, "ˏ", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
param.setResult("Hooked");
}
});
}
}
}
});
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment