Android tethering wsteczny USB: jak oszukać aplikacje

18

Odwrotne tethering przez USB = telefon otrzymuje połączenie sieciowe z komputera przez USB.

Wiem, jak wykonać odwrotne tethering przez USB, z wyjątkiem jednego problemu: wiele aplikacji na Androida sprawdzi połączenie sieciowe za pomocą poniższego kodu przed wykonaniem jakiejkolwiek przydatnej pracy:

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

Problem polega na tym, że w przypadku korzystania z odwrotnego tetheringu przez USB powyższy kod nie zgłasza żadnego połączenia sieciowego. Istnieje jednak połączenie sieciowe (samo to samo tethering przez USB), ping, wget i wszystkie programy, które nie wykonują tego głupiego sprawdzania, działają dobrze.

Pytanie brzmi: w jaki sposób mogę zhakować system, aby to połączenie sieciowe sprawdziło powodzenie (aby móc oszukać te aplikacje)?

BTW. Używam Cyanogenmod 7. Każde rozwiązanie specyficzne dla tego MOD jest również mile widziane.

Cyker
źródło
To pytanie dotyczy tego samego problemu, co android.stackexchange.com/questions/11728/…
Flow,
Tony Beta Lambda opublikował prawidłowe rozwiązanie - powinieneś rozważyć jego zaakceptowanie.
Michaël,

Odpowiedzi:

5

Widzę, że to dość stare pytanie, ale na wypadek, gdyby ktoś googlował i się tu dostał. Istnieje całkiem nowy moduł o nazwie FakeWifiConnection oparty na frameworku Xposed. Instalacja i użytkowanie powinno być dość proste.

Tony Beta Lambda
źródło
To wspaniale; powinieneś opublikować tę samą odpowiedź w android.stackexchange.com/questions/11728/…
Michaël
@ Michaël Myślę, że to pytanie zostało oznaczone jako duplikat
Tony Beta Lambda
9

Powiedziałbym, że są tylko rozwiązania specyficzne dla Modu. Prawie każda aplikacja, którą znam, korzysta z tego interfejsu API systemu Android, a zatem kod został wpisany w pytaniach w celu sprawdzenia łączności z siecią.

Trzeba będzie zmienić źródło Cyanogen, aby system operacyjny (Android + Cyanogen) był świadomy łączności sieciowej z odwrotnym tetheringiem przez USB i zwrócił odpowiednie informacje do aplikacji żądającej bieżącego stanu sieci. Nie wierzę, że można to zrobić za pomocą sztucznej warstwy między interfejsem API a aplikacją, która „oszuka” aplikację. Bardziej realistyczne jest to, że Cyanogen implementuje obsługę odwrotnego tetheringu poprzez naśladowanie aktywnego połączenia WiFi. Powinieneś poprosić ich o zajęcie się tym tematem. Być może w przyszłości Android ma oficjalne wsparcie dla odwrotnego tetheringu. :)

Pływ
źródło