首页
论坛
课程
招聘
未解决 [求助]求助frida的一些问题 50.00雪花
2021-11-28 23:33 2004

未解决 [求助]求助frida的一些问题 50.00雪花

2021-11-28 23:33
2004

frida,hook内部类如何去引用外部类的变量
this.this$0拿不到
frida中进行rpc调用,有个函数的参数接收的是object类型,传入时的数据是字符串数组string[],一直报类型错误,使用Java.cast转换也报错误,
代码片段:
let ipt = Java.array('java.lang.String', ["cookie", "tt=12345"]);
let JavaObject = Java.use("java.lang.Object");
let val = Java.cast(ipt, JavaObject);
相似问题描述:https://bbs.pediy.com/thread-261052.htm
求大佬解答


【公告】看雪招聘大学实习生!看雪20年安全圈的口碑,助你快速成长!

最后于 2021-11-28 23:35 被mb_spsnqspg编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 2893
活跃值: 活跃值 (1493)
能力值: ( LV4,RANK:56 )
在线值:
发帖
回帖
粉丝
yegu 活跃值 2021-11-30 12:07
2
0
好像以前碰到过
雪    币: 614
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
OnlyThen 活跃值 2021-11-30 13:24
3
0
样本发一下我研究看看
雪    币: 2024
活跃值: 活跃值 (1912)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
xhyeax 活跃值 2021-11-30 14:22
4
0

复现:创建Java函数,参数声明为java.lang.Object类型。Frida构造String数组后尝试调用。


直接传入String数组类型,提示参数类型不匹配,因为Frida没有做这层转换。

使用楼主方法转换,提示期望得到一个指针,因为Java.array的返回值没有$h属性。


查看types.js源码,可以发现创建数组时设置了$w属性。


解决方案:使用$w属性即可。

代码如下:

let ipt = Java.array('java.lang.String', ["cookie", "tt=12345"]);

let JavaObject = Java.use("java.lang.Object");

let val = Java.cast(ipt.$w, JavaObject);

最后于 2021-11-30 14:57 被xhyeax编辑 ,原因:
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_spsnqspg 活跃值 2021-11-30 17:13
5
0
xhyeax 复现:创建Java函数,参数声明为java.lang.Object类型。Frida构造String数组后尝试调用。直接传入String数组类型,提示参数类型不匹配,因为Frida没有做这层转换。使用楼 ...
不行,会报错:"TypeError: cannot read property '$h' of undefined"
雪    币: 2024
活跃值: 活跃值 (1912)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
xhyeax 活跃值 2021-11-30 17:26
6
0
mb_spsnqspg 不行,会报错:"TypeError: cannot read property '$h' of undefined"

可能是环境原因,测试环境Frida 15.1.11


你用的版本没有$w字段,可以在Frida CLI中创建一个Java.array


var ipt = Java.array('java.lang.String', ["cookie", "tt=12345"]);


然后输入ipt.$查看有哪些字段。


如果有这个字段的话,可以直接拿着它去主动调用,不需要使用Java.cast


比如有个test方法


let ipt = Java.array('java.lang.String', ["cookie", "tt=12345"]);

Java.use("com.example.MainActivity").test(ipt.$w);



最后于 2021-11-30 17:49 被xhyeax编辑 ,原因:
游客
登录 | 注册 方可回帖
返回