Как скопировать файл из внутренней папки приложения перед его удалением? - PullRequest
0 голосов
/ 21 октября 2018

Я занимаюсь разработкой приложения для личного пользования.

Данное приложение создает файл - "a" - внутри своей папки данных в / data / data, читает его и затем удаляет.Я выяснил это, декомпилировав apk.

Можно ли как-то скопировать этот файл до того, как он будет удален?(Я рутировал свой телефон, поэтому у меня есть доступ к папке / data / data)

1 Ответ

0 голосов
/ 25 октября 2018

Предполагается, что речь идет об устройстве Android.

Вы должны использовать Frida (https://www.frida.re/) до hook unlink метод в вашей системе. Как вы можете видеть здесь: 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 неверный путь , в результате чего файл не удаляется из файловой системы.

...