如何在删除文件之前从应用程序内部文件夹复制文件?

时间:2018-10-21 12:32:26

标签: android apk decompiling

我正在对个人应用程序进行反向工程。

给定的应用程序在/ data / data的数据文件夹中创建一个文件“ a”,然后读取该文件并将其删除。我通过反编译apk发现了这一点。

在删除该文件之前,我有什么办法可以复制该文件? (我将手机固定在手机上,因此可以访问/ data / data文件夹)

1 个答案:

答案 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 方法,从而导致该文件未从文件系统中删除