1234下一页
返回列表 发新帖

XposedHook api介绍 第二篇XpHook 普通函数和构造函数 菜鸡教程

  [复制链接]
回帖奖励 2 金币 回复本帖可获得 1 金币奖励! 每人限 1 次(中奖概率 10%)

10

主题

73

帖子

321

积分

初中生

Rank: 3Rank: 3

金币
62
好评
12
贡献
0
QQ
发表于 2021-10-31 11:55:03 来自手机  | 显示全部楼层 | 阅读模式
XpHook 普通函数和构造函数上一节课讲了XpHook 普通变量的一些简单方法这节课讲一下hook普通方法和构造方法的一些手段
项目就用上一节课的继续开始讲 首先如果说你想hook一个普通方法 肯定要先找到这个类 然后找到这个类的方法
找到这个类我们用
  1. //xp自带的aip获取当前的class 就可以了
  2. //java获取类的方式有很多这里就不一一介绍了
  3. Class clazz = XposedHelpers.findClass("包名", loadPackageParam.classLoader);
复制代码
获取到类之后我们需要获取到方法 java寻找方法的方法是通过方法名和参数列表寻找的所以说我们先通过xp里的XposedHelpers.findAndHookMethod方法去寻找类我们来看一下XposedHelpers.findAndHookMethod方法可以传的参数
我们点击过去看一下源码

可以看到需要传的参数有两种
第一种是findAndHookMethod(Class<?> clazz, String methodName, Object... parameterTypesAndCallback)
第二种是findAndHookMethod(String className, ClassLoader classLoader, String methodName, Object... parameterTypesAndCallback)
这里我简单给大家说一下这两个都可以穿什么参数 第一种:第一个参数是clazz 就是类的字节码参数 上面我们已经看到了clazz通过findclass获取 第二个参数是方法名 第三个可以看到是一个可变参数Object 这里传入的就是方法列表 最后传入一个回调函数即可
第二种:可以看到第一个参数是string类型 这里传入一个类的全路径名就比如java.lang.String 自定义类型也可以这样传入 第二个参数传入一个calssloder 第三个传入方法名 第四个参数可以看到就是一个可变参数Object 这里传入的就是方法列表 最后传入一个回调函数即可
理论说完了我们来写一下简单的代码
  1. //参数列表怎么获取呢 这里其实是获取参数列表的字节码文件 如果说是只有一个string参数我们就传入一个 string.class 然后最后添加一个回调函数
  2.             XposedHelpers.findAndHookMethod(clazz, "方法名", String.class, new XC_MethodHook() {
  3.                 @Override
  4.                 protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
  5.                     super.beforeHookedMethod(param);
  6.                 }

  7.                 @Override
  8.                 protected void afterHookedMethod(MethodHookParam param) throws Throwable {
  9.                     super.afterHookedMethod(param);
  10.                 }
  11.             });
复制代码



这样我们就完成了一次对java普通有参数的hook 接下来我们说一下对无参数方法如何进行hook
聪明的同学已经想到了不添加方法列表就行了只填写方法名即可 对就是这个样子我们来写一下代码
  1. //如果说你需要hook一个没有参数的普通方法写一个方法名即可
  2.             XposedHelpers.findAndHookMethod(clazz, "方法名",  new XC_MethodHook() {
  3.                 @Override
  4.                 //在被hook的方法之前执行这里的代码
  5.                 protected void beforeHookedMethod(MethodHookParam param) throws Throwable {

  6.                 }

  7.                 @Override
  8.                 //在被hook的方法执行之后执行这里的代码
  9.                 protected void afterHookedMethod(MethodHookParam param) throws Throwable {

  10.                 }
  11.             });
复制代码

这样就做好啦我们来想一下如何hook构造函数是不是只需要找到类就可以了呢答案是正确的就只需要找到类就行了
  1. //这里是hook无参数构造
  2.             XposedHelpers.findAndHookConstructor(clazz, new XC_MethodHook() {

  3.                 @Override
  4.                 //在被hook的方法之前执行这里的代码
  5.                 protected void beforeHookedMethod(MethodHookParam param) throws Throwable {

  6.                 }

  7.                 @Override
  8.                 //在被hook的方法执行之后执行这里的代码
  9.                 protected void afterHookedMethod(MethodHookParam param) throws Throwable {

  10.                 }
  11.             });
  12.             //这里是hook有参数构造方法参数为string
  13.             XposedHelpers.findAndHookConstructor(clazz, String.class, new XC_MethodHook() {
  14.                 @Override
  15.                 //在被hook的方法之前执行这里的代码
  16.                 protected void beforeHookedMethod(MethodHookParam param) throws Throwable {

  17.                 }

  18.                 @Override
  19.                 //在被hook的方法执行之后执行这里的代码
  20.                 protected void afterHookedMethod(MethodHookParam param) throws Throwable {

  21.                 }
  22.             });
复制代码
好了这节课就到这里下节课我们说一下hook复杂参数 和 内部类 和匿名内部类
有兴趣的小伙伴可以加我的群来一起学习交流


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
已有2人评分好评 金币 理由
你是小兔叽嘛 + 1 + 1 很给力!
强强yqq + 1 好帖

查看全部评分 总评分:好评 +2  金币 +1 

q 1430607429
群801362831
回复

使用道具 举报

10

主题

73

帖子

321

积分

初中生

Rank: 3Rank: 3

金币
62
好评
12
贡献
0
QQ
发表于 2021-10-31 11:56:53 来自手机  | 显示全部楼层
嘤嘤嘤嘤嘤
回复

使用道具 举报

3

主题

127

帖子

403

积分

初中生

Rank: 3Rank: 3

金币
76
好评
0
贡献
0
发表于 2021-10-31 11:57:56 来自手机  | 显示全部楼层
大佬大佬
回复

使用道具 举报

26

主题

1248

帖子

3499

积分

大学生

Rank: 5Rank: 5

金币
930
好评
2
贡献
0
发表于 2021-10-31 12:02:09 来自手机  | 显示全部楼层
金币金币
回复

使用道具 举报

26

主题

1248

帖子

3499

积分

大学生

Rank: 5Rank: 5

金币
930
好评
2
贡献
0
发表于 2021-10-31 12:02:42 来自手机  | 显示全部楼层
不行,我要金币
回复

使用道具 举报

0

主题

135

帖子

419

积分

初中生

Rank: 3Rank: 3

金币
232
好评
1
贡献
0
发表于 2021-10-31 12:03:10 来自手机  | 显示全部楼层
想要金币
回复

使用道具 举报

26

主题

1248

帖子

3499

积分

大学生

Rank: 5Rank: 5

金币
930
好评
2
贡献
0
发表于 2021-10-31 12:03:11 来自手机  | 显示全部楼层
啊啊啊啊啊啊啊……金币啊啊啊啊啊
回复

使用道具 举报

26

主题

1248

帖子

3499

积分

大学生

Rank: 5Rank: 5

金币
930
好评
2
贡献
0
发表于 2021-10-31 12:04:21 来自手机  | 显示全部楼层
回复

使用道具 举报

26

主题

1248

帖子

3499

积分

大学生

Rank: 5Rank: 5

金币
930
好评
2
贡献
0
发表于 2021-10-31 12:04:48 来自手机  | 显示全部楼层
金币第一次
回复

使用道具 举报

26

主题

1248

帖子

3499

积分

大学生

Rank: 5Rank: 5

金币
930
好评
2
贡献
0
发表于 2021-10-31 12:05:14 来自手机  | 显示全部楼层
再不中我就不要
回复

使用道具 举报

13

主题

1531

帖子

6548

积分

硕士生

Rank: 6Rank: 6

金币
1560
好评
8
贡献
0

MT论坛最佳新人考神

发表于 2021-10-31 12:06:21 来自手机  | 显示全部楼层

回帖奖励 +1 金币

XposedHook
回复

使用道具 举报

15

主题

912

帖子

2771

积分

大学生

Rank: 5Rank: 5

金币
725
好评
0
贡献
0

MT论坛帅哥考神MT论坛新人

发表于 2021-10-31 12:15:45 来自手机  | 显示全部楼层

回帖奖励 +1 金币

感谢分享,学到了
回复

使用道具 举报

15

主题

5116

帖子

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
138
好评
3
贡献
0
发表于 2021-10-31 12:26:33 来自手机  | 显示全部楼层
厉害厉害
回复

使用道具 举报

13

主题

447

帖子

1575

积分

高中生

Rank: 4

金币
315
好评
1
贡献
0
发表于 2021-10-31 12:28:16 来自手机  | 显示全部楼层

回帖奖励 +1 金币

我是菜鸡
回复

使用道具 举报

16

主题

235

帖子

691

积分

初中生

Rank: 3Rank: 3

金币
94
好评
2
贡献
1

考神MT论坛帅哥MT论坛新人

发表于 2021-10-31 12:51:39 来自手机  | 显示全部楼层
来了牛牛
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表