首页
社区
课程
招聘
[已解决] Hook问题 240.00雪花
发表于: 2018-4-17 09:48 3285

[已解决] Hook问题 240.00雪花

2018-4-17 09:48
3285
 public static String a(String str, String str2) {...} ;

这个参数只需要目标函数,在我Hook  init 后,使用Myhook函数就可以主动调用了


public static void init(ClassLoader classLoader) {      

hook = XposedHelpers.findClass("com.xxx.xxx", classLoader);   

}    

public static String Myhook(String str, String str2) {       

 return (String) XposedHelpers.callStaticMethod(hook, "a", new Object[]{str, str2});   

 }


但是同理,用在 public String a(String str, String str2){...};却失效了

他们两个只差了一个 static,一个可以调用,一个不可以调用是为什么。

然后请问下大神们有什么方法去解决这个主动调用问题么。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2018-4-17 09:51 被小童net编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 1573
活跃值: (198)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
static表示全局函数,它的地址在全局区;而没有static的话地址是在栈里,栈里的地址是会变化的
2018-4-18 18:58
0
雪    币: 172
活跃值: (1623)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
你需要实例化一个a所在的类对象obj,用这个obj来主动调用非static  a函数
2018-4-18 19:46
0
雪    币: 3700
活跃值: (2659)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
4
1.有static修饰的是静态函数,没有static的是类成员函数,他们的区别在于后者比前者多一个参数,即this隐含参数;
2.解决办法是把this作为参数传进去。
2018-4-18 23:16
0
雪    币: 6
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
一个静态方法,一个非静态方法,静态方法可以直接类名.方法调用。非静态方法需要new一个实例调用
你可以看下下面代码
Object  initObject=  newInstance(findClass(hook  ,classLoader));
2018-4-23 18:52
0
雪    币: 6
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6

你可以试试下面代码
Object    initObject=    newInstance(findClass(hook    ,classLoader));
XposedHelpers.callMethod(initObject,  "a",  new  Object[]{str,  str2});     
2018-4-23 18:54
0
雪    币: 6
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不好意思,上面写错

Object        initObject=        XposedHelpers.newInstance(hook  );
XposedHelpers.callMethod(initObject,    "a",    new    Object[]{str,    str2});           

2018-4-23 18:57
0
雪    币: 1371
活跃值: (5599)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
8
普通的,找到,对象和方法,然后保存成一个变量进行调用。
静态的,直接调用。
2018-5-2 15:48
0
游客
登录 | 注册 方可回帖
返回
//