1 место Использование Frida для хука функций в android приложении и реализации хэш-функции pikabu

sw_sw

Client
Регистрация
24.02.2017
Сообщения
776
Благодарностей
309
Баллы
63

ex3maL

Client
Регистрация
22.05.2020
Сообщения
359
Благодарностей
267
Баллы
63
при попытке вызвать функцию следующая ошибка
Возможно ошибка в самом синтаксисе функции - вот и ошибка.
Буквально час назад с таким столкнулся - тоже сыпало ошибками, чуть подправил и все поехало на ура)
 

lamar015

Client
Регистрация
22.08.2021
Сообщения
23
Благодарностей
4
Баллы
3
Возможно ошибка в самом синтаксисе функции - вот и ошибка.
Буквально час назад с таким столкнулся - тоже сыпало ошибками, чуть подправил и все поехало на ура)
на реальном устройстве тестил, или на эмуляторе?
 

ex3maL

Client
Регистрация
22.05.2020
Сообщения
359
Благодарностей
267
Баллы
63

lemniscata

Client
Регистрация
01.04.2019
Сообщения
13
Благодарностей
12
Баллы
3
Приветствую!

Сорри за оффтоп, но может кто подсказать?

Я все настроил, все работает еще даже по старому гайду 2-ух годичной давности, но я не вижу запросов загрузки изображений (в fiddler их вообще нет). Может с андроида изображения передаются как-то иначе, нежели конвертацией в base64?
 

southside

Client
Регистрация
20.04.2019
Сообщения
208
Благодарностей
261
Баллы
63
Приветствую!

Сорри за оффтоп, но может кто подсказать?

Я все настроил, все работает еще даже по старому гайду 2-ух годичной давности, но я не вижу запросов загрузки изображений (в fiddler их вообще нет). Может с андроида изображения передаются как-то иначе, нежели конвертацией в base64?
Загрузки изображений куда?
P.S. Потом допишу в теме что обещал, кое-какие неотложные дела в жизни возникли
 

selectel56

Client
Регистрация
11.12.2016
Сообщения
100
Благодарностей
53
Баллы
28
Сутки мучаюсь, статейка просто огонь, но помогите кто сможет:

Код такой:

C#:
 @Override // puss.miss.network.HostProvider
    public final void sign(Uri.Builder builder, HostProvider.SignCreator signCreator) {
        if (i().needSign()) {
            x(builder, signCreator);
        }
    }

    protected boolean v() {
        return true;
    }

    protected boolean w() {
        return true;
    }

    /* JADX INFO: Access modifiers changed from: protected */
    public void x(Uri.Builder builder, HostProvider.SignCreator signCreator) {
        builder.appendQueryParameter("md5_siga", signCreator.create());
    }
Пытаюсь выдрать builder чтобы понять что там передается чтобы потом правильно хеш md5_siga получить, но постоянно то ошибка в консоли, то просто пустота.

Тут к примеру пустота всегда через этот код:

C#:
console.log("Script loaded successfully");

Java.perform(function () {
  console.log("Java.perform() executed successfully");

  var hostProviderClass = Java.use("puss.miss.network.HostProvider");
  console.log("Class " + hostProviderClass + " found");

  hostProviderClass.sign.overload("android.net.Uri$Builder", "ru.mail.network.HostProvider$SignCreator").implementation = function (builder, signCreator) {
    console.log("[*] Intercepted call to sign():");
    console.log("\t- builder: " + builder);
    console.log("\t- signCreator: " + signCreator);

    this.sign(builder, signCreator);
  };

  console.log("Interceptor installed successfully");
});
 

sw_sw

Client
Регистрация
24.02.2017
Сообщения
776
Благодарностей
309
Баллы
63
Сутки мучаюсь, статейка просто огонь, но помогите кто сможет:

Код такой:

C#:
 @Override // puss.miss.network.HostProvider
    public final void sign(Uri.Builder builder, HostProvider.SignCreator signCreator) {
        if (i().needSign()) {
            x(builder, signCreator);
        }
    }

    protected boolean v() {
        return true;
    }

    protected boolean w() {
        return true;
    }

    /* JADX INFO: Access modifiers changed from: protected */
    public void x(Uri.Builder builder, HostProvider.SignCreator signCreator) {
        builder.appendQueryParameter("md5_siga", signCreator.create());
    }
Пытаюсь выдрать builder чтобы понять что там передается чтобы потом правильно хеш md5_siga получить, но постоянно то ошибка в консоли, то просто пустота.

Тут к примеру пустота всегда через этот код:

C#:
console.log("Script loaded successfully");

Java.perform(function () {
  console.log("Java.perform() executed successfully");

  var hostProviderClass = Java.use("puss.miss.network.HostProvider");
  console.log("Class " + hostProviderClass + " found");

  hostProviderClass.sign.overload("android.net.Uri$Builder", "ru.mail.network.HostProvider$SignCreator").implementation = function (builder, signCreator) {
    console.log("[*] Intercepted call to sign():");
    console.log("\t- builder: " + builder);
    console.log("\t- signCreator: " + signCreator);

    this.sign(builder, signCreator);
  };

  console.log("Interceptor installed successfully");
});
Хукай x а не sign
 

selectel56

Client
Регистрация
11.12.2016
Сообщения
100
Благодарностей
53
Баллы
28
Что то не вышло... походу тут 'java.lang.String' тоже надо куда то закрутить)) у меня уже башня едит:


C#:
Java.perform(function () {
    var foy = Java.use('puss.miss.network.HostProvider');
    foy.x.overload('android.net.Uri$Builder', 'puss.miss.network.HostProvider$SignCreator').implementation = function(builder, signCreator) {
        console.log(builder.toString());
        this.x(builder, signCreator);
    }
});


TypeError: cannot read property 'overload' of undefin
ed
    at [anon] (../../../frida-gum/bindings/gumjs/duktape.c:59225)
    at /001.js:3
    at frida/node_modules/frida-java-bridge/lib/vm.js:11
    at frida/node_modules/frida-java-bridge/index.js:446
    at frida/node_modules/frida-java-bridge/index.js:430
    at je (frida/node_modules/frida-java-bridge/lib/class-factory.js:633)
    at frida/node_modules/frida-java-bridge/lib/class-factory.js:616
 

sw_sw

Client
Регистрация
24.02.2017
Сообщения
776
Благодарностей
309
Баллы
63
Что то не вышло... походу тут 'java.lang.String' тоже надо куда то закрутить)) у меня уже башня едит:


C#:
Java.perform(function () {
    var foy = Java.use('puss.miss.network.HostProvider');
    foy.x.overload('android.net.Uri$Builder', 'puss.miss.network.HostProvider$SignCreator').implementation = function(builder, signCreator) {
        console.log(builder.toString());
        this.x(builder, signCreator);
    }
});


TypeError: cannot read property 'overload' of undefin
ed
    at [anon] (../../../frida-gum/bindings/gumjs/duktape.c:59225)
    at /001.js:3
    at frida/node_modules/frida-java-bridge/lib/vm.js:11
    at frida/node_modules/frida-java-bridge/index.js:446
    at frida/node_modules/frida-java-bridge/index.js:430
    at je (frida/node_modules/frida-java-bridge/lib/class-factory.js:633)
    at frida/node_modules/frida-java-bridge/lib/class-factory.js:616
Кароч не так ( Утром напомни )
 

selectel56

Client
Регистрация
11.12.2016
Сообщения
100
Благодарностей
53
Баллы
28
Кароч не так ( Утром напомни )
Может у меня пусто потому что метод защищен? Доступ к нему извне невозможен получается? Готов за $ если поможешь, остро нужно... выловить принцип генерации подписи md5 для запросов. Я уже ато опух невыспался, не могу победить(
Вот к примеру еще код:

C#:
    protected RequestBody onPrepareRequestBody() throws IOException {
        List<NameValuePair> providePostParams = providePostParams();
        providePostParams.add(new ParamNameValuePair("md5_post_signature", new PostSignCreator(Uri.EMPTY, providePostParams).create()));
        return new ParamsRequestBody(providePostParams, "UTF-8");
    }
Сколько не пытался получить входные данные для генерации md5_post_signature, не получается, пустота идет. Меня смущает что у них у всех protected, может поэтому, надо как то по другому перехватывать. create() я так понимаюпросто переводит строку в md5 из 32 символов, туда должны поступить данные в виде 1 строки, данные самой строки у меня есть, я их вижу в post get запросах, но в каком виде они туда передаются и в какой последовательности (параметры) - это и нужно узнать.
 
Последнее редактирование:

Den47

Новичок
Регистрация
21.05.2023
Сообщения
1
Благодарностей
0
Баллы
1
Посмотреть вложение 101740

SSL unpinning прошел, но при попытке вызвать функцию следующая ошибка. Возможно, из-за того что делаю на эмуляторе? Кто-то сталкивался?
На эмуляторе все норм проходит сам проверил на свежей версии ели нужно распишу подробнее
 

da1ver

Client
Регистрация
22.12.2012
Сообщения
27
Благодарностей
11
Баллы
3
Может у меня пусто потому что метод защищен? Доступ к нему извне невозможен получается? Готов за $ если поможешь, остро нужно... выловить принцип генерации подписи md5 для запросов. Я уже ато опух невыспался, не могу победить(
Вот к примеру еще код:

C#:
    protected RequestBody onPrepareRequestBody() throws IOException {
        List<NameValuePair> providePostParams = providePostParams();
        providePostParams.add(new ParamNameValuePair("md5_post_signature", new PostSignCreator(Uri.EMPTY, providePostParams).create()));
        return new ParamsRequestBody(providePostParams, "UTF-8");
    }
Сколько не пытался получить входные данные для генерации md5_post_signature, не получается, пустота идет. Меня смущает что у них у всех protected, может поэтому, надо как то по другому перехватывать. create() я так понимаюпросто переводит строку в md5 из 32 символов, туда должны поступить данные в виде 1 строки, данные самой строки у меня есть, я их вижу в post get запросах, но в каком виде они туда передаются и в какой последовательности (параметры) - это и нужно узнать.
Ну как получилось?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)