gpt4 book ai didi

java - java Xpose中的findAndHookMethod代码是错误的。帮助!! (无此类方法错误)

转载 作者:行者123 更新时间:2023-12-01 16:30:38 26 4
gpt4 key购买 nike

Hook 目标:ButtonClickCount(int a)

如果下面的代码

public int ButtonClickCount()
{
return 1;
}

使用下面的 Hook 代码成功。

    findAndHookMethod(
"com.study.MainActivity",
lpparam.classLoader,
"ButtonClickCount",

new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
XposedBridge.log("before");
}

@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
XposedBridge.log("after");
param.setResult(10000);
}
}

);
}

但是,如果 ButtonClickCount 方法接收参数值,则会引发 NoSuchMethodError。

public int ButtonClickCount(int a)
{
return a++;
}

这是 findAndHookMethod 中的一个错误,我不知道要在代码中添加什么。

最佳答案

我解决了。

示例代码1

public int ButtonClickCount() {
return 1;
}

    findAndHookMethod(
"com.study.MainActivity",
lpparam.classLoader,
"ButtonClickCount",
new XC_MethodHook()

.

示例代码2

public int ButtonClickCount(int a) {
return a++;
}

.

    findAndHookMethod(
"com.study.MainActivity",
lpparam.classLoader,
"ButtonClickCount",
int.class,
new XC_MethodHook()

示例代码3

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView((int) R.layout.activity_main);
this.btn = (Button) findViewById(R.id.btn);
this.up = (TextView) findViewById(R.id.up);
this.btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {

.

    findAndHookMethod(
"com.study.MainActivity",
lpparam.classLoader,
"ButtonClickCount",
Bundle.class,
new XC_MethodHook()

从上面的示例代码中可以看出,如果您要 Hook 一个不带参数值的方法,您可以简单地输入类名、类加载器、方法名、对象。

但是,如果您从要 Hook 的方法中收到一个名为 int a 的 int 参数值 a,如示例代码 2 所示,则必须在 findAndHookMethod 中添加 int.class。如果您不添加它,您将在 Xposed 应用程序中看到 NoSuchMethodError。

如果您尝试像示例代码 3 中那样 Hook onCreate 方法,则 onCreate 方法将采用 Bundle 类型的参数。因此,您需要在findAndHookMethod中添加Bundle.class。

这份 DOC 帮助我解决了这个问题。 https://api.xposed.info/reference/de/robv/android/xposed/XposedHelpers.html#findAndHookMethod(java.lang.String,%20java.lang.ClassLoader,%20java.lang.String,%20java.lang.Object...)

如果这不起作用,请检查您的 Android Studio 版本。就我而言,我从版本 3.6.2 降级到版本 2.3.2,然后运行它。

我希望我的解决方案可以帮助别人。

关于java - java Xpose中的findAndHookMethod代码是错误的。帮助!! (无此类方法错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62048246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com