Прежде всего извините за мой engli sh. Это не мой родной язык. Это первый раз, когда я делаю что-то подобное, поэтому я учусь на go.
Контекст: Я пытаюсь понять, как игра, которую я установил из магазина Play, взаимодействует с сервером . Точнее, как указывается параметр c в каждом запросе POST к серверу. Этот HTTP-параметр, называемый "секрет", не может быть легко изменен инженером, поскольку он является своего рода ha sh других параметров для проверки целостности запроса.
Что я сделал :
- Я извлек файлы .dex из .apk
- Я использовал d2j-dex2jar для извлечения файлов .class.
- Я использовал инструмент jd- gui для анализа исходного кода
Что я нашел : это исходный код, который генерирует значение для параметра 'secret':
.method public static native secretForString(Ljava/lang/String;)Ljava/lang/String;
.end method
Из того, что я узнал, java позволяет использовать собственные библиотеки благодаря ключевому слову native . Эти собственные библиотеки загружаются с помощью команды System.loadLibrary(...)
. В файле Main. java у меня есть вызов этой команды System.loadLibrary("Main");
. Если я правильно понял, как это работает, на моем android телефоне есть соответствующий файл .so с именем libMain.so .
Я рутировал свой OnePlus6 и копался в файлах в поисках для этой библиотеки.
Проблема : Я не могу найти эту библиотеку на своем телефоне. Нет связанного файла .so в / data / data //
Вопросы :
- Вы можете объяснить, что я делаю неправильно / i ' м отсутствует.
- Допустим, я нашел библиотеку, смогу ли я прочитать в ней код или мне понадобится специальный c инструмент?
- Если ответ отрицательный, на вопрос 2, можно ли создать небольшое приложение, которое загружает эту c библиотеку и использует ее?
Спасибо за время, которое вы потратите, пытаясь мне помочь: D