Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 暴露的挂钩不工作_Android_Xposed - Fatal编程技术网

Android 暴露的挂钩不工作

Android 暴露的挂钩不工作,android,xposed,Android,Xposed,我在使用公开框架时遇到了一些问题,我不明白为什么我的日志不能在beforehookdmethod和afterhookedmethod中工作 package com.example.stefan.testxposed; import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.View; impo

我在使用公开框架时遇到了一些问题,我不明白为什么我的日志不能在beforehookdmethod和afterhookedmethod中工作

package com.example.stefan.testxposed;



import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.IXposedHookZygoteInit;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.XC_MethodHook.MethodHookParam;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;

public class Tutorial implements IXposedHookZygoteInit,     IXposedHookLoadPackage  {

public static final boolean verbose = true;

// What to hook
private static final String PACKAGE_SETTINGS =
        "com.android.settings";

private static final String CLASS_SIM =
        //"com.android.settings.sim.SimDialogActivity";
"com.android.settings.wifi.WifiSettings";

private static XSharedPreferences mPreferences;

@Override
public void initZygote(StartupParam param) throws Throwable {
    verboseLog(this, "initZygote(StartupParam)", "Simding starting...");

    //mPreferences = new XSharedPreferences(WiFiKeyView.class.getPackage().getName());
    //mPreferences.makeWorldReadable();
}
public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
    if (!lpparam.packageName.equals(PACKAGE_SETTINGS)) return;
    verboseLog(this, "handleLoadPackage(LoadPackageParam)", "Gevonden starting...");

    final Class<?> SettingsClazz = XposedHelpers.findClass(CLASS_SIM, lpparam.classLoader);
    XposedHelpers.findAndHookMethod(CLASS_SIM, lpparam.classLoader,"onCreateContextMenu", ContextMenu.class, View.class, ContextMenuInfo.class, new XC_MethodHook() {

        @Override
        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
            verboseLog(this, "beforeHookedMethod(MethodHookParam)", "In de hook...");
            //Tutorial.verboseLog(this, "beforeHookedMethod(MethodHookParam)", "ding.");
        }
        @Override
        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
            XposedBridge.log("AFTER");
            verboseLog(this, "beforeHookedMethod(MethodHookParam)", "In de hoook...");
            //Tutorial.verboseLog(this, "afterHookedMethod(MethodHookParam)", "ding.");
        }
    });
}

public static void verboseLog(Object who, String methodAndParams, String what) {
    if (verbose) {
        String packageAndClass = (who instanceof Class) ? ((Class<?>) who).getCanonicalName() : who.getClass().getCanonicalName();
        String tag = "SimSettings (" + packageAndClass + "#" + methodAndParams + ")";

        Log.v(tag, what);
        XposedBridge.log(tag + " " + what);
    }
}
}
package com.example.stefan.testxposed;
导入android.util.Log;
导入android.view.ContextMenu;
导入android.view.ContextMenu.ContextMenuInfo;
导入android.view.view;
导入de.robv.android.xposed.IXposedHookLoadPackage;
导入de.robv.android.xposed.IXposedHookZygoteInit;
导入de.robv.android.xposed.XC_MethodHook;
导入de.robv.android.xposed.XSharedPreferences;
导入de.robv.android.xposed.XposedBridge;
导入de.robv.android.xposed.XposedHelpers;
导入de.robv.android.xposed.XC_MethodHook.MethodHookParam;
导入de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
公共类教程实现IXposedHookZygoteInit、IXposedHookLoadPackage{
public static final boolean verbose=true;
//钩什么
私有静态最终字符串包\u设置=
“com.android.settings”;
私有静态最终字符串类\u SIM=
//“com.android.settings.sim.SimDialogActivity”;
“com.android.settings.wifi.WifiSettings”;
私有静态XSharedPreferences mPreferences;
@凌驾
public void initZygote(StartupParam参数)抛出可丢弃{
详细日志(这是“initZygote(StartupParam)”,“模拟启动…”);
//mPreferences=newxsharedpreferences(WiFiKeyView.class.getPackage().getName());
//mPreferences.makeWorldReadable();
}
public void handleLoadPackage(最终LoadPackageParam lpparam)抛出可丢弃{
如果(!lpparam.packageName.equals(PACKAGE_设置))返回;
详细日志(这是“handleLoadPackage(LoadPackageParam)”,“Gevonden启动…”);
最终类设置sclazz=XposedHelpers.findClass(Class_SIM,lpparam.classLoader);
XposedHelpers.findHookMethod(CLASS_SIM,lpparam.classLoader,“onCreateContextMenu”,ContextMenu.CLASS,View.CLASS,ContextMenuInfo.CLASS,新的XC_MethodHook(){
@凌驾
protected void beforeHookedMethod(MethodHookParam参数)抛出可丢弃的{
详细日志(这是“beforeHookedMethod(MethodHookParam)”,“In de hook…”);
//verboseLog(这是“beforeHookedMethod(MethodHookParam)”,“ding”);
}
@凌驾
HookedMethod(MethodHookParam param)抛出可丢弃的后受保护的空{
exposedbridge.log(“之后”);
详细日志(这是“beforeHookedMethod(MethodHookParam)”,“In de hoook…”);
//verboseLog(这是“afterHookedMethod(MethodHookParam)”,“ding.”);
}
});
}
公共静态void verboseLog(对象who、字符串methodAndParams、字符串what){
如果(详细){
字符串packageAndClass=(类的who实例)?((类)who.getCanonicalName():who.getClass().getCanonicalName();
String tag=“SimSettings(“+packageAndClass+”#“+methodAndParams+”);
Log.v(标签,什么);
log(标记+“”+what);
}
}
}
我的日志文件如下:

06-12 11:42:50.319 I/Xposed(359):加载类com.example.stefan.testxposed.Tutorial 06-12 11:42:50.335 I/Xposed(359):模拟设置(com.example.stefan.testxposed.Tutorial#initZygote(StartupParam))模拟开始。。。 06-12 11:43:09.689 I/Xposed(5717):模拟设置(com.example.stefan.testxposed.Tutorial#handleLoadPackage(LoadPackageParam))Gevonden启动。。。 06-12 11:43:11.010 I/Xposed(5993):模拟设置(com.example.stefan.testxposed.Tutorial#handleLoadPackage(LoadPackageParam))Gevonden启动。。。 06-12 11:43:13.133 I/Xposed(6385):模拟设置(com.example.stefan.testxposed.Tutorial#handleLoadPackage(LoadPackageParam))Gevonden正在启动。。。 06-12 11:43:14.124 I/Xposed(6528):模拟设置(com.example.stefan.testxposed.Tutorial#handleLoadPackage(LoadPackageParam))Gevonden正在启动。。。 06-12 11:43:15.077 I/Xposed(6670):模拟设置(com.example.stefan.testxposed.Tutorial#handleLoadPackage(LoadPackageParam))Gevonden正在启动。。。 06-12 11:43:16.500 I/Xposed(6880):模拟设置(com.example.stefan.testxposed.Tutorial#handleLoadPackage(LoadPackageParam))Gevonden启动。。。 06-12 11:43:48.390 I/Xposed(8719):模拟设置(com.example.stefan.testxposed.Tutorial#handleLoadPackage(LoadPackageParam))Gevonden正在启动。。。 06-12 11:44:51.582 I/Xposed(9083):模拟设置(com.example.stefan.testxposed.Tutorial#handleLoadPackage(LoadPackageParam))Gevonden启动。。。 06-12 11:44:52.545 I/Xposed(9248):模拟设置(com.example.stefan.testxposed.Tutorial#handleLoadPackage(LoadPackageParam))Gevonden正在启动。。。 06-12 11:44:53.608 I/Xposed(9415):模拟设置(com.example.stefan.testxposed.Tutorial#handleLoadPackage(LoadPackageParam))Gevonden正在启动。。。 06-12 11:44:55.309 I/Xposed(9725):模拟设置(com.example.stefan.testxposed.Tutorial#handleLoadPackage(LoadPackageParam))Gevonden正在启动。。。 06-12 11:45:31.457 I/Xposed(10704):模拟设置(com.example.stefan.testxposed.Tutorial#handleLoadPackage(LoadPackageParam))Gevonden正在启动

在这个日志文件中,我没有看到这两行返回: 详细日志(这是“beforeHookedMethod(MethodHookParam)”,“In de hook…”);
详细日志(这是“beforeHookedMethod(MethodHookParam)”,“In de hoook…”)

这是件愚蠢的事,它已经奏效了。。但是我没有触发WifiSettings onCreateContextMenu方法。扣动扳机后,它成功了!我假设xposed确实触发了该函数,但它不会。所以这是我自己的错误

这是愚蠢的事情,它已经起作用了。。但是我没有触发WifiSettings onCreateContextMenu方法。扣动扳机后,它成功了!我假设xposed确实触发了该函数,但它不会。所以这是我自己的错误

要么出现异常,要么方法没有运行?要么出现异常,要么方法没有运行?