我有一个 ArrayBuffer,它是通过使用 Frida 读取内存返回的。我正在将 ArrayBuffer 转换为字符串,然后使用 TextDecoder 和 TextEncoder 将其转换回 ArrayBuffer,但是在此过程中结果正在改变。解码和重新编码后的 ArrayBuffer 长度总是更大。是否有广泛的字符解码?
如何在不丢失完整性的情况下将 ArrayBuffer 解码为字符串,然后返回到 ArrayBuffer?
示例代码:
var arrayBuff = Memory.readByteArray(pointer,2000); //Get a 2,000 byte ArrayBuffer
console.log(arrayBuff.byteLength); //Always returns 2,000
var textDecoder = new TextDecoder("utf-8");
var textEncoder = new TextEncoder("utf-8");
//Decode and encode same data without making any changes
var decoded = textDecoder.decode(arrayBuff);
var encoded = textEncoder.encode(decoded);
console.log(encoded.byteLength); //Fluctuates between but always greater than 2,000
Run Code Online (Sandbox Code Playgroud) 我在 Frida 中挂接一个 Java 方法,看起来像
public ABC setSomething(Collection<RandObject> things) {
this.things = new ArrayList(things);
return this;
}
Run Code Online (Sandbox Code Playgroud)
在 javascript 中,我能够记录things参数并打印出 RandObjects。我还可以执行 asize()并获取其中的元素总数。
我尝试迭代集合所做的任何事情都不起作用。您无法使用.get(X)或访问元素[X]。我不能这样做,Array.from因为弗里达似乎没有可用的。我相信我需要创建一个迭代器才能正确执行此操作。我怎样才能做到这一点?
我正在尝试实例化,Java.use("java.util.Iterator")但陷入困境。