rms-runtime-mobile-security
Version:
Runtime Mobile Security (RMS), powered by FRIDA, is a powerful web interface that helps you to manipulate Android and iOS Apps at Runtime
616 lines ⢠56.5 kB
JavaScript
š¦
24747 /agent/RMS_core.js.map
31699 /agent/RMS_core.js
ā
{"version":3,"file":"RMS_core.js","sourceRoot":"/Users/paul_1991/Desktop/RMS-Runtime-Mobile-Security/","sources":["agent/RMS_core.js"],"names":[],"mappings":"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"}
ā
/******************************************************************************
* Exported APIs
1. loadclasses()
2. loadclasseswithfilter([filters], isRegex, isCase, isWhole)
3. loadmethods([loaded_classes])
4. loadcustomfridascript(frida_script)
5. hookclassesandmethods([loaded_classes], [loaded_methods], template)
6. generatehooktemplate([loaded_classes], [loaded_methods], template)
7. heapsearchtemplate([loaded_classes], [loaded_methods], template)
8. apimonitor([api_to_monitor])
9. getappenvinfo()
10. listfilesatpath(path)
******************************************************************************/
rpc.exports = {
checkmobileos: function () {
if (Java.available)
return "Android";
if (ObjC.available)
return "iOS";
return "N/A";
},
loadclasses: function () {
if (Java.available)
return load_classes_Android();
else
return load_classes_iOS();
},
loadclasseswithfilter: function (filter, isRegex, isCase, isWhole) {
if (Java.available)
return load_classes_with_filter_Android(filter, isRegex, isCase, isWhole);
else
return load_classes_with_filter_iOS(filter, isRegex, isCase, isWhole);
},
loadmethods: function (loaded_classes) {
if (Java.available)
return load_methods_Android(loaded_classes);
else
return load_methods_iOS(loaded_classes);
},
loadcustomfridascript: function (frida_script) {
if (Java.available)
load_frida_custom_script_Android(frida_script);
else
load_frida_custom_script_iOS(frida_script);
},
hookclassesandmethods: function (loaded_classes, loaded_methods, template) {
if (Java.available)
hook_classes_and_methods_Android(loaded_classes, loaded_methods, template);
else
hook_classes_and_methods_iOS(loaded_classes, loaded_methods, template);
},
generatehooktemplate: function (loaded_classes, loaded_methods, template) {
if (Java.available)
return generate_hook_template_Android(loaded_classes, loaded_methods, template);
else
return generate_hook_template_iOS(loaded_classes, loaded_methods, template);
},
heapsearchtemplate: function (loaded_classes, loaded_methods, template) {
if (Java.available)
return heap_search_template_Android(loaded_classes, loaded_methods, template);
else
return heap_search_template_iOS(loaded_classes, loaded_methods, template);
},
apimonitor: function (api_to_monitor) {
if (Java.available)
api_monitor_Android(api_to_monitor);
else
api_monitor_iOS(api_to_monitor);
},
getappenvinfo: function () {
if (Java.available)
return get_app_env_info_Android();
else
return get_app_env_info_iOS();
},
listfilesatpath: function (path) {
if (Java.available)
return list_files_at_path_Android(path);
else
return list_files_at_path_iOS(path);
}
};
/*
***********************************************************************
*************************** Android - Stuff ***************************
***********************************************************************
*/
function load_classes_Android() {
var loaded_classes = [];
Java.perform(function () {
Java.enumerateLoadedClasses({
onMatch: function (className) {
//Remove too generics
if (className.length > 5 &&
//skip androidx stuff
!className.includes("androidx"))
loaded_classes.push(className);
}
});
});
return loaded_classes;
}
function load_classes_with_filter_Android(filter, isRegex, isCase, isWhole) {
var loaded_classes = [];
Java.perform(function () {
Java.enumerateLoadedClasses({
onMatch: function (className) {
//lowercase if not case sensitive
var originalClassName = className;
className = isCase ? className : className.toLowerCase();
filter = isCase ? filter : filter.toLowerCase();
//check if a filter exists
if (filter != null) {
//Regex
if (isRegex) {
if (className.search(filter) > -1) {
loaded_classes.push(originalClassName);
}
//Not regex
}
else {
//check if we have multiple filters (comma separated list)
var filter_array = filter.split(",");
filter_array.forEach(function (f) {
if (isWhole) { //f.trim() is needed to remove possibile spaces after the comma
if (className == f.trim()) {
loaded_classes.push(originalClassName);
}
}
else { //f.trim() is needed to remove possibile spaces after the comma
if (className.startsWith(f.trim())) {
loaded_classes.push(originalClassName);
}
}
});
}
}
}
});
});
return loaded_classes;
}
function load_methods_Android(loaded_classes) {
var loaded_methods = {};
Java.perform(function () {
loaded_classes.forEach(function (className, index) {
var jClass;
var classMethods_dirty;
var classMethods = [];
//catch possible issues
try {
jClass = Java.use(className);
classMethods_dirty = jClass.class.getDeclaredMethods();
}
catch (err) {
send("Exception while loading methods for " + className);
//skip current loop
loaded_methods[className] = classMethods; //is empty
return;
}
classMethods_dirty.forEach(function (m) {
var method_and_args = {};
//Cleaning up
m = m.toString();
//add info for the UI
method_and_args["ui_name"] = m.replace(className + ".", "");
// Remove generics from the method
while (m.includes("<")) {
m = m.replace(/<.*?>/g, "");
}
// remove "Throws"
if (m.indexOf(" throws ") !== -1) {
m = m.substring(0, m.indexOf(" throws "));
}
// remove scope and return type declarations
m = m.slice(m.lastIndexOf(" "));
// remove the class name
m = m.replace(className + ".", "");
// remove the signature (args)
method_and_args["name"] = m.split("(")[0].trim();
// get the args
var args_dirty = ((/\((.*?)\)/.exec(m)[1]).trim());
// add quotes between every arg
var args_array = args_dirty.split(",");
var args_srt = "";
for (var i = 0; i < args_array.length; i++) {
// check if the current arg is an array
var arg = args_array[i];
if (arg.includes("[]")) {
// arg is an array --> smali notation conversion
if (arg.includes("."))
arg = "L" + arg + ";";
else if ((/boolean/i).test(arg))
arg = "Z" + arg.replace(/boolean/i, "");
else if ((/byte/i).test(arg))
arg = "B" + arg.replace(/byte/i, "");
else if ((/char/i).test(arg))
arg = "C" + arg.replace(/char/i, "");
else if ((/double/i).test(arg))
arg = "D" + arg.replace(/double/i, "");
else if ((/float/i).test(arg))
arg = "F" + arg.replace(/float/i, "");
else if ((/int/i).test(arg))
arg = "I" + arg.replace(/int/i, "");
else if ((/long/i).test(arg))
arg = "J" + arg.replace(/long/i, "");
else if ((/short/i).test(arg))
arg = "S" + arg.replace(/short/i, "");
else
arg = "L" + arg + ";";
}
while (arg.includes("[]")) {
arg = arg.replace("[]", "");
arg = "[" + arg;
}
args_srt = args_srt + ("\"" + arg + "\"");
//add a comma if the current item is not the last one
if (i + 1 < args_array.length)
args_srt = args_srt + ",";
}
method_and_args["args"] = args_srt;
classMethods.push(method_and_args);
});
loaded_methods[className] = classMethods;
});
});
//DEBUG console.log("loaded_classes.length: " + loaded_classes.length)
//DEBUG console.log("loaded_methods.length: " + Object.keys(loaded_methods).length)
return loaded_methods;
}
function load_frida_custom_script_Android(frida_script) {
Java.perform(function () {
console.log("FRIDA script LOADED");
eval(frida_script);
});
}
function hook_classes_and_methods_Android(loaded_classes, loaded_methods, template) {
Java.perform(function () {
console.log("Hook Template setup");
loaded_classes.forEach(function (clazz) {
loaded_methods[clazz].forEach(function (dict) {
var t = template; //template1
// replace className
t = t.replace("{className}", clazz);
// replace classMethod x3
t = t.replace("{classMethod}", dict["name"]);
t = t.replace("{classMethod}", dict["name"]);
t = t.replace("{classMethod}", dict["name"]);
// replace methodSignature
t = t.replace("{methodSignature}", dict["ui_name"]);
//check if the method has args
if (dict["args"] != "\"\"") {
//check if the method has overloads
t = t.replace("{overload}", "overload(" + dict["args"] + ").");
// Check args length
var args_len = (dict["args"].split(",")).length;
//args creation (method inputs) - v[i] to N
var args = "";
for (var i = 0; i < args_len; i++) {
if (i + 1 == args_len)
args = args + "v" + i;
else
args = args + "v" + i + ",";
}
//replace args x2
t = t.replace("{args}", args);
t = t.replace("{args}", args);
}
else {
//Current methods has NO args
// no need to overload
t = t.replace("{overload}", "overload().");
//replace args x2
t = t.replace("{args}", "");
t = t.replace("{args}", "");
}
//Debug - print FRIDA template
//send(t);
console.log(clazz + " " + dict["name"] + " hooked!");
// ready to eval!
eval(t);
});
});
});
}
function generate_hook_template_Android(loaded_classes, loaded_methods, template) {
var hto = ""; //hto stands for hooks template output
Java.perform(function () {
loaded_classes.forEach(function (clazz) {
loaded_methods[clazz].forEach(function (dict) {
var t = template; //template2
// replace className
t = t.replace("{className}", clazz);
// replace classMethod x3
t = t.replace("{classMethod}", dict["name"]);
t = t.replace("{classMethod}", dict["name"]);
t = t.replace("{classMethod}", dict["name"]);
// replace methodSignature x2
t = t.replace("{methodSignature}", dict["ui_name"]);
t = t.replace("{methodSignature}", dict["ui_name"]);
//check if the method has args
if (dict["args"] != "\"\"") {
//check if the method has overloads
t = t.replace("{overload}", "overload(" + dict["args"] + ").");
// Check args length
var args_len = (dict["args"].split(",")).length;
//args creation (method inputs) - v[i] to N
var args = "";
for (var i = 0; i < args_len; i++) {
if (i + 1 == args_len)
args = args + "v" + i;
else
args = args + "v" + i + ",";
}
//replace args x3
t = t.replace("{args}", args);
t = t.replace("{args}", args);
t = t.replace("{args}", args);
}
else {
//Current methods has NO args
// no need to overload
t = t.replace("{overload}", "overload().");
//replace args x3
t = t.replace("{args}", "");
t = t.replace("{args}", "");
t = t.replace("{args}", "\"\"");
}
//Debug - print FRIDA template
//send(t);
// hooks concat
hto = hto + t;
});
});
});
// return HOOK template
return hto;
}
function heap_search_template_Android(loaded_classes, loaded_methods, template) {
var hto = ""; //hto stands for heap template output
Java.perform(function () {
loaded_classes.forEach(function (clazz) {
loaded_methods[clazz].forEach(function (dict) {
var t = template; //template2
// replace className
t = t.replace("{className}", clazz);
// replace classMethod x2
t = t.replace("{classMethod}", dict["name"]);
t = t.replace("{classMethod}", dict["name"]);
// replace methodSignature x2
t = t.replace("{methodSignature}", dict["ui_name"]);
t = t.replace("{methodSignature}", dict["ui_name"]);
//check if the method has args
if (dict["args"] != "\"\"") {
// Check args length
var args_len = (dict["args"].split(",")).length;
//args creation (method inputs) - v[i] to N
var args = "";
for (var i = 0; i < args_len; i++) {
if (i + 1 == args_len)
args = args + "v" + i;
else
args = args + "v" + i + ",";
}
//replace args
t = t.replace("{args}", args);
}
else {
//Current methods has NO args
//replace args
t = t.replace("{args}", "");
}
//Debug - print FRIDA template
//send(t);
// heap search templates concat
hto = hto + t;
});
});
});
// return Heap Search template
return hto;
}
function get_app_env_info_Android() {
var env;
Java.perform(function () {
var context = null;
var ActivityThread = Java.use('android.app.ActivityThread');
var targetApp = ActivityThread.currentApplication();
if (targetApp != null) {
context = targetApp.getApplicationContext();
env =
{ mainDirectory: context.getFilesDir().getParent(),
filesDirectory: context.getFilesDir().getAbsolutePath().toString(),
cacheDirectory: context.getCacheDir().getAbsolutePath().toString(),
externalCacheDirectory: context.getExternalCacheDir().getAbsolutePath().toString(),
codeCacheDirectory: 'getCodeCacheDir' in context ?
context.getCodeCacheDir().getAbsolutePath().toString() : 'N/A',
obbDir: context.getObbDir().getAbsolutePath().toString(),
packageCodePath: context.getPackageCodePath().toString().replace("/base.apk", ""),
};
}
else
env = null;
});
return env;
}
function list_files_at_path_Android(path) {
var listResult;
Java.perform(function () {
var file = Java.use("java.io.File");
var currentPath = file.$new(path);
var files;
listResult = {
files: {},
path: path,
readable: currentPath.canRead(),
writable: currentPath.canWrite(),
};
files = currentPath.listFiles();
files.forEach(function (f) {
listResult.files[f.getName()] = {
attributes: {
isDirectory: f.isDirectory(),
isFile: f.isFile(),
isHidden: f.isHidden(),
lastModified: new Date(f.lastModified()).toISOString().replace(/T/, ' ').replace(/\..+/, ''),
size: f.length()
},
fileName: f.getName(),
readable: f.canRead(),
writable: f.canWrite()
};
});
//console.log(JSON.stringify(listResult))
});
return listResult;
}
function api_monitor_Android(api_to_monitor) {
Java.perform(function () {
/* DEBUG
api_to_monitor.forEach(function (e) {
console.log(e["Category"]);
e["hooks"].forEach(function (hook) {
console.log("--> "+hook["clazz"]+" - "+hook["method"]);
});
});
*/
api_to_monitor.forEach(function (e) {
e["hooks"].forEach(function (hook) {
// Java or Native Hook?
// Native - File System only at the moment
if (e["HookType"] == "Native") {
nativedynamichook(hook, e["Category"]);
}
// Java
if (e["HookType"] == "Java") {
javadynamichook(hook, e["Category"], function (realRetval, to_print) {
send('[API_Monitor]\n' +
JSON.stringify(to_print, function (k, v) {
if (v instanceof Array)
return JSON.stringify(v);
return v;
}, 2)
+ "\n");
return realRetval;
});
} // end javadynamichook
});
});
});
}
function nativedynamichook(hook, category) {
// File System monitor only - libc.so
Interceptor.attach(Module.findExportByName(hook["clazz"], hook["method"]), {
onEnter: function (args) {
var file = Memory.readCString(args[0]);
//bypass ashem and prod if libc.so - open
if (hook["clazz"] == "libc.so" &&
hook["method"] == "open" &&
!file.includes("/dev/ashmem") &&
!file.includes("/proc/"))
send("[API_Monitor] - " + category + " - " + hook["clazz"] + " - " + hook["method"] + " - " + file + "\n");
}
});
}
function javadynamichook(hook, category, callback) {
var Exception = Java.use('java.lang.Exception');
var toHook;
try {
var clazz = hook.clazz;
var method = hook.method;
try {
if (hook.target &&
parseInt(Java.androidVersion, 10) < hook.target) {
send('[API_Monitor] - Android Version not supported - Cannot hook - ' + clazz + '.' + method);
return;
}
// Check if class and method is available
toHook = Java.use(clazz)[method];
if (!toHook) {
send('[API_Monitor] - Cannot find ' + clazz + '.' + method);
return;
}
}
catch (err) {
send('[API_Monitor] - Cannot find ' + clazz + '.' + method);
return;
}
for (var i = 0; i < toHook.overloads.length; i++) {
toHook.overloads[i].implementation = function () {
var args = [].slice.call(arguments);
// Call original method
var retval = this[method].apply(this, arguments);
if (callback) {
var calledFrom = Exception.$new().getStackTrace().toString().split(',')[1];
var to_print = {
category: category,
class: clazz,
method: method,
args: args,
returnValue: retval ? retval.toString() : "N/A",
calledFrom: calledFrom
};
retval = callback(retval, to_print);
}
return retval;
};
}
}
catch (err) {
send('[API_Monitor] - ERROR: ' + clazz + "." + method + " [\"Error\"] => " + err);
}
}
/*
***********************************************************************
***************************** iOS - Stuff *****************************
***********************************************************************
*/
function load_classes_iOS() {
var loaded_classes = [];
for (var className in ObjC.classes) {
if (ObjC.classes.hasOwnProperty(className) &&
className.length > 5)
loaded_classes.push(className);
}
return loaded_classes;
}
function load_classes_with_filter_iOS(filter, isRegex, isCase, isWhole) {
var loaded_classes = [];
for (var className in ObjC.classes) {
//lowercase if not case sensitive
var originalClassName = className;
className = isCase ? className : className.toLowerCase();
filter = isCase ? filter : filter.toLowerCase();
//check if a filter exists
if (filter != null) {
//Regex
if (isRegex) {
if (className.search(filter) > -1) {
loaded_classes.push(originalClassName);
}
//Not regex
}
else {
//check if we have multiple filters (comma separated list)
var filter_array = filter.split(",");
filter_array.forEach(function (f) {
if (isWhole) { //f.trim() is needed to remove possibile spaces after the comma
if (className == f.trim()) {
loaded_classes.push(originalClassName);
}
}
else { //f.trim() is needed to remove possibile spaces after the comma
if (className.startsWith(f.trim())) {
loaded_classes.push(originalClassName);
}
}
});
}
}
}
return loaded_classes;
}
function load_methods_iOS(loaded_classes) {
var loaded_methods = {};
loaded_classes.forEach(function (className, index) {
var classMethods_dirty;
var classMethods = [];
try {
if (ObjC.classes.hasOwnProperty(className))
classMethods_dirty = ObjC.classes[className].$ownMethods;
}
catch (err) {
send("Exception while loading methods for " + className);
//skip current loop
loaded_methods[className] = classMethods; //is empty
return;
}
classMethods_dirty.forEach(function (m) {
var method_and_args = {};
var retValue = null;
var args = null;
try {
retValue = ObjC.classes[className][m].returnType;
}
catch (err) {
retValue = null;
}
try {
args = (ObjC.classes[className][