import frida
import sys
import time
import argparse
parser = argparse.ArgumentParser(description='Frida demo.')
parser.add_argument("-f", "--file", help="target file to run", required=True)
args = parser.parse_args()
pid = frida.spawn(args.file)
session = frida.attach(pid)
time.sleep(1)
script = session.create_script("""
console.log("Load Win32 calls ....");
console.log("------------------------ CREATED FILES -------------------------------");
var createfileA = Module.getExportByName("KERNEL32.DLL", "CreateFileA");
Interceptor.attach(createfileA,
{
onEnter: function (args)
{
console.log('CreateFileA: ' + args[0].readAnsiString());
}
});
var createfileW = Module.getExportByName("KERNEL32.DLL", "CreateFileW");
Interceptor.attach(createfileW,
{
onEnter: function (args)
{
console.log('CreateFileW: ' + args[0].readAnsiString());
}
});
console.log("------------------------ CREATED Mutex -------------------------------");
var createmutexw = Module.getExportByName("KERNEL32.DLL", "CreateMutexW");
var createmutexExA = Module.getExportByName("KERNEL32.DLL", "CreateMutexExA");
var createmutexExW = Module.getExportByName("KERNEL32.DLL", "CreateMutexExW");
var openmutexW = Module.getExportByName("KERNEL32.DLL", "OpenMutexW");
Interceptor.attach(createmutexw,
{
onEnter: function (args)
{
console.log('CreateMutexW: ' + args[2].readAnsiString());
}
});
Interceptor.attach(createmutexExA,
{
onEnter: function (args)
{
console.log('CreateMutexExA: ' + args[1].readAnsiString());
}
});
Interceptor.attach(createmutexExW,
{
onEnter: function (args)
{
console.log('CreateMutexExW: ' + args[1].readUtf16String());
}
});
Interceptor.attach(openmutexW,
{
onEnter: function (args)
{
console.log('OpenMutexW: ' + args[2].readUtf16String());
}
});
""")
script.load()
frida.resume(pid)