Bei Smartphones und den damit verbundenen Tarifen ist es durchaus nützlich Werbung zu blockieren, um die -sowieso schon begrenzte - Bandbreite zu schonen. Im Market gibt es zum Blocken von Werbung schon eine App namens Adfree. Leider hat diese einen Nachteil und zwar das Root-Rechte benötigt werden. Wenn man jedoch sein Smartphone nicht rooten möchte, muss man mit der Werbung leben.
Hinweis: Die Anleitung richtet sich an versierte Nutzer. Es ist durchaus möglich, damit auch Schaden am Gerät oder an der Firmware anzurichten. Ich übernehme keine Haftung für eventuelle Schäden.
Die App Adfree basiert darauf, dass eine Liste von bekannten Werbeservern in die Hosts-Datei des Betriebssystems eingetragen werden und diese mit der lokalen IP (127.0.0.1) verbunden wird. Deshalb wird jede Anfrage an einen dort eingetragenen Server auf das eigene Gerät umgeleitet. Beispiele für solche Hosts-Dateien gibt es im Netz zu finden. Diese werden später für die Anleitung benötigt. Ladet euch eine Datei herunter und speichert diese unter hosts.txt. Downloads gibt es z.B. hier:
Mit ein paar Linux-Kenntnissen ist es möglich dieses Verhalten manuell zu tun, um damit die Werbung zu blocken. Dazu benötigt man das Android SDK, in dem z.B. das Tool adb enthalten ist. Dieses wird benötigt, um eine Shell auf dem Telefon zu starten. Einfach den Installer laden und die Tools in einen Ordner eurer Wahl installieren. Den SDK Manager im Anschluss starten und die Plattform-Tools installieren. Alles andere kann abgewählt werden:
Im Telefon muss Debugging noch aktiviert werden, damit wir Verbindung aufnehmen können. Das ist zu finden unter Einstellungen -> Anwendungen - >Entwicklung:
Im Folgenden wird davon ausgegangen, dass das SDK in D:\android-sdk-windows installiert ist und das Telefon an den USB-Anschluss angeschlossen ist (Nur Laden). Die vorher heruntergeladene Hosts-Datei ist im Unterordner platform-tools abgelegt. Also unter d:\android-sdk-windows\platform-tools\hosts.txt.
Zuerst starten wir eine Konsole (Win+R->cmd->Enter), hangeln uns zu den Plattform-Tools durch und starten eine Shell per ADB:
cd /d "d:\android-sdk-windows\platform-tools" adb shell
Auch wenn keine weitere Ausgabe erfolgts sind wir nun auf dem Gerät eingeloggt. Zuerst müssen wir die Systempartition schreibbar machen, standardmäßig ist diese nur lesbar. Im Anschluss beenden wir die Shell gleich wieder:
mount -o remount,rw /system exit
Die Hosts-Datei muss nun auf das Gerät übertragen werden. Dafür benutzen wir den push-Befehl und speichern diese gleich auf dem Gerät unter /system/etc (der Ordner kann sich bei anderen Geräten unterscheiden, dies ist aber der Standardpfad!) ab. Nun gehen wir zurück aufs Gerät und browsen direkt zum Ordner
adb push hosts.txt /system/etc adb shell cd /system/etc
Aus Sicherheitsgründen benennen wir die alte Hosts-Datei um und geben der neuen Datei ihren Namen:
mv hosts hosts_old mv hosts.txt hosts
Nun noch die Shell beenden und das Gerät neu starten. Nun sollte die Werbung komplett entfernt sein.
Hier noch einmal ein Screenshot der kompletten Vorgehensweise:
Hi,
AntwortenLöschenklasse Anleitung. Ich habe nur das Problem, dass bei mir adb anscheinend nicht den remount Befehl kennt. Wenn ich versuche, das /System Verzeichnis zu mounten liefert er nur mögliche Eingaben beim mount-Befehl. Mehr passiert nicht.
Was genau soll die Ergänzung remount bewirken? Die anderen Parameter sind mir klar.
Gruß
Phil
Hallo Phil,
AntwortenLöschenremount bewirkt, dass nur die Flags des Mountpoints umgesetzt werden anstatt das Dateisystem vorher komplett auszuhängen und wieder neu einzuhängen. Ein umount (also das Aushängen) funktioniert bei einem Dateisystem nicht, welches gerade in Verwendung ist.
Bei der Anleitung ist es wichtig auf Groß- und Kleinschreibun zu achten, vielleicht ist das schon dein Problem. Alternativ kannst du auch probieren meine Anleitung im Recoverymodus nachzuvollziehen. Bei HTC musst du dazu die "Leiser" -Taste beim Einschalten drücken. HIer hast du normalerweise mehr Rechte und kannst /system auch aus- und einhängen.
Gruß,
Danny
Hallo Danny,
AntwortenLöschendanke für die Antwort.
Bei der Schreibweise habe ich komplett alles klein geschrieben, daran sollte es also nicht liegen. Ich habe ein Xperia Ray mit der aktuellen .069 Firmware, bei der noch kein Root möglich ist. Es geht nur über den Downgrade auf eine ältere FW, was ich aber erstmal vermeiden wollte. Daher käme mir deine Lösung sehr gelegen, um auch ohne Root die Werbebanner wegzubekommen.
Den Recovery-Modus gibt es bei meinem Gerät auch und das werde ich als nächstes ausprobieren.
Gruß
Phil
Hallo Danny,
AntwortenLöschenIch habe eine Frage zu diesen Thema!
Entstehen bei dieser Vorgehensweise Garantieverluste?
Mfg.
Franz
Hallo Franz,
AntwortenLöschenGarantieverluste entstehen keine, da hier lediglich eine Datei geändert wird. Hier wird nichts (wie beim Rooten) am Bootloader oder tief im System geändert. Natürlich solltest du dich dabei genau an die Anleitung halten ;) Wenn du Fehler machen solltest ist es bei den Androiden auch normalerweise sehr einfach das Gerät auf den Auslieferungszustand zurückzusetzen.
Gruß,
Danny
Hi Danny,
AntwortenLöschenleider komme ich nicht weiter, da es den Recovery-Mode im Auslieferungszustand nicht gibt. Gibt es eine Möglickeit, wie ich über die adb-shell weiter vorankomme?
Wenn ich in der Shell nur mount eingebe erhalte ich folgendes:
----------
$ mount
mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/block/mtdblock0 /system yaffs2 ro,relatime 0 0
/dev/block/mtdblock3 /data yaffs2 rw,nosuid,nodev,relatime 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev,relatime 0 0
/dev/block/mtdblock1 /data/idd yaffs2 rw,nosuid,nodev,relatime 0 0
--------
Bringt mich das irgendwie sinnvoll weiter? Muss ich evtl. nur den Befehl anpassen, um deine Anleitung befolgen zu können?
Gruß
Phil
Hallo Phil,
AntwortenLöschendas sieht wohl eher schlecht dann aus. Etwas könntest du aber noch probieren:
Gib in der Shell "su" und Enter ein, dann solltest du Superuserrechte haben, danach gibst du "cat /proc/mounts" ein. Die Ausgabe sieht in etwa so aus:
cat /proc/mounts
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
sys /sys sysfs rw,relatime 0 0
tmpfs / tmpfs ro,relatime 0 0
/dev/sda1 /mnt ext3 rw,relatime,errors=continue,barrier=0,data=writeback 0 0
/dev/sda1 /system ext3 rw,relatime,errors=continue,barrier=0,data=writeback 0 0
tmpfs /cache tmpfs rw,relatime 0 0
/dev/sda1 /data ext3 rw,relatime,errors=continue,barrier=0,data=writeback 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
Hier sucht du die Zeile mit /system heraus (im Bsp. ist das:
/dev/sda1 /system ext3 rw,relatime,errors=continue,barrier=0,data=writeback 0 0
Vor dem ersten Leerzeichen steht der Devicename, den du nun für den modifizierten mount-Befehl verwenden kannst:
"mount -o remount,ro /dev/sda1 /system"
Kann nicht versprechen, dass es funktiomiert aber ein Versuch ist es wert.
Gruß,
Danny
Hi Danny,
AntwortenLöschenWenn ich mount -o remount,rw /system eingebe kommt das hier:
Usage: mount [-r] [-w] [-o options] [-t type] device directory
Soweit ich weiß ist da etwas im Befehl falsch!
Mfg,
Franz
Hi Danny,
AntwortenLöschenschade, su geht leider nicht (permission denied) und auch der mount-befehlt direkt auf den System-Ordner schlägt dann ohne superuser-Rechte fehl. :-/
Muss ich wohl doch in den sauren Apfel beißen, und irgendwann ein Downgrade auf eine ältere, rootbare FW-Version, durchführen.
Trotzdem danke für deine Unterstützung.
Gruß
Phil
Hallo Franz,
AntwortenLöschenanscheinend funktioniert der Befehl (warum auch immer) bei manchen Geräten nicht. Das selbe Problem hatte Phil auch. Schau mal in meine Antwort auf Phils Frage (direkt über deinem Kommmentar) und probiere mal diese Lösung aus, vielleicht ist das bei deinem Gerät so möglich.
@Phil:
Schade, anscheinend hat Sony da zusätzliche Sicherungsmaßnahmen eingebaut.
Gruß,
Danny
Hallo,
AntwortenLöschenich habe ein Galaxy Note 10.1 und möchte gern die HOSTS Datei austauschen!
Habe diese Anweisung gelesen, aber leider klappt es bei mir nicht!
ist es evtl. nicht möglich dies auch auf dem Galaxy Note 10.1 zu machen
ich bekommen beim Mounten die Meldung
Operation not permitted
kann jemand helfen?
Hallo,
AntwortenLöschenalso ich finde dein Beitrag hier entweder nicht richtig oder total Absurt und Widersprüchlich.
Denn wie soll man die Befehle hier ohne Root Rechte ausführen können?!
Um in der Verzeichnis /System ... etwas zu ändern (da reicht auch Dateiname ändern - sprich wie oben beschrieben sollen wir Dateinamen mit "mv" ändern) braucht man Root Rechte.
Und wenn man das Handy eh gerootet hat, dann kann man direkt die anderen Software installieren die auf gerooteten Handys funktionieren und die ganze Arbeit und Aufwand den Software überlässt.
Also bitte eine gescheite Lösung hier Anbieten!
Gruß
Daniel