Распечатать член данных класса с Frida

Я могу успешно подключиться к этому методу getAuthToken

public class AuthResponse2 extends DataResponse<Data> {
    public static class Data {
        private String mAuthToken;

        public String getAuthToken() {
            return this.mAuthToken;
        }
    }
}

Это мой скрипт Frida JS

setImmediate(function() {
    console.log("[*] Starting script");

        Java.perform(function () {
            var Activity = Java.use("com.app.network.AuthResponse2$Data");
            Activity.getAuthToken.overload().implementation = function () {
                console.log(mAuthToken);
                console.log(mAuthToken.toString());
            };
        });

})

Но я не могу распечатать mAuthToken. Не уверен, какой синтаксис мне нужно использовать.

я пытался

this.mAuthToken тоже, и печатается следующее

"[Объект Object]"


person Arya    schedule 13.02.2018    source источник
comment
Какова цель использования setImmediate()?   -  person jinbeom hong    schedule 01.10.2019


Ответы (2)


Я бы попробовал следующее:

setImmediate(function() {
    console.log("[*] Starting script");

        Java.perform(function () {
            var Activity = Java.use("com.app.network.AuthResponse2$Data");
            Activity.getAuthToken.overload().implementation = function () {
                var mAuthToken = this.getAuthToken(); // use `call` if there are other overloads
                console.log(mAuthToken);
                return mAuthToken;
            };
        });

})

Это сохраняет старый метод без изменений (возвращая значение) и использует возвращаемое значение исходного метода для вывода на консоль.

Я думаю, что ваш исходный код создает проблему, потому что вы не пишете this.mAuthToken при доступе к членам класса.

person Fritz    schedule 13.02.2018

Используйте свойство .value для доступа к полям. Я тоже часто забываю об этом.

person island foxy    schedule 13.09.2018