Compartilhamento reverso USB do Android: como enganar os aplicativos

18

Conexão reversa USB = o celular obtém conexão de rede do PC via USB.

Eu sei como fazer o tethering reverso USB, exceto por um problema: muitos aplicativos Android verificarão a conexão de rede usando o código abaixo antes de realizar qualquer trabalho útil:

ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();

O problema é que, ao usar o tethering reverso USB, o código acima relatará nenhuma conexão de rede. No entanto, existe uma conexão de rede (que é o próprio tethering reverso USB) e o ping, o wget e todos os programas que não fazem essa verificação estúpida funcionam bem.

Portanto, a pergunta é: como posso invadir o sistema para permitir que essa conexão de rede verifique o retorno com êxito (para que eu possa enganar esses aplicativos)?

Entre. Eu uso o Cyanogenmod 7. E qualquer solução específica para este MOD também é bem-vinda.

Cyker
fonte
Esta questão resolve o mesmo problema que android.stackexchange.com/questions/11728/…
Fluxo
Tony Beta Lambda postou uma solução válida - considere aceitá-la.
Michaël 25/11

Respostas:

5

Vejo que essa é uma pergunta bastante antiga, mas no caso de alguém pesquisar no Google e chegar aqui. Existe um módulo relativamente novo chamado FakeWifiConnection baseado no framework Xposed. A instalação e o uso devem ser bem diretos.

Tony Beta Lambda
fonte
Isso é ótimo; você deve postar a mesma resposta em android.stackexchange.com/questions/11728/…
Michaël 25/11
@ Michaël Eu acho que essa pergunta foi marcado duplicado
Tony Beta Lambda
9

Eu diria que existem apenas soluções específicas para Mod. Quase todos os aplicativos que conheço usam essa API do Android e, portanto, o código recortado em suas perguntas, para verificações de conectividade de rede.

Seria necessário alterar a fonte de Cyanogen para que o sistema operacional (Android + Cyanogen) esteja ciente da conectividade de rede do tethering reverso USB e retorne as informações corretas para o aplicativo que solicita o estado atual da rede. Não acredito que isso possa ser feito com alguma camada artificial entre a API e o aplicativo que "engana" o aplicativo. É mais realista que o Cyanogen implemente o manuseio da amarração reversa, imitando uma conexão WiFi ativa. Você deve pedir que eles abordem esse tópico. Talvez no futuro o Android tenha suporte oficial para amarrar reversamente. :)

Fluxo
fonte