需要注意的是
let ax = [];
function f1() {
let addr = Memory.alloc(256);
for (let i = 0; i < 7; i++) {
let m = addr.add(i*12);
m.writeByteArray([1,1,1,1]);
ax.push(_addr);
}
}
function f1() {
for (let i = 0; i < 7; i++) {
hexdump 打印 ax[i]
}
}
发现ax发生了改变
这是因为frida 的垃圾回收机制
let addr = Memory.alloc(256);声明到局部,后面frida回收了内存
因此需要把地址声明到全局
let ax = [];
let addr;
function f1() {
addr = Memory.alloc(256);
for (let i = 0; i < 7; i++) {
let m = addr.add(i*12);
m.writeByteArray([1,1,1,1]);
ax.push(_addr);
}
}
function f1() {
for (let i = 0; i < 7; i++) {
hexdump 打印 ax[i]
}
}