我正在对个人应用程序进行反向工程。
给定的应用程序在/ data / data的数据文件夹中创建一个文件“ a”,然后读取该文件并将其删除。我通过反编译apk发现了这一点。
在删除该文件之前,我有什么办法可以复制该文件? (我将手机固定在手机上,因此可以访问/ data / data文件夹)
答案 0 :(得分:1)
假设我们正在谈论的是Android设备。
您应该使用 Frida (https://www.frida.re/)在系统上挂钩 取消链接方法。如您在这里看到的:http://man7.org/linux/man-pages/man2/unlink.2.html,此方法是底层的UNIX调用,负责删除文件系统中的条目。
您可以创建一个临时钩子来检查文件名(第一个参数),如果它包含 / data / data / ,那么您将返回而不是实际删除文件。
'use strict';
Interceptor.attach(Module.findExportByName('libc.so', 'unlink'), {
onEnter(args) {
/*
* This code block will be called before the real 'unlink'
* method. Allowing us to change its behaviour.
*/
const fileName = Memory.readUtf8String(args[0]);
if (fileName.indexOf('/data/data/') !== -1) {
Memory.writeUtf8String(args[0], '/invalid/path');
}
}
});
就这么简单!如果我们检测到要删除的文件位于目标目录中,则会将无效路径传递给 unlink 方法,从而导致该文件未从文件系统中删除