Dettagli tecnici per i più esperti sui meccanismi dello spy Android.
Il sistema Android ha delle priorità, la telefonata ad esempio ha una priorità massima e vince su tutto, se c'è poca memoria le altre app in esecuzione vengono chiuse dal sistema per lasciare la memoria libera e consentire all'utente di effettuare una telefonata. Lo stesso discorso si applica quando il livello della batteria è basso.
Un'applicazione in foreground ha la priorità su di un servizio che lavora in background, le spy lavorano sempre in sottofondo, per loro è vitale avere uno spazio libero nella memoria, se lo occupano tutto rischiano di essere killate dalle sentinelle anche nonostante il fatto che una app ha la sua memoria heap dedicata, tutti gli oggetti contenuti nella memoria heap vengono immediatamente uccisi quando la memoria scarseggia. Quindi è compito di una buona app spia bilanciare il carico di lavoro monitorando il consumo di RAM e CPU.
La CPU su Android viene gestita da delle sentinelle ed un particolare sistema detto Doze. IL Doze è un meccanismo molto simile al sonno umano. Quando il telefono ha lo schermo spento il Doze entra in azione e inizia a limitare la potenza della CPU. Più il telefono rimane con lo schermo spento più il Doze fà dormire il telefono sino ad arrivare a limitare la CPU al 10%.
Un telefono che ha lo schermo spento da oltre 30 minuti ha una CPU che viene limitata al 10% della sua potenza. In questa fase il telefono si raffredda e il consumo della batteria è minimo. Il telefono può rimanere freddo e veloce solo se questo meccanismo viene rispettato. Senza questo meccanismo, con una CPU sempre al 100%, la batteria non arriva a fine giornata. Ogni tanto il sistema, quando si trova dentro il Doze si risveglia e dà la possibilità alle app di consumare, la logica è quella di usare tutti insieme le risorse; lasciare che una app risvegli la CPU quando gli pare, con tante app installate, non consentirebbe alla CPU di riposare mai
Un' applicazione ha la possibilità di non far dormire mai la CPU, ma il sistema và a combattere e mettere i bastoni fra le ruote a queste applicazioni che sono sempre in moto, motivo questo che spiega come mai a volte certe applicazioni spia smettono di comunicare per sempre, non è detto che le dirette vi durino in eterno. Android è un sistema aperto che le fabbriche possono personalizzare, ci sono personalizzazioni più aggressive che tendono ad uccidere tutte le app che disturbano Doze e personalizzazioni che sono più permissive. In ogni caso le sentinelle di Android non smetteranno di vigilare, anche nei sistemi più permissivi tenteranno sempre di raffreddare la CPU se lo schermo è spento. Più tempo passa il telefono con lo schermo spento più le sentinelle saranno aggressive nei confronti di tutti quei servizi che non fanno dormire il telefono.
Attivare una socket, detto in parole povere un canale di comunicazione via internet per trasferimento dati, è una delle cose che consuma maggiormente risorse, mediamente và sempre oltre il 40% della CPU. Registrare l'audio è possibile stando sotto il 10% di CPU ma trasmetterlo porta inevitabilmente ad un risveglio della CPU. Questo per dire che ascoltare in tempo reale fà uscire il sistema dal Doze.
Facciamo un esempio, la registrazione ambientale.
La nostra spy app registra l'ambiente e tiene l'audio dentro una cartella nascosta anche quando il Doze è attivo. La registrazione ambientale non impegna la CPU oltre il 10% e di conseguenza anche dentro il Doze la nostra app spia lavora senza svegliare il telefono. L'app è in grado di monitorare il livello della CPU ed evita che il telefono esca dal Doze se si trova in quello stato chiaramente. Come detto il Doze concede delle finestre temnporali offrendo a tutte le app la possibilità di consumare risorse ed è li che la nostra app trasmette i dati ai nostri server, ecco il perchè della nostra scelta di non usare le dirette.
Con altre app spia non avreste di certo rinunciato al gusto di sentire l'audio in diretta. La CPU viene risvegliata e i consumi vanno alle stelle. Abbiamo una trasmissione di dati e contemporaneamente una registrazione audio. Ad occhio stiamo impegnando la CPU oltre il 50%. A questo bisogna aggiungere che magari chi ha il telefono in mano lo sta usando è sta impegnando anche lui delle risorse. L'utilizzatore del telefono dopo circa 4 ore non avrà più batteria e dovrà ricaricare il telefono e anche i meno esperti capiranno che qualcosa non và, vedono il telefono strano, batteria che dura poco, telefono sempre bollente e lento.
Abbiamo testato una nostra app concorrente che a nostro avviso è bene fatta, testata su un Samsung Galaxy S23 Ultra, il telefono più potente sul mercato ad oggi. La funzione che registra le telefonate e le trasmette in tempo reale, in una telefonata di 25 minuti ha consumato il 18% di batteria. Durante la telefonata abbiamo aperto il browser Chrome per consultare un sito, la tastiera aveva un ritardo sul tocco di mezzo secondo. Lo scroll del sito andava a scatti. A questo punto sono intervenute le sentinelle di Android che hanno fatto il kill del PID per dare piu CPU e RAM alla telefonata, fine della diretta. Questo per farvi capire la portata di ciò che diciamo, 5 di queste azioni e la batteria è scarica, 2 ore e mezzo e il telefono più potente sul mercato ha la batteria a zero. La nostra applicazione non va mai oltre il 10% di uso CPU durante la registrazione di una telefonata anche nei telefoni meno potenti.
Con la nostra applicazione spia non avrete la telefonata in tempo reale, la sentirete dopo 15 minuti, avrete pero in cambio un consumo totale a fine giornata del 1% di batteria oltre ad aver lasciato un telefono freddo nelle mani dell'utente utilizzatore.
Si spia una volta sola, non puoi spiare chi sà di essere spiato, ritornare da noi dopo aver constatato che avevamo ragione non serve è troppo tardi a quel punto.
|