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
192 lines (164 loc) • 6.65 kB
HTML
<html lang="en">
<head>
<!-- head and css -->
{% include 't_head.html' %}
</head>
<body>
<div class="d-flex" id="wrapper">
<!-- Sidebar -->
{% include 't_sidebar.html' %}
<!-- Page Content -->
<div id="page-content-wrapper">
<!-- Navbar -->
{% include 't_navbar.html' %}
<!-- Model View -->
<div class="modal fade" id="ModalFilterView">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title">Select a Class and start playing with its methods</h4>
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<!-- Modal body -->
<div class="modal-body">
<!-- scrollbox -->
<div id=scrollbox>
<!-- Search Bar and Table -->
<div class="col-sm-12">
<table class="table table-sm table-dark table-bordered">
<thead>
<tr>
<th style='width: 3%'> index</th>
<th style='width: 27%'> classes</th>
<th style='width: 55%'> methods</th>
</tr>
</thead>
<tbody id="MainTable_Filter">
<h3>Classes and Methods</h3>
<p>Use the search bar below to quickly filter results:
{% if loaded_methods|length > 0 %}
{% if methods_hooked_and_executed|length > 0 %}
<button
onclick="apply_filter('executed')"
class="btn btn-success btn-sm">
Executed ✅
</button>
{% endif %}
<button
onclick="apply_filter('native')"
class="btn btn-danger btn-sm">
Native
</button>
<button
onclick="apply_filter('boolean')"
class="btn btn-info btn-sm">
Boolean
</button>
<button
onclick="apply_filter('clear')"
class="btn btn-dark btn-sm">
Clear
</button>
{% endif %}
</p>
<input class="form-control" id="UserInput_Filter" type="text" placeholder="Search..">
<br>
<!-- Legenda -->
{% if methods_hooked_and_executed|length > 0 %}
<p>✅ = the <b>hooked method has been executed</b> by the app - <a href="/hook_lab"><b>Refresh Page</b></a></p>
{% endif %}
<!-- Legenda -->
{% for class_name in loaded_classes %}{% set class_loop = loop %}
<tr><td><center>{{ loop.index0 }}</center></td><td><a href=hook_lab?class_index={{class_loop.index0}}>{{class_name}}</a></td>
<td><pre><code class=Java>{% for method_name in loaded_methods[class_name] %}{% set method_loop = loop %}<a href=hook_lab?class_index={{class_loop.index0}}&method_index={{method_loop.index0}}>{% if "Class: "+class_name+"\nMethod: "+method_name["ui_name"]+"\n" in methods_hooked_and_executed %}✅ {% endif %}{{method_name["ui_name"]}};</a><br>{% endfor %}</code></pre></td></tr>{% endfor %}
</tbody>
</table>
</div>
</div>
<!-- scrollbox -->
</div>
<!-- Modal footer -->
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<br>
<h2>Hook LAB 🔮 - Select a Class and start playing with its methods 🕹</h2>
<div class="border-top my-3"></div>
<div class="row">
<div class="col-sm-12">
<!-- Dropdown menu -->
<form action="/load_frida_script" method="post">
<button type="button"
data-toggle="modal"
data-target="#ModalFilterView"
class="btn btn-danger dropdown-toggle">
Select a Class
</button>
→
<input type=submit
value="Run Hook"
class="btn btn-success">
<br>
<br>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<!-- Textarea with overload -->
<h3>Hook Template - <font class=text-primary>{{ selected_class}}</font></h3>
<input type=hidden name=choice value=4>
<textarea id=hooktable name=frida_custom_script
class="form-control">{{ hook_template_str|safe }}</textarea>
<br>
</form>
</div>
</div>
</div>
<!-- /#container-fluid -->
</div>
<!-- /#page-content-wrapper -->
</div>
<!-- /#wrapper -->
<!-- Javascript loading -->
{% include 't_js_script.html' %}
{% block scripts %}
<script>
var editor = CodeMirror.fromTextArea(hooktable, {
lineNumbers: true,
mode: 'javascript',
theme: 'dracula'
});
editor.setSize("100%",550);
</script>
<!-- quick filters -->
<script>
function apply_filter(filter){
if(filter=="executed")
document.getElementById("UserInput_Filter").value = "✅";
if(filter=="native")
document.getElementById("UserInput_Filter").value = "native";
if(filter=="boolean")
document.getElementById("UserInput_Filter").value = "boolean";
if(filter=="clear")
document.getElementById("UserInput_Filter").value = "";
//simulate keyup
$('#UserInput_Filter').keyup();
}
</script>
<!-- Set current Page as active in the NavBar -->
<script>
$(document).ready(function () {
$(".nav li").removeClass("active");
$('#hook_lab').addClass('active');
});
</script>
<!-- Set current Page as active in the NavBar -->
{% endblock %}
</body>
</html>