Vraag:
Kan een app code uitvoeren als u deze niet opent?
RockPaperLz- Mask it or Casket
2015-05-02 13:03:33 UTC
view on stackexchange narkive permalink

Kan een app code uitvoeren als u deze niet opent?

Als onderdeel van deze vraag is het onderwerp van een app die gegevens downloadt zonder ooit expliciet te worden geopend door de user werd kort genoemd.

Het zette me aan het denken: is het triviaal voor een app om code uit te voeren zonder ooit door de gebruiker te worden geopend?

Het is duidelijk dat een app gewoon kan worden ingesteld op opstarten bij het opstarten, waardoor het wordt uitgevoerd bij de volgende stroomcyclus. Maar nog eenvoudiger, zou een app niet zomaar een ontvanger kunnen hebben voor een heel gewone functie (zoals het scherm aanzetten), en zichzelf dus laten draaien zonder dat de gebruiker het merkt?

Is het zelfs mogelijk voor een app om als een ontvanger voor een alarmtimer te fungeren, zodat deze automatisch elke minuut wordt uitgevoerd?

Veel mensen draaien App Ops direct na het installeren van een app om de blootstelling te beperken. Maar het lijkt erop dat het bijna triviaal zou zijn als een app code onmiddellijk na installatie uitvoert.

Is dit correct of zijn er voorzorgsmaatregelen om dit te voorkomen?

Ja, services worden automatisch uitgevoerd.
Er zijn veel manieren om uw vraag (en) te beantwoorden, maar er zijn variabelen. Tot welke systeem- en gebruikerscomponenten heb je volledige toegang verleend als je geroot bent en SU ​​is geïnstalleerd? Download en installeer je apps van betrouwbare bronnen? Lees je de toestemmingen voor een app? Gebruik je Ease of Accessibility-apps? ....... wat AppOps betreft, ik gebruik dat niet. Mijn favoriete tool is [My Android Tools] (https://play.google.com/store/apps/details?id=cn.wq.myandroidtools&hl=en). Je hebt opties om `diensten, activiteiten, uitzendontvanger, inhoudsprovider` en andere items in / uit te schakelen.
@HasH_BrowN Ik denk meer in de trant van wat technisch mogelijk is, ongeacht het gebruikersgedrag.
Een antwoord:
GiantTree
2015-05-02 17:41:42 UTC
view on stackexchange narkive permalink

Bekijk Broadcast Actions (scrol omlaag naar Standard Broadcast Actions ).

Alle intenties die worden aangegeven als een Broadcast Actie kan worden ontvangen door een app die een ontvanger in zijn manifest heeft aangegeven.

Er zijn enkele uitzendingen die expliciete registratie in het systeem vereisen (geannoteerd met U kunt dit niet ontvangen via componenten gedeclareerd in manifesten, alleen door er expliciet voor te registreren met Context.registerReceiver (). ).

De belangrijkste voor apps die code uitvoeren na installatie zijn:

  • ACTION_USER_PRESENT : Wordt verzonden wanneer de gebruiker aanwezig is nadat het apparaat ontwaakt (bijv. wanneer de toetsenblokkering is verdwenen).
  • ACTION_SCREEN_ON : uitzendactie: Wordt verzonden wanneer het apparaat wakker wordt en interactief wordt.
  • ACTION_SCREEN_OFF : uitzendactie: verzonden wanneer het apparaat in slaapstand gaat en niet-interactief wordt.
  • ACTION_MY_PACKAGE_REPLACED : er is een nieuwe versie van uw applicatie geïnstalleerd alled over een bestaande. Dit wordt alleen verzonden naar de applicatie die is vervangen. Het bevat geen aanvullende gegevens; om het te ontvangen, gebruik gewoon een intent-filter voor deze actie.
  • ACTION_HEADSET_PLUG : bedrade headset aangesloten of losgekoppeld. Hetzelfde als ACTION_HEADSET_PLUG, te raadplegen voor waarde en documentatie.
  • ACTION_DATE_CHANGED : de datum is gewijzigd.

( Bron: http://developer.android.com/reference/android/content/Intent.html )

Is het zelfs mogelijk dat een app werkt als ontvanger van een alarmtimer zodat deze automatisch elke minuut wordt uitgevoerd?

Ja, het is mogelijk met behulp van de ACTION_TIME_TICK Broadcast-actie. Het moet worden geregistreerd met Context.registerReceiver () maar daarna wordt de geregistreerde service elke minuut gebeld.

Veel mensen gebruiken App Ops direct nadat ze een app hebben geïnstalleerd om de blootstelling te beperken. Maar het lijkt erop dat het bijna triviaal zou zijn voor een app om code onmiddellijk na installatie uit te voeren.

Is dit correct of zijn er voorzorgsmaatregelen om dit te voorkomen?

Uw aanname is volkomen juist. Theoretisch zou elke app een Broadcast-ontvanger kunnen verklaren om een ​​van de bovengenoemde Broadcast-acties te ontvangen en een code uit te voeren. Dit is zelfs nog belangrijker bij het updaten van een app vanwege de ACTION_MY_PACKAGE_REPLACED -uitzending om code uit te voeren direct nadat de update is voltooid. Dat is de reden waarom veel mensen AppOps gebruiken om te voorkomen dat apps worden uitgevoerd als een van de vaker verzonden uitzendingen wordt verzonden.

Goed antwoord, maar hoe zit het met de andere delen van de OP-vraag? Evenals je de Broadcast-kant ervan hebt aangepakt, blijft het antwoord onvolledig. Geen gebrek aan respect bedoeld.


Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...