Я хотел бы проверить и изменить TCP-пакеты на лету в Android. Например, для создания собственного решения VPN: шифрование данных, изменение порядкового номера, обработка зарезервированных битов и т. Д.
Я предполагаю, что потребуется следующее:
- Корневое устройство. Я думаю, что делать такие вещи на стоковом устройстве невозможно.
- Драйвер ядра скомпилирован для точной версии ядра и архитектуры целевого устройства. Я думаю, он будет загружен в ядро с помощью modprobe / insmod.
- Привилегированный демон для взаимодействия с драйвером. Демон будет использовать IOCTL для доступа к драйверу и предоставит локальный сокет TCP, который будет использоваться графическим интерфейсом для отправки команд.
- Графический интерфейс для взаимодействия - загрузка и сохранение данных и / или конфигурации с использованием сокета TCP, предоставляемого демоном.
Я представляю себе следующие ограничения:
- Решение будет развернуто на пользовательских устройствах. Я полагаю, что это невозможно реализовать независимым от устройства способом из-за отсутствия стабильного ABI ядра Linux. А как насчет Android-проекта Treble HIDL ?
- Невозможно достичь жеребенка, используя только Android VpnService class.
Примечания:
- Лицензирование. Я предполагаю, что для драйвера ядра возможна закрытая лицензия.