Viewing All Read and Write Files

by
4 views 4e56f552...

Description

Script to view all files (and its contents) that app read or write.

How to Use

Download the script and run it with Frida CLI:

Download Script

Then run with Frida:

frida -U -f YOUR_PACKAGE_NAME -l viewing-all-read-and-write-files.js

Replace YOUR_PACKAGE_NAME with the target app's package name.

Source Code

JavaScript
Java.perform(function() {
    var Activity = Java.use('android.app.Activity');
    var FileOutputStream = Java.use('java.io.FileOutputStream');
    var File = Java.use('java.io.File');
    var InputStreamReader = Java.use('java.io.InputStreamReader');
    var BufferedReader = Java.use('java.io.BufferedReader');
    var ByteArrayOutputStream = Java.use('java.io.ByteArrayOutputStream');

    // Intercept method openFileInput 
    Activity.openFileInput.overload('java.lang.String').implementation = function(filename) {
        var file = File.$new(filename);
        var filePath = file.getAbsolutePath();
        console.log('Activity:', this.getClass().getName());
        console.log('Opening read files:', filePath);

        var fileInputStream = this.openFileInput(filename);

        var inputStreamReader = InputStreamReader.$new(fileInputStream);
        var bufferedReader = BufferedReader.$new(inputStreamReader);
        var line;
        while ((line = bufferedReader.readLine()) !== null) {
            console.log('File content:', line);
        }

        bufferedReader.close();
        inputStreamReader.close();
        fileInputStream.close();

        return fileInputStream;
    };

    Activity.openFileOutput.overload('java.lang.String', 'int').implementation = function(filename, mode) {
        var file = File.$new(filename);
        var filePath = file.getAbsolutePath();
        console.log('Activity:', this.getClass().getName());
        console.log('Opening write files:', filePath);

        var fileOutputStream = this.openFileOutput.call(this, filename, mode);

        fileOutputStream.write.overload('[B', 'int', 'int').implementation = function(buffer, offset, count) {
            var byteArrayOutputStream = ByteArrayOutputStream.$new();
            byteArrayOutputStream.write(buffer, offset, count);
            var content = byteArrayOutputStream.toString();
            console.log('Write files content:', content);

            this.write(buffer, offset, count);
        };

        return fileOutputStream;
    };
});
Share this script:
Twitter LinkedIn

Comments

Login or Sign up to leave a comment.
Loading comments...