首页
社区
课程
招聘
[求助]Xposed中,要hook的方法的参数是自定义类数组,怎么写,谢谢?
发表于: 2015-7-6 21:58 32249

[求助]Xposed中,要hook的方法的参数是自定义类数组,怎么写,谢谢?

2015-7-6 21:58
32249
Xposed中,想HOOK一个方法A(String a,Map b,C[] c);,其中C是自定义类。请问各位大神这个方法应该如何HOOK啊?
findAndHookMethod("com.test.b", lpparam.classLoader, "A",Strig.class,Map.class,C的参数类型, new XC_MethodHook() {

这里的C的参数类型怎么填啊??谢谢各位大神了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (38)
雪    币: 168
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
C[].class 试试呢
2015-7-7 20:38
0
雪    币: 38
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=米利托;1379940]C[].class 试试呢...[/QUOTE]
试过了不好使。。并且C[].class 直接就会报错的。。。C找不到。。。像这是数组的,就算是C类型,不是数组的,都不能这么写。。。求助啊  哭。。。。
2015-7-12 18:50
0
雪    币: 168
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=一升米雾;1380862]试过了不好使。。并且C[].class 直接就会报错的。。。C找不到。。。像这是数组的,就算是C类型,不是数组的,都不能这么写。。。求助啊  哭。。。。[/QUOTE]

没看到c是自定义的,那就用findclass方法把它找到
2015-7-12 19:48
0
雪    币: 215
活跃值: (372)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
http://www.codefrom.com/c/62  也许能帮到你
2015-7-13 09:55
0
雪    币: 200
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
用class.forname(),亲测没有问题
2015-7-14 22:43
0
雪    币: 38
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
但是 是c数组啊。。。不是原始的c。。原始的c已经好使了。  我想用c数组 得怎么写啊?谢谢了
2015-7-17 20:46
0
雪    币: 38
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
但是 是c数组啊。。。不是原始的c。。原始的c已经好使了。  我想用c数组 得怎么写啊?谢谢了
2015-7-17 20:47
0
雪    币: 38
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
大神请问 具体是怎么写的  我这里的是入参 是自定义类C的 数组格式的  得怎么hook??谢谢了
2015-7-17 20:48
0
雪    币: 38
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这里只写到自定义类c了 而我这里是C[] 数组格式的。。。还是不知道怎么写。。。
2015-7-17 20:49
0
雪    币: 189
活跃值: (192)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
public static void main(String[] args) throws ClassNotFoundException {
        Class clazz =  Class.forName("[I");
        System.out.println(clazz.getName());
        clazz =  Class.forName("[[[[Ljava.lang.String;");
        System.out.println(clazz.getName());
    }
2015-7-18 09:52
0
雪    币: 38
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
[QUOTE=zerofile;1381938]public static void main(String[] args) throws ClassNotFoundException {
        Class clazz =  Class.forName("[I");
        System.out.println(clazz.ge...[/QUOTE]

大神,还是不行,这个apk是分包的。。要用的C类在第二个dex包中。。用for calss的话加载器不对

Class<?> hookMessageListenerClass=  lpparam.classLoader.loadClass("[Lcom.test.hehe.C");

我这么写的报
java.lang.ClassNotFoundException: Didn't find class "[Lcom.test.hehe.C"
这个错误,如果写成Class<?> hookMessageListenerClass=  lpparam.classLoader.loadClass("com.test.hehe.C");是可以找到的。。。。

关键是 我想要数组格式啊。。。大神帮忙再看看吧。。我想要数组格式的话 得怎么再改改呢??
2015-7-18 22:20
0
雪    币: 189
活跃值: (192)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
forName有一个重载版本,指定clazzload就好了.
forName(clazzName, false, clazzLoad)
第二个参数是,活取clazz时候初始化,一般用false就行了.
2015-7-20 09:43
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
直接字符串"C[]"试试
2015-7-22 15:39
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
不用这么麻烦字符串就行如:"aaa[]",已试过
2015-7-23 20:02
0
雪    币: 38
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
[QUOTE=Kidstart;1382534]直接字符串"C[]"试试[/QUOTE]

这个我早就试过了 根本不行
2015-7-23 23:14
0
雪    币: 38
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
[QUOTE=crazywk;1382797]不用这么麻烦字符串就行如:"aaa[]",已试过[/QUOTE]

兄弟。起码得带包名,不带包名的更不行。你那个测试是就一个包,并且包里就一个aaa类,当你有多个包,包里有同名类的时候,你再试试。。呵呵
2015-7-23 23:15
0
雪    币: 38
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
大神,我尝试了各种写法,还是不行,一直报java.lang.ClassNotFoundException:类找不到

我包名叫 com.test.abc  我的自定义类名叫C,
这里的clazzName   我尝试用"[Lcom.test.abc.C;","[Lcom.test.abc.C","[[[[Lcom.test.abc.C;"这3种格式,都报类找不到。大神啊 再给指点下吧。。
2015-7-23 23:49
0
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
直接object岂不更好

其实,为什么用类的数组,印象中基本类型数组使用比较多,类数组基本都是ArrayList之类的方式
2015-7-24 10:10
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
非要我贴代码上来吗?
2015-7-24 11:58
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
"aaa.bbb.ccc.ddd[]"不不行了么
你这个应该就是"com.test.abc.C[]"
2015-7-24 12:00
0
雪    币: 38
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
[QUOTE=crazywk;1382902]"aaa.bbb.ccc.ddd[]"不不行了么
你这个应该就是"com.test.abc.C[]"[/QUOTE]

不好使 。。。这种是我第一个就试验了的。。。我都快疯了。。尝试各种了。。。
2015-7-27 15:30
0
雪    币: 38
活跃值: (90)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
报错啊 报该方法不存在啊
2015-7-27 15:33
0
雪    币: 188
活跃值: (920)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
遇到了同样的问题
2015-8-13 18:03
0
雪    币: 44
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
25
[QUOTE=zerofile;1381938]public static void main(String[] args) throws ClassNotFoundException {
        Class clazz =  Class.forName("[I");
        System.out.println(clazz.ge...[/QUOTE]

不知道大家有没有解决这个问题,我研究了一天,总算搞明白了,[I 这个是怎么来的。
首先.class的意思是类的类型,明白这个以后,接下来就找数组的类类型了。以下是我的测试代码:

                String[] stringArray = new String[]{"1","2"};  
                System.out.println(stringArray.getClass().isArray()); // true  
                System.out.println(stringArray.getClass().getName()); //class java.lang.String  
                          
                int[] intArray = new int[]{1,2};  
                System.out.println(intArray.getClass().isArray()); // true  
                System.out.println(intArray.getClass().getName()); //int
               
                byte[] byteArray = new byte[]{'a','b'};  
                System.out.println(byteArray.getClass().isArray()); // true  
                System.out.println(byteArray.getClass().getName()); //byte
               
                Base64[] base64 = new Base64[]{};
                System.out.println(base64.getClass().isArray()); // true  
                System.out.println(base64.getClass().getName()); //base64
               
                MainActivity[] ativity = new MainActivity[]{};
                System.out.println(ativity.getClass().isArray()); // true  
                System.out.println(ativity.getClass().getName()); //ativity

-------------------------

结果为:

I/System.out(4247): true
I/System.out(4247): [Ljava.lang.String;
I/System.out(4247): true
I/System.out(4247): [I
I/System.out(4247): true
I/System.out(4247): [B
I/System.out(4247): true
I/System.out(4247): [Lcom.example.testclasstype.Base64;
I/System.out(4247): true
I/System.out(4247): [Lcom.example.testclasstype.MainActivity;

希望对大家有帮助!
2015-11-5 11:02
0
游客
登录 | 注册 方可回帖
返回
//