搞了2个小时,需要查看目标apk保存日志的文件到底是什么。于是要把文件使用frida保存下来。以下是成功代码:
function saveFile(sourceFile, outPath) {
//文件的目录为linux,包名下的,如:"/data/user/0/com.ximalaya.ting.lite/files/bkxx.txt",其它目录如sdcard是没有权限读取的,可以用trycatch查看报错。
console.log("正在保存文件....");
if((sourceFile.exists()) && (sourceFile.isFile())) {
var File = Java.use("java.io.File");
var FileInputStream = Java.use("java.io.FileInputStream");
var FileOutputStream = Java.use("java.io.FileOutputStream");
var fis = FileInputStream.$new(sourceFile);
var file = File.$new(outPath);
if (file.exists() && file.isFile()) {
console.log("文件已找到", outPath);
}else{
try {
if (file.createNewFile()) {
console.log("File created: " + file.getName());
} else {
console.log("Failed to create file.");
}
} catch (e) {
console.log(e)
}
}
var fos = FileOutputStream.$new(file);
// var bufferClass = Java.use("[B");
// var buffer = bufferClass.$new(1024);
var buffer = Java.array('byte', [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]);
var bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
fos.write(buffer, 0, bytesRead);
}
// fis.close();
fos.close();
console.log("File copied successfully.");
}else {
console.log("源文件不存在或者不是文件类型")
}
}
export default saveFile