Perché è necessario un telefono rooted per acquisire schermate su versioni precedenti di Android?


21

Mi rendo conto che per catturare schermate del mio telefono, tutte le applicazioni di schermate richiedono che io abbia un telefono rootato. Perché è così? Perché non possiamo avere una semplice applicazione di screenshot per Android, proprio come abbiamo fatto per Windows?


2
Ho sempre trovato interessante che l'iPhone implementasse questa funzionalità immediatamente, mentre è un grosso problema abilitare su Android.
shambleh,

1
Si noti che da circa Android 4.0, è possibile fare uno screenshot tenendo premuti i pulsanti Volume giù + Accensione; questa è una funzionalità
pronta all'uso

Risposte:


17

La risposta è piuttosto semplice, è un problema di autorizzazioni.

Android utilizza quello che viene chiamato framebuffer per la visualizzazione video. Il framebuffer si trova in / dev / graphics / fb0. questo "file", che è fondamentalmente uno stream in cui il dispositivo scrive quando si verificano cambiamenti nell'interfaccia utente, contiene ~ 2 frame del display dello schermo.

Le autorizzazioni per il file framebuffer sono rw- rw- ---. Nota che l'ultimo "gruppo" ha 3 "-". Ciò significa sostanzialmente che se non sei il owner(che è root) non hai il permesso di leggere nemmeno da quel file.

Se fosse installata un'applicazione di sistema, che potrebbe richiedere schermate, avrebbe il permesso di leggere dal framebuffer. Il che, credo, è il modo in cui il Motorola Xoom è in grado di catturare schermate. Ha un'applicazione installata sul dispositivo, come app di sistema.

Leggere il framebuffer, per uno sviluppatore, è in realtà semplice, se hanno accesso a leggerlo.


1
Sembra che Google dovrebbe aggiornare le autorizzazioni in r--. Questo può creare un rischio per la sicurezza se un'app può spiare il tuo schermo, ma non sarebbe solo una delle autorizzazioni ( questa app può monitorare il tuo schermo ) che devi accettare prima dell'installazione? O quello o Google dovrebbe aggiungere una schermata integrata nel menu a comparsa, quindi nessun altro può accedervi. Quest'ultimo è il mio caso, voglio dire che proprio ora stanno aggiungendo l'anteprima di stampa a Chrome.
JD Isaacks,

3
Penso che mod di o + r sarebbe un problema di sicurezza se solo qualsiasi app di mercato potesse leggere lo schermo.
kzh

Penso che dipenda. Il sistema operativo Windows non impedisce alle applicazioni di acquisire le schermate. Finora abbiamo sentito problemi di sicurezza causati dalle riprese dello schermo?
Cheok Yan Cheng,

Non è necessario acquisire schermate in Windows, ci sono modi molto più semplici per ottenere dati da un computer Windows. Il mobile, penso, è una preoccupazione maggiore. Basti pensare ad app come Square, che elabora le carte di credito. Se avessi scritto un servizio in ascolto per quando la carta veniva trascinata, avrei potuto prendere una schermata e estrarre informazioni come il numero della carta di credito, il nome, ecc.
Ryan Conrad,

7

A causa del focus sulla sicurezza di Android nel separare tutte le app dai dati degli altri, per impedire alle app dannose di rubare o alterare i dati nelle app di cui ti fidi, non possono consentire a un'app di acquisire screenshot di altre app.

Pensa a quante delle tue app sono in grado di fare cose come l'OCR per tradurre le immagini in testo, posso pensare ad almeno quattro app sul mio telefono che possono fare questo, primo esempio sono i titoli dei libri OCRing di Google Goggles, e anche l'OCR e quindi traduzione di blocchi di testo in lingue straniere. Ora pensa a quante delle tue app mettono il testo sullo schermo che non vorresti vedere un'app inaffidabile, ho un'app di database di password sul mio telefono con un database crittografato delle mie password per vari sistemi, un'app di screensaver dannosa potrebbe aspettare fino a quando l'app password non sarà in esecuzione, scatta una foto dello schermo con i dettagli di accesso su di essa, quindi esegui l'OCR e inviali. Potrebbe anche fare lo stesso per tutto nell'elenco dei contatti, anche se non autorizzi l'app al database dei contatti o alla cronologia del browser, o registri chat e così via. Questo è solo un modo per abusare dell'accesso allo schermo.

Questo è il motivo per cui lo screenshot per essere universale deve essere nel sistema operativo (di cui ti fidi già con tutti i tuoi dati). Questo è il motivo per cui sui telefoni che hanno la funzione di schermata integrata è stata aggiunta come parte del sistema, non come app separata.

Se esegui il root del telefono e consenti a un'app di acquisire schermate, stai effettivamente dicendo che ti fidi implicitamente dell'app per poter fare tutto ciò che il sistema può fare, incluso l'accesso e l'interferenza con altre app e i loro dati, e che tu totalmente fiducioso di non abusare di tale accesso. Questo non è qualcosa che Android consentirà mai di fare qualsiasi cosa tranne il Sistema / OS.


6

Risposta breve: poiché 1) i computer sono complicati e 2) la funzionalità dello screenshot non è in realtà molto semplice (per il programmatore, non per l'utente).

In altre parole, fare uno screenshot richiede che il processo di cattura dello schermo si agganci abbastanza profondamente agli interni del sistema operativo, si guasta un po 'con loro e si sganci di nuovo. Dal momento che Android tenta di avere un modello di sicurezza integrato (al contrario del "ripensamento imbullonato" visto in Windows), facendo uno screenshot scatta su diverse barriere di sicurezza. Questi possono essere aggirati, ma l'unico modo attualmente pratico (a parte creare buche - e potenziali vulnerabilità - nel kernel) è usare l'onnipotente account root, che non è soggetto alle limitazioni.


1
Non so molto su come funziona l'hardware del computer, ma suppongo che la GPU invii "un'immagine" allo schermo. Quell'immagine non potrebbe essere intercettata e salvata?
JD Isaacks,

2
@ John Isaacks, questo è fondamentalmente ciò che accade con il framebuffer. vedi la mia risposta sul perché richiede ancora root.
Ryan Conrad,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.