You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Frida技术问题:如何读取java.lang.String数组数据?

问题解决:读取Hook到的String数组参数值

报错原因

你打印出的[Ljava.lang.String;表示这是Java字符串数组,而非单个Object对象。虽然String继承自Object,但Java中String[]和Object[]是不同的数组类型;再加上Arrays.asList的可变参数重载会把传入的数组当作单个参数处理(可变参数本质是数组),导致Frida找不到匹配的方法重载,因此报错。

正确读取数组内容的方法

方法一:直接遍历数组(推荐)

无需借助Arrays.asList,直接判断对象是否为数组并遍历打印元素:

console.log(`Object type: ${obj.getClass().getName()}`);

// 判断是否为数组类型
if (obj.getClass().isArray()) {
    const arrLength = Java.arrayLength(obj);
    console.log("Array content:");
    for (let i = 0; i < arrLength; i++) {
        const element = Java.arrayGet(obj, i);
        console.log(`[${i}]: ${element}`);
    }
} else {
    // 非数组场景的处理逻辑
    console.log("Content:", obj);
}

方法二:适配Arrays.asList重载

如果一定要使用Arrays.asList,需要将String数组转为Object数组以匹配方法重载:

console.log(`Object type: ${obj.getClass().getName()}`);
let Arrays = Java.use('java.util.Arrays');
// 将String数组转为Object数组,匹配asList的可变参数重载
let arrayList = Arrays.asList.apply(null, Java.cast(obj, Java.use('[Ljava.lang.Object;')));
console.log(arrayList);

内容的提问来源于stack exchange,提问作者Duy Thành Vũ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 09:39:51