Created
July 29, 2024 09:34
-
-
Save FrankSpierings/3a6f38f7dbff641bc3c3fd3e78c905f1 to your computer and use it in GitHub Desktop.
Android - MASTG-TEST-0006 - Frida help script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Java.perform(function() { | |
var TextView = Java.use("android.widget.TextView"); | |
// Constants for InputType flags | |
var TYPE_CLASS_TEXT = 0x00000001; | |
var TYPE_CLASS_NUMBER = 0x00000002; | |
var TYPE_CLASS_PHONE = 0x00000003; | |
var TYPE_CLASS_DATETIME = 0x00000004; | |
var TYPE_TEXT_VARIATION_PASSWORD = 0x00000080; | |
var TYPE_TEXT_VARIATION_VISIBLE_PASSWORD = 0x00000090; | |
var TYPE_TEXT_VARIATION_EMAIL_ADDRESS = 0x00000020; | |
var TYPE_TEXT_VARIATION_URI = 0x00000010; | |
// Function to get the input type name based on flags | |
function getInputTypeName(inputType) { | |
var typeName = []; | |
// Check the base class type | |
switch (inputType & 0x0000000f) { | |
case TYPE_CLASS_TEXT: | |
typeName.push("TYPE_CLASS_TEXT"); | |
break; | |
case TYPE_CLASS_NUMBER: | |
typeName.push("TYPE_CLASS_NUMBER"); | |
break; | |
case TYPE_CLASS_PHONE: | |
typeName.push("TYPE_CLASS_PHONE"); | |
break; | |
case TYPE_CLASS_DATETIME: | |
typeName.push("TYPE_CLASS_DATETIME"); | |
break; | |
default: | |
typeName.push("UNKNOWN_CLASS"); | |
} | |
// Check the variation type | |
if (inputType & TYPE_TEXT_VARIATION_PASSWORD) { | |
typeName.push("TYPE_TEXT_VARIATION_PASSWORD"); | |
} | |
if (inputType & TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) { | |
typeName.push("TYPE_TEXT_VARIATION_VISIBLE_PASSWORD"); | |
} | |
if (inputType & TYPE_TEXT_VARIATION_EMAIL_ADDRESS) { | |
typeName.push("TYPE_TEXT_VARIATION_EMAIL_ADDRESS"); | |
} | |
if (inputType & TYPE_TEXT_VARIATION_URI) { | |
typeName.push("TYPE_TEXT_VARIATION_URI"); | |
} | |
// Join the type names with " | " | |
return typeName.join(" | "); | |
} | |
TextView.setInputType.overload('int').implementation = function(inputType) { | |
// Get the class name and method name | |
var className = this.getClass().getName(); | |
var methodName = "setInputType"; | |
// Call the original setInputType method | |
this.setInputType(inputType); | |
// Get the view ID and resource name | |
var viewId = this.getId(); | |
var viewIdName = "unknown"; | |
try { | |
var context = this.getContext(); | |
viewIdName = context.getResources().getResourceEntryName(viewId); | |
} catch (e) { | |
// Handle any errors (e.g., when ID not found) | |
} | |
// Get the text content of the TextView, if available | |
var textContent = this.getText() ? this.getText().toString() : "no text"; | |
// Get the input type name using flags | |
var inputTypeName = getInputTypeName(inputType); | |
// Log the details | |
console.log("Class: " + className + ", Method: " + methodName + ", InputType: " + inputTypeName + " (" + inputType + "), ViewId: " + viewId + " (" + viewIdName + "), Text: " + textContent); | |
}; | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment