Как читать из NativeReturnValue, возвращаемого NativeFunction в Frida?

#frida

#фрида

Вопрос:

 // test.ts
Java.perform(function() {

    var malloc = new NativeFunction(
        Module.findExportByName('libc.so', 'malloc'),
        'pointer', // ret type
        ['uint32'] // arg type
    );

    var p = malloc(4);

    p.readU8(); // error
});
 

Я пытаюсь скомпилировать вышеупомянутый файл .ts в .js с помощью frida-compile. Я попытался прочитать из переменной p с .readU8() помощью, но возникает ошибка: свойство ‘readU8’ не существует для типа ‘NativeReturnValue’

Из исходного кода это определяется как:

 type NativeReturnValue = NativePointer | UInt64 | Int64 | number | boolean | any[];
 

Я мало знаю о TypeScript, кажется NativeReturnValue , это что-то вроде NativePointer , но как использовать?

Спасибо.

Комментарии:

1. Насколько я понимаю, если вы укажете pointer в качестве ReturnType, то возвращаемое значение будет не a NativePointer , а просто числом, поэтому вам нужно обернуть его new NativePointer(p) или сократить ptr(p) . Затем вы можете вызвать .readU8() .

2. @Robert попробовал new NativePointer(p).readU8() и ptr(p).readU8() , но все равно ошибка.

3. Если возвращаемое значение p не 0 равно, вы можете попробовать Memory.readU8(p);

4. @Robert, это в файле .ts , он использует frida-gum , нет Memory.readU8()

5. Почему бы не использовать Frida напрямую? Может быть, ваша проблема просто в frida-gum.