Adventures on Security
  • Hello World!
  • Frida
    • Analysis of Network Security Configuration bypasses with Frida
  • frida scripting guide
    • Frida scripting guide for Java
    • Primitive types
    • Methods
    • Access to content of classes
    • "this" reference
    • Arrays
    • Enums
    • Inheritance
    • Interfaces
    • Inner classes
    • Exception handling
Powered by GitBook
On this page

Was this helpful?

  1. frida scripting guide

Arrays

Explanation of the way to work with arrays in Frida

Previous"this" referenceNextEnums

Last updated 3 years ago

Was this helpful?

**** NOTE: BLOG MOVED TO ****

Arrays are transformed in Frida from Javascript to Java transparently, so there is no special consideration, as shown in the following examples:

var intArray = [1, 2, 3];
console.log(ArrayType.sumArray(intArray));

This example shows a transformation from a javascript Array to a Java array.

ArrayType.sumArray.overload("[I").implementation = function (arrayList) {
    var total = 0;
    for (var i = 0; i < arrayList.length; i++) {
        total += arrayList[i];
    }
    console.log("Entra en arrayInt sumArray: " + total);
    return total;
}

This method receives an array in Java. When the Frida user writes the reimplementation function, they will receive a Javascript Array.

The forEach structure (used in Javascript) to iterate on an array does not work.

Whenever the following code is called:

var total = 0.0;
arrayList.forEach(function (element) { total += element; });

the frida server generates an error:

TypeError: undefined not callable (property 'forEach' of [object Object])
    at [anon] (../../../frida-gum/bindings/gumjs/duktape.c:65012)
    at /examples.js:278
    at input:1

Working with array of Objects is like working with native types, with the exception that a position in the Array can be null, so it must be taken in consideration when the script is being developed, as in the following example:

var peopleArray = ArrayType.getAllPeople();
for (var i = 0; i < peopleArray.length; i++) {
    if (peopleArray[i] == null) {
        console.log(i + " - null");
    } else {
        console.log(peopleArray[i].getId()+" - "+peopleArray[i].getName() + " - " + peopleArray[i].getAge());    
    }
}

A null value in the Java array is translated to a null javascript value automatically by the framework.

https://cmrodriguez.me/