xposed过部分检测
过一些检测,不是通用。
测试过在lsp框架里作用域勾选软件导致打不开软件完美解决
其他的自行研究。
XposedHelpers.findAndHookMethod(Application.class,”attach”,Context.class,new XC_MethodHook() {
private boolean permanentMember=true;
@Override
protected void afterHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable
{
super.afterHookedMethod(param);
Context context = (Context) param.args[0];//在这里获取到Context
ClassLoader classLoader = context.getClassLoader();//这里获取classloader
try
{
XposedHelpers.findAndHookMethod(ClassLoader.class,”loadClass”,String.class,new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable
{
super.beforeHookedMethod(param);
if(param.args!=null&¶m.args[0]!=null&¶m.args[0].toString().startsWith(“de.robv.android.xposed.”))
{
param.args[0]=”aa.bb.not.None”;
param.setThrowable(new ClassNotFoundException(“not found”));
}
}
});
}catch(Throwable e)
{}
try
{
XposedHelpers.findAndHookMethod(StackTraceElement.class,”getClassName”,new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable
{
String result = (String) param.getResult();
if(result!=null)
{
if(result.contains(“de.robv.android.xposed.”)||result.contains(“xposed”)||result.contains(“hook”))
{
param.setResult(“”);
}
else if(result.contains(“com.android.internal.os.ZygoteInit”))
{
param.setResult(“”);
}
}
super.afterHookedMethod(param);
}
});
}catch(Throwable e)
{}
try
{
XposedHelpers.findAndHookMethod(BufferedReader.class,”readLine”,new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable
{
super.afterHookedMethod(param);
String result = (String) param.getResult();
if(result!=null)
{
if(result.contains(“/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar”))
{
param.setResult(“”);
new File(“”).lastModified();
}
}
}
});
}catch(Throwable e)
{}
try
{
XposedHelpers.findAndHookMethod(Method.class,”getModifiers”,new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable
{
super.afterHookedMethod(param);
Method method = (Method)param.thisObject;
String[] array = new String[] { “getDeviceId” };
String method_name = method.getName();
if(Arrays.asList(array).contains(method_name))
{
modify=0;
}
else
{
modify=(int)param.getResult();
}
}
});
}catch(Throwable e)
{}
try
{
XposedHelpers.findAndHookMethod(Modifier.class,”isNative”,int.class,new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable
{
super.beforeHookedMethod(param);
param.args[0]=modify;
}
});
}catch(Throwable e)
{}
try
{
Field t = ClassLoader.getSystemClassLoader().loadClass(“de.robv.android.xposed.XposedBridge”).getDeclaredField(“disableHooks”);
t.setAccessible(true);
t.set(null,Boolean.valueOf(true));
}catch(Throwable e)
{}
}
});
发表评论