Фрида, хук OKHttp Библиотека не работает с примерами - PullRequest
1 голос
/ 18 февраля 2020

Я пытаюсь перехватить функции библиотеки OKHttp, используя затем следующий скрипт Frida:


setTimeout(function(){
    Java.perform(function (){
        console.log("-- Hook OKHttp library --");

        try {
            var Builder = Java.use('okhttp3.CertificatePinner$Builder');
            var Pin = Java.use('okhttp3.CertificatePinner$Pin');
            var OkHttpClient = Java.use('okhttp3.OkHttpClient$Builder');
            console.log("OkHTTP classes found");


            Builder.add.overload.implementation = function(a, b) {
                console.log("TEST ADD");
            }

            Pin.matches.overload.implementation = function (a) {
                console.log("TEST matches")
                return true;
            }

            OkHttpClient.certificatePinner.overload.implementation = function (a) {
                console.log("TEST certificatePinner");
            }

            console.log("OkHTTP functions found");            
        } catch (err) {
            // If we dont have a ClassNotFoundException exception, raise the
            // problem encountered.
            console.log("OkHTTP 3.x classes/functions not Found");
        }

    });
},0);

И я выполняю следующий код в моем приложении Android:


            CertificatePinner certificatePinner = new CertificatePinner.Builder()
                    .add(certificateDNWildcard, certificateHash)
                    .build();
            //Create http client with pinned certificate
            OkHttpClient okHttpClient = new OkHttpClient.Builder()
                    .certificatePinner(certificatePinner)
                    .build();

Как видите, я вызываю функцию .add(certificateDNWildcard, certificateHash), которую пытаюсь перехватить. Однако, когда я выполняю эту функцию, в терминале ничего не печатается. Кроме того, вывод моего терминала:

-- Hook OKHttp library --
OkHTTP classes found
OkHTTP functions found

Следовательно, он находит классы и функции; однако сам крючок не работает эффективно. Может ли кто-нибудь помочь мне?

Я использую:

* Frida 12.8.11
* Android 10
* ARM64

1 Ответ

1 голос
/ 19 февраля 2020

Вы должны либо:

// works if add method has a single implementation
Builder.add.implementation = function(a, b) {
    console.log("TEST ADD");
}

, либо

// always works
Builder.add.overload('java.lang.String', 'java.lang.String').implementation = function(a, b) {
    console.log("TEST ADD");
}
...