Предполагается, что речь идет об устройстве 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 неверный путь , в результате чего файл не удаляется из файловой системы.