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.
źródło
Odpowiedzi:
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.
źródło
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. :)
źródło