Прозрачный шлюз в приложении

надеюсь, ты сможешь указать мне правильное направление.

Я создаю библиотеку Android (без использования VPNService), которая при интеграции в приложение будет направлять весь трафик tcp / udp этого приложения на мой прокси-сервер. Библиотека также должна работать на некорневых устройствах, что означает, что использование iptables недопустимо.

Поскольку вариант использования предназначен для прозрачного шлюза в приложении, библиотеке не нужно перенаправлять трафик приложения, отличного от того, с которым она интегрирована.

Я исследовал, и обычное решение, которое я нахожу, использует VPNService, что также не является вариантом. Также нашел mitmproxy.org, но я не уверен, с чего начать.

Таким образом, без изменения приложения, как я могу перенаправить трафик на свой прокси-сервер и все же ... 1. не использовать VPN 2. не использовать iptables и не требовать root-доступ

Большое спасибо!

1
0
70
1

Ответы 1

In summary, without modifying the app, how can I re-route traffic to my proxy server

Это невозможно, извините. Приложения используют широкий спектр средств для доступа к сетям, в том числе:

  • Клиентские API HTTP (например, HttpUrlConnection)
  • работа с Socket прямо на Java / Kotlin
  • работа с сокетами POSIX непосредственно на C / C++ с использованием NDK
  • WebView
  • и т.п.

У вас нет средств прозрачно перехватить большую часть этого, не говоря уже о перенаправлении их для прохождения через ваш прокси.

Вы может предлагает API-интерфейсы, позволяющие разработчикам настраивать свои приложения для использования прокси в некоторых ситуациях. NetCipher делает это, чтобы помочь разработчикам интегрироваться, например, с прокси-сервером Orbot.

Спасибо за ответ! Я был уверен, что найду решение, потому что смог использовать такую ​​библиотеку в прошлом проекте. К сожалению, у библиотеки нет открытого исходного кода, но использовать ее для перенаправления трафика было довольно просто. Мне просто нужно было инициализировать библиотеку при запуске приложения, а затем он позаботился о маршрутизации всего трафика на прокси-сервер. Я попытался декомпилировать JAR, но, поскольку он скомпилирован с помощью proguard, подсказок не так много. Я действительно видел, что он использовал ServerSockets и ServerSocketChannels. Я не уверен, что он пошел на такой низкий уровень, как NDK

xapdti1 02.05.2018 15:18

С чего начать, если я просто ограничиваю то, что хочу перехватить, следующим? HTTP / HTTPS-вызовы, сокеты и веб-просмотр

xapdti1 02.05.2018 15:21

@schumi: «Я мог использовать такую ​​библиотеку в прошлом проекте» - назовите это. «С чего начать, если я просто ограничу то, что хочу перехватить, следующим?» - не существует документированного и поддерживаемого способа прозрачного перехвата сообщений с помощью любого из этих подходов.

CommonsWare 02.05.2018 15:23

Я не могу раскрыть публично, так как это проприетарная технология. Я написал тебе в Твиттере несколько часов назад

xapdti1 03.05.2018 03:58

Другие вопросы по теме