关于参数问题
📌 如果方法是这样
public int addNumbers(int a, int b) {
return a + b;
}
📌 Hook 代码
XposedHelpers.findAndHookMethod("com.example.app.Calculator",
lpparam.classLoader,
"addNumbers",
int.class, int.class, // 两个参数,都是 int
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
XposedBridge.log("[+] addNumbers 被 Hook,参数: " + param.args[0] + ", " + param.args[1]);
}
});
📌 beforeHookedMethod 和 afterHookedMethod 的区别
💡 简单理解
| 方法 | 执行时机 | 作用 |
|---|---|---|
beforeHookedMethod |
目标方法执行前 | 获取/修改参数,阻止方法执行 |
afterHookedMethod |
目标方法执行后 | 获取/修改返回值 |
beforeHookedMethod
✅ beforeHookedMethod 作用
- 在方法执行前,获取参数 →
param.args[0] - 修改参数,让方法运行时使用新的参数 →
param.args[0] = "NewValue" - 阻止目标方法执行 →
param.setResult(null)
beforeHookedMethod 获取参数
📌 如果目标方法是
public void setUserInfo(String username, int age) {
System.out.println("User: " + username + ", Age: " + age);
}
📌 Hook 代码
XposedHelpers.findAndHookMethod("com.example.app.UserManager",
lpparam.classLoader,
"setUserInfo",
String.class, int.class, // 方法的参数类型
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
// 获取方法的参数
String username = (String) param.args[0];
int age = (int) param.args[1];
XposedBridge.log("[+] 用户名: " + use

&spm=1001.2101.3001.5002&articleId=145532978&d=1&t=3&u=c0b7d0ce4b4e4bc99198e780dd727372)
1万+

被折叠的 条评论
为什么被折叠?



