Brak reklam w Android bez AdFree

Jedną z najłatwiejszych metod wyłączania reklam w systemie Android jest aplikacja AdFree. Bazuje ona na podmianie pliku hosts znajdującym się w /system/etc/hosts. Co w przypadku jeśli aplikacja wykrywa tą blokadę? W dalszej części pokaże na to sposób.

Z uwagi na popularność tego rozwiązania, wielu programistów analizuje plik hosts pod kątem występowania domen serwisów reklamowych z których korzystają. Jeśli takowy tam znajdą blokują swój program.

Jeśli mamy aplikacje która działa w ten sposób a jednak chcemy z niej korzystać nie wyświetlając przy tym reklam proponuje poniższe rozwiązanie (konieczność posiadania dostępu do uprawnień root’a):

    1. Instalujemy aplikację DroidWall czyli Firewall na Androida
    2. Zaznaczam dwa pierwsze kwadraty (Any application) dla WiFi/3G i klikamy opcje ==> Firewall enabled w celu uruchomienia firewalla
    3. Klikamy opcje ==> więcej ==> set custom script
    4. Wklejamy w pierwsze pole kod:
$IPTABLES -A "droidwall" --destination "63.215.202.6" -j DROP
$IPTABLES -A "droidwall" --destination "165.193.245.52" -j DROP
$IPTABLES -A "droidwall" --destination "165.193.245.178" -j DROP
$IPTABLES -A "droidwall" --destination "70.32.132.54" -j DROP
$IPTABLES -A "droidwall" --destination "165.193.245.54" -j DROP
$IPTABLES -A "droidwall" --destination "173.194.34.57" -j DROP
$IPTABLES -A "droidwall" --destination "173.194.34.58" -j DROP
$IPTABLES -A "droidwall" --destination "209.85.148.154" -j DROP
$IPTABLES -A "droidwall" --destination "209.85.148.155" -j DROP
$IPTABLES -A "droidwall" --destination "209.85.148.156" -j DROP
$IPTABLES -A "droidwall" --destination "209.85.148.157" -j DROP
$IPTABLES -A "droidwall" --destination "173.194.70.154" -j DROP
$IPTABLES -A "droidwall" --destination "173.194.70.155" -j DROP
$IPTABLES -A "droidwall" --destination "173.194.70.156" -j DROP
$IPTABLES -A "droidwall" --destination "173.194.70.157" -j DROP
$IPTABLES -A "droidwall" --destination "173.194.35.153" -j DROP
$IPTABLES -A "droidwall" --destination "173.194.35.141" -j DROP
$IPTABLES -A "droidwall" --destination "173.194.35.154" -j DROP
  1. Wstecz ==> Apply rules

Tym sposobem tworzymy reguły IPTABLES dla wszystkich połączeń z adresami IP najpopularniejszych reklamodawców.

Oczywiście nie są to wszystkie adresy. Tylko przeanalizowane przeze mnie najpopularniejsze reklamowe giganty.

Jeśli nadal w aplikacji wyświetlają nam się reklamy, patrzymy przez jakiego reklamodawce są dostarczane. Dla przykładu może być to AdMob, szukamy w sieci adresu z jakiego pobierane są reklamy AdMob, jest to adres r.admob.com.

W wierszu poleceń wpisujemy komendę:

nslookup r.admob.com

nslookup

Wyświetlone zostaną adresy IP danej domeny. Dopisujemy je wtedy analogicznie do IPTABLES.

Proszę jednak pamiętać, że usuwanie reklam godzi w prawo autorów aplikacji i zmniejsza ich zysk. Nie jest to jednak modyfikacja oprogramowania a jedynie środowiska w jakim pracują.

 

P.S. Aktualizacja 28.09.2012

Jeśli nie wiemy dokładnie z jakiego usługodawcy reklam aplikacja korzysta lub chcemy poznać dokładne adresy IP z którymi się łączy możemy skorzystać ze sniffera:

  1. Pobieramy aplikację Shark for Root (sniffer na androida)
  2. Blokujemy Droidwallem wszystkie aplikacje, tzn na białą listę wstawiamy tylko tą którą sprawdzamy
  3. Odpalamy Shark for Root i klikamy Start, nie zamykamy Shark for Root (przycisk „domek”)
  4. Uruchamiamy aplikację którą chcemy sprawdzić i czekamy na załadowanie reklamy, gdy się wczyta zamykamy ją
  5. Przechodzimy do Shark for Root i klikamy Stop, zapisaliśmy tym sposobem zrzut bazujący na tcpdump, tzn plik o rozszerzeniu .pcap (np. shark_dump_1348777564.pcap)
  6. Przesyłamy ww plik .pcap na komputer
  7. Uruchamiamy Wireshark w celu przeanalizowania zrzutu
  8. Wczytujemy do Wireshark’a plik .pcap
  9. Szukamy adresów IP reklamodawny
  10. wireshark analiza
  11. Dodajemy je do reguł $IPTABLES przedstawionych wyżej.

 

GD Star Rating
loading...