Discussione Ufficiale Sicurezza Informatica Android: app TotalCleaner (lancio imminente su Google Play)

Una Discussione Ufficiale punta a raccogliere tutte le informazioni su un argomento o un fatto di attualità, con costanti aggiornamenti da parte del creatore e dei partecipanti.

Netcat

Helper
17 Gennaio 2022
546
153
402
866
Ultima modifica:
Buongiorno. In questi mesi ho studiato approfonditamente l'ambiente di Google Play, e in qualità di "ethical hacker"/developer non sono rimasto soddisfatto.

Non sono rimasto soddisfatto in particolare delle app dedicate alla gestione degli Storage e delle Prestazioni dei dispositivi. Le cosiddette "app di pulizia".
In questo thread non mi limiterò a proporre la mia idea di un app che riassembla i miei valori e le mie aspirazioni in tema di Sicurezza Informatica, ma introdurrò anche il mio concetto personale di VENDITA.

Cosa manca alla maggior parte delle App trovate sul GP?
  • Coerenza: mi sono imbattuto in varie app di pulizia che pesano circa oltre 30 MB all'installazione (un app che dovrebbe migliorare le performance di Android è così pesante?). Dopo aver visto quanto spazio richiedevano rimanevo tipo "Wtf? Un app di pulizia e performance che pesa circa 30 MB? Ma che è una mod per Fortnite?" Dopo averle scaricate le ispezionavo con gli strumenti di debug, e prova a figurare il motivo per cui alcune di queste sono pesanti: i loro developer usano strumenti come Jetpack Compose, una suite che facilita il development dell'UI delle applicazioni. Tuttavia le app realizzate con questo framework rischiano di aumentare il peso complessivo dell'app. Inoltre, se implementato male rischia di non rendere nei dispositivi Android con hardware meno potente. In altre app invece, ho rilevato addirittura alcune dipendenze inutilizzate, probabilmente incluse per sbaglio nel build-gradle.kts - Altre app implementavano strumenti superflui, probabilmente orientati a indurre l'utente al download/aquisto, come toolbar colorate o tasti ingombranti;

  • Comodità: spesso, sempre per indurre forzatamente gli utenti a interagire con le app, si preferisce monetizzare con gli ADS. Tuttavia questi strumenti di monetizzazione vengono abusati da alcuni developer, che introducono ingombranza con l'eccessiva quantità di ADS implementati, e in via ultimata infondono un falso senso di "open source" a chi scarica le app invasate da questi ADS. Tengo a precisare che Google si impegna a controllare che gli ADS siano innoqui, e una volta cliccati non redirigano a siti fraudolenti o ad aquisti automatici indesiderati, quindi sono relativamente sicuri - Ma rovinano l'user experience se implementati senza controllo, creando rallentamenti nei dispositivi low-end o comunque forzando interazioni indesiderate. Di sicuro non è una bella cosa incontrarli soprattutto in app che dovrebbero occuparsi di Performance & Security;

  • Privacy: questo è un aspetto su cui mi si può dare solo ragione o torto, o anche ignorare se non siete d'accordo. ZERO TELEMETRY. Alcuni developer implementano "compromessi" nelle loro app, come ad esempio dei Dialog() che chiedono all'utente se vuole concedere all'app il permesso di usare qualunque connessione di rete disponibile per inviare i dati relativi alle prestazioni e utilizzo delle app. Comprendo che la Telemetry sia un aspetto utile per capire in che punti bisogna orientare il development, e in alcuni casi porti rapidamente alla scoperta di problemi su dispositivi su cui non si è potuto testare. Tuttavia, io non sono d'accordo. Ritengo che la Telemetry consumi traffico Internet, specialmente se l'app deve farne uso intensivo, potendo inoltre creare rallentamenti durante la navigazione nel browser (in caso sia un'app progettata per funzionare in background); Una cosa su cui sono ancora meno d'accordo, è che alcune app richiedono permessi invasivi come "RECEIVE_SMS", richiesto per poter inviare all'user SMS pubblicitari, questa funzionalità viene implementata soprattutto nelle app che vogliono inviare pubblicità sulla loro "Controparte Premium". La gestione dei permessi è un aspetto di sicurezza fondamentale in Android.
Scritto ciò, avete sicuramente già intuito alcune generalità su Total Cleaner (scritta in Kotlin), l'app già creata e firmata da me. Eseguirò un pass rapido delle sue funzionalità:
  1. Monitoraggio dello stato di Internal Storage/External Storage (Scheda SD). Total Cleaner comunica chiaramente al Cliente il totale dello spazio di archiviazione disponibile, lo spazio usato e quello ancora disponibile;

  2. Scansione AUTOMATICA (all'avvio dell'app, dopo aver concesso i permessi) di tutte le cartelle non protette da "root access" in cerca di vari file che vengono categorizzati per estensione come "junk data". L'app non si limita solamente a scansionare cartelle comuni come DCIM o DOWNLOADS, procedendo all'esame delle cartelle relative alle app di messaggistica istantanea più comuni come Whatsapp o Telegram, e anche altre cartelle di Sistema non protette da root permission. A tal proposito, gli unici permessi richiesti dall'app per fare il suo lavoro sono Read/Write External Storage, Manage External Storage, Read Media Images/Video/Audio - L'app non richiede alcun permesso di accesso ad Internet;

  3. BACKUP. Tramite questa funzionalità se vogliamo salvare i file junk rilevati, li comprimiamo in una ZIP tramite java.util.zip.ZipEntry e java.util.zip.ZipOutputStream - Il processo include un robusto sistema di gestione di I/O errors, exceptions, e soprattutto errori dovuti ad "access denied", un problema comune in cui si imbattono le app di sicurezza Android, a causa del rigido sistema di gestione dei permessi dell'OS. La ZIP finale del Backup viene infine salvata nella directory "Download", da dove potremo recuperarla comodamente per il trasferimento in altri dispositivi di archiviazione;

  4. Refresh. Alcuni developer dimenticano questa funzionalità, di conseguenza se un utente fa una scansione ma poi aggiunge nuovi elementi, le loro app di pulizia vanno riavviate per ripetere da capo la scansione e rilevarli;

  5. L'utente ha controllo granulare sugli elementi rilevati nella scansione. Può comodamente selezionare quali file eliminare, ma se vuole eliminarli tutti viene fornito di un comodo button() "Delete all Data", che è chiaramente da usare con cautela in caso non si vogliano perdere le foto e gli audio del telefono.

  6. No ADS, no Jetpack Compose, nessuna toolbar invadente. Nell'UI di TotalCleaner andiamo semplicemente a lasciare un recapito e-mail in caso si vogliano comunicare in privato metriche osservate ad occhio dall'utente. Ma comunque vanno bene anche Recensioni Google valide e critiche costruttive per capire in che direzione migliorare le app, piuttosto che aggiungere un sistema di Telemetry. Nello sviluppo dell'UI usiamo System View piuttosto che Jetpack, più leggero e adatto a dispositivi low-end (o di fascia bassa). System View è il sistema tradizionale per creare interfacce in Android, e sfrutta l'impiego di file XML craftati ad-hoc per definire l'interfaccia utente, ed evitare di appesantire il MainActivity.
Detto questo, ora chiuderò il thread comunicando a questa community la mia idea di vendere. Perché il sistema "open source" offerto da molti prodotti scaricabili dallo Store non è davvero open source, altrimenti non sarebbe neanche uno Store. Perché l'obiettivo di uno Store (cioè un negozio) è chiaramente quello di vendere, non di regalare. Non puoi chiamare "open source" un'app che una volta aperta ti invasa l'UI di annunci, spesso craftati in modo da cliccarci sopra inavvertitamente. Non puoi chiamare open-source un app che si fa scaricare gratis, ma poi ti richiede un abbonamento premium per accedere alle funzioni essenziali, lasciando i poveri con le briciole. Il mio concetto di vendita è semplice, scomodo ma dannatamente coerente: one life-time purchase (aquisto singolo per tutta la vita). No abbonamenti, no ADS. TotalCleaner sarà in vendita sullo Store ad un prezzo compreso fra i 3 ed i 4€. Di seguito riporto l'UI dell'app, volutamente "scarna" per privilegiare prestazioni e sicurezza piuttosto che estetica.
 

Allegati

  • Screenshot_20250111-061123_TotalCleaner.jpg
    Screenshot_20250111-061123_TotalCleaner.jpg
    147 KB · Visualizzazioni: 10
  • Screenshot_20250111-061140_TotalCleaner.jpg
    Screenshot_20250111-061140_TotalCleaner.jpg
    323.6 KB · Visualizzazioni: 5
L'idea è molto interessante: la maggior parte degli strumenti per la pulizia del dispositivo su Google Play lasciano molto a desiderare. Ti faccio un grosso in bocca al lupo per il tuo progetto Netcat! 😉

P.s: anch'io ho, più o meno, la stessa idea di vendita. Lo sviluppatore si paga una volta, senza costringere l'utente a fare abbonamenti a vita.
 
  • Mi piace
Reazioni: TheWorm91 e Netcat
L'idea è molto interessante: la maggior parte degli strumenti per la pulizia del dispositivo su Google Play lasciano molto a desiderare. Ti faccio un grosso in bocca al lupo per il tuo progetto Netcat! 😉

P.s: anch'io ho, più o meno, la stessa idea di vendita. Lo sviluppatore si paga una volta, senza costringere l'utente a fare abbonamenti a vita.
Grazie :)
 
  • Mi piace
Reazioni: --- Ra ---
Buongiorno. In questi mesi ho studiato approfonditamente l'ambiente di Google Play, e in qualità di "ethical hacker"/developer non sono rimasto soddisfatto.

Non sono rimasto soddisfatto in particolare delle app dedicate alla gestione degli Storage e delle Prestazioni dei dispositivi. Le cosiddette "app di pulizia".
In questo thread non mi limiterò a proporre la mia idea di un app che riassembla i miei valori e le mie aspirazioni in tema di Sicurezza Informatica, ma introdurrò anche il mio concetto personale di VENDITA.

Cosa manca alla maggior parte delle App trovate sul GP?
  • Coerenza: mi sono imbattuto in varie app di pulizia che pesano circa oltre 30 MB all'installazione (un app che dovrebbe migliorare le performance di Android è così pesante?). Dopo aver visto quanto spazio richiedevano rimanevo tipo "Wtf? Un app di pulizia e performance che pesa circa 30 MB? Ma che è una mod per Fortnite?" Dopo averle scaricate le ispezionavo con gli strumenti di debug, e prova a figurare il motivo per cui alcune di queste sono pesanti: i loro developer usano strumenti come Jetpack Compose, una suite che facilita il development dell'UI delle applicazioni. Tuttavia le app realizzate con questo framework rischiano di aumentare il peso complessivo dell'app. Inoltre, se implementato male rischia di non rendere nei dispositivi Android con hardware meno potente. In altre app invece, ho rilevato addirittura alcune dipendenze inutilizzate, probabilmente incluse per sbaglio nel build-gradle.kts - Altre app implementavano strumenti superflui, probabilmente orientati a indurre l'utente al download/aquisto, come toolbar colorate o tasti ingombranti;

  • Comodità: spesso, sempre per indurre forzatamente gli utenti a interagire con le app, si preferisce monetizzare con gli ADS. Tuttavia questi strumenti di monetizzazione vengono abusati da alcuni developer, che introducono ingombranza con l'eccessiva quantità di ADS implementati, e in via ultimata infondono un falso senso di "open source" a chi scarica le app invasate da questi ADS. Tengo a precisare che Google si impegna a controllare che gli ADS siano innoqui, e una volta cliccati non redirigano a siti fraudolenti o ad aquisti automatici indesiderati, quindi sono relativamente sicuri - Ma rovinano l'user experience se implementati senza controllo, creando rallentamenti nei dispositivi low-end o comunque forzando interazioni indesiderate. Di sicuro non è una bella cosa incontrarli soprattutto in app che dovrebbero occuparsi di Performance & Security;

  • Privacy: questo è un aspetto su cui mi si può dare solo ragione o torto, o anche ignorare se non siete d'accordo. ZERO TELEMETRY. Alcuni developer implementano "compromessi" nelle loro app, come ad esempio dei Dialog() che chiedono all'utente se vuole concedere all'app il permesso di usare qualunque connessione di rete disponibile per inviare i dati relativi alle prestazioni e utilizzo delle app. Comprendo che la Telemetry sia un aspetto utile per capire in che punti bisogna orientare il development, e in alcuni casi porti rapidamente alla scoperta di problemi su dispositivi su cui non si è potuto testare. Tuttavia, io non sono d'accordo. Ritengo che la Telemetry consumi traffico Internet, specialmente se l'app deve farne uso intensivo, potendo inoltre creare rallentamenti durante la navigazione nel browser (in caso sia un'app progettata per funzionare in background); Una cosa su cui sono ancora meno d'accordo, è che alcune app richiedono permessi invasivi come "RECEIVE_SMS", richiesto per poter inviare all'user SMS pubblicitari, questa funzionalità viene implementata soprattutto nelle app che vogliono inviare pubblicità sulla loro "Controparte Premium". La gestione dei permessi è un aspetto di sicurezza fondamentale in Android.
Scritto ciò, avete sicuramente già intuito alcune generalità su Total Cleaner (scritta in Kotlin), l'app già creata e firmata da me. Eseguirò un pass rapido delle sue funzionalità:
  1. Monitoraggio dello stato di Internal Storage/External Storage (Scheda SD). Total Cleaner comunica chiaramente al Cliente il totale dello spazio di archiviazione disponibile, lo spazio usato e quello ancora disponibile;

  2. Scansione AUTOMATICA (all'avvio dell'app, dopo aver concesso i permessi) di tutte le cartelle non protette da "root access" in cerca di vari file che vengono categorizzati per estensione come "junk data". L'app non si limita solamente a scansionare cartelle comuni come DCIM o DOWNLOADS, procedendo all'esame delle cartelle relative alle app di messaggistica istantanea più comuni come Whatsapp o Telegram, e anche altre cartelle di Sistema non protette da root permission. A tal proposito, gli unici permessi richiesti dall'app per fare il suo lavoro sono Read/Write External Storage, Manage External Storage, Read Media Images/Video/Audio - L'app non richiede alcun permesso di accesso ad Internet;

  3. BACKUP. Tramite questa funzionalità se vogliamo salvare i file junk rilevati, li comprimiamo in una ZIP tramite java.util.zip.ZipEntry e java.util.zip.ZipOutputStream - Il processo include un robusto sistema di gestione di I/O errors, exceptions, e soprattutto errori dovuti ad "access denied", un problema comune in cui si imbattono le app di sicurezza Android, a causa del rigido sistema di gestione dei permessi dell'OS. La ZIP finale del Backup viene infine salvata nella directory "Download", da dove potremo recuperarla comodamente per il trasferimento in altri dispositivi di archiviazione;

  4. Refresh. Alcuni developer dimenticano questa funzionalità, di conseguenza se un utente fa una scansione ma poi aggiunge nuovi elementi, le loro app di pulizia vanno riavviate per ripetere da capo la scansione e rilevarli;

  5. L'utente ha controllo granulare sugli elementi rilevati nella scansione. Può comodamente selezionare quali file eliminare, ma se vuole eliminarli tutti viene fornito di un comodo button() "Delete all Data", che è chiaramente da usare con cautela in caso non si vogliano perdere le foto e gli audio del telefono.

  6. No ADS, no Jetpack Compose, nessuna toolbar invadente. Nell'UI di TotalCleaner andiamo semplicemente a lasciare un recapito e-mail in caso si vogliano comunicare in privato metriche osservate ad occhio dall'utente. Ma comunque vanno bene anche Recensioni Google valide e critiche costruttive per capire in che direzione migliorare le app, piuttosto che aggiungere un sistema di Telemetry. Nello sviluppo dell'UI usiamo System View piuttosto che Jetpack, più leggero e adatto a dispositivi low-end (o di fascia bassa). System View è il sistema tradizionale per creare interfacce in Android, e sfrutta l'impiego di file XML craftati ad-hoc per definire l'interfaccia utente, ed evitare di appesantire il MainActivity.
Detto questo, ora chiuderò il thread comunicando a questa community la mia idea di vendere. Perché il sistema "open source" offerto da molti prodotti scaricabili dallo Store non è davvero open source, altrimenti non sarebbe neanche uno Store. Perché l'obiettivo di uno Store (cioè un negozio) è chiaramente quello di vendere, non di regalare. Non puoi chiamare "open source" un'app che una volta aperta ti invasa l'UI di annunci, spesso craftati in modo da cliccarci sopra inavvertitamente. Non puoi chiamare open-source un app che si fa scaricare gratis, ma poi ti richiede un abbonamento premium per accedere alle funzioni essenziali, lasciando i poveri con le briciole. Il mio concetto di vendita è semplice, scomodo ma dannatamente coerente: one life-time purchase (aquisto singolo per tutta la vita). No abbonamenti, no ADS. TotalCleaner sarà in vendita sullo Store ad un prezzo compreso fra i 3 ed i 4€. Di seguito riporto l'UI dell'app, volutamente "scarna" per privilegiare prestazioni e sicurezza piuttosto che estetica.

Sarei curioso di provarla ma non ho letto la data di rilascio sullo store
 
Se volete aiutarmi a superare la prova dei 12 tester potete iscrivervi comunque comunicandomi le vostre e-mail (anche in privato) e cliccando su questo link: https://play.google.com/store/apps/details?id=com.nc.totalcleaner

Si tratta di una prova difficile da superare ma ne varrebbe la pena, dato che si ha accesso ad un'ampia user-base in caso di successo. Tenete conto che su Google Play Store ci sono molti utenti, come dicevo sopra.